(Fluent) 오랜 트랜잭션에 대한 NHibernate 진행 이벤트?

event-listener fluent-nhibernate progress-indicator sqlbulkcopy

문제

우리는 ISaveOrUpdateEventListener 이벤트를 연결했고 꽤 큰 모델의 저장 통과 중에 방문한 각 노드에 대한 진행률 표시 줄에 노드를 연결할 수 있기를 기대했지만 저장 작업이 시작될 때 이벤트가 한 번만 발생합니다 (노드에서만 Save ()가 시작되었고 어떤 하위 노드에도없는).

이것을 듣기에 더 적절한 다른 사건이 있습니까?

우리는 또한 순회를 수행하여 (계층 적 모델의) 저장 작업을 분해하려고 시도했지만 성능이 더욱 저하되는 것으로 보입니다.

아마도 우리는 FNH를 사용하지 않기로 한 문제를 해결하려고 노력 중입니다. 우리는 처음이에요.

우리는 SqlBulkCopy를 사용하는 대체 솔루션을 다른 곳에서 권장 된대로 설정했습니다.

우리는 FNH가 주로 OLTP (Small Transactions)에 대한 것이고 우리의 문제 (거대한 데이터 볼륨의 신호 처리)에 의해 구속되는 철저한 모델의 유형이 아니라는 의견을 보았습니다.

배경:

우리는 상당히 복잡한 실시간 분석 (고주파, 다중 입력 신호, 긴 실험 시간 등)에서 수집 된 데이터로 더 큰 데이터베이스 프로젝트에서 Fluent NHibernate를 사용하려고합니다. 우리가 만든 프로토 타입에서 우리는 그 순간 꽤 무서운 대기 시간을 보았고 신뢰할 수있는 진행률 표시기에 연결해야합니다.

수락 된 답변

예, 지금 확인되었습니다. 위의 내 의견에 언급 된 바와 같습니다. 이것에 대한 하나의 (가능한) 솔루션은 단순히 캐스 캐 이드를 돌리고 모델을 수동으로 탐색하고 명시적인 Save () 호출을 수행하는 것입니다.

이는 단지 이벤트를 처리하는 것만 큼 깔끔하지는 않지만 작동합니다. 아직도, NHibernate의 genuin 디자인을 감안할 때, 나는 어딘가에 도청 될 수있는 이벤트가있을 것이라고 확신한다. 그 질문은 어떤 이름 아래에있다. ... 여기에있는 사람이 더 많이 알고 있다고 생각합니다.

또한 퍼포먼스를 향상시키기 위해 우리는 differnet 배치 크기를 사용하여 정기적으로 / 명시 적으로 Flush () 및 Clear ()를 호출하는 Stateless Session을 사용했습니다. 자세한 내용은 아래 도움말을 참조하십시오.

http://davybrion.com/blog/2008/10/bulk-data-operations-with-nhibernates-stateless-sessions/

http://ideas-net.blogspot.com/2009/03/nhibernate-update-performance-issue.html

희망이 도움이됩니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.