2009-05-14 18 views
0

私はNHibernateの新人です誰も私を説明できますどのように対処するデータの大きなセット?NHibernateの情報

データが100GBあれば、Nhibernateから取得したい、私はそれが可能であると思う。 私がISessionを使用すると、メモリに格納されますか?メモリに格納されている場合、データベースに変更が行われた場合はどうなりますか?

これらの疑問は私に少し混乱を招く可能性があります。事前

+0

私はあなたの状況を理解していません。 「大量のデータ」とはどういう意味ですか?どのように構造化されていますか?これらは非常に多くの行ですか、それとも単一のBLOBですか?データベースモデルはすでに定義されていますか?オブジェクトモデルはすでに定義されていますか?あなたが解決しなければならない実際の問題は何ですか? –

答えて

0

おかげでNHibernateのセッションのは、パターンのみ「作業単位」を実装していないが、それはまた、「アイデンティティ・マップ」パターンを実装します。

つまり、セッションで初めてデータストアからエンティティを取得すると、NHibernateはそのエンティティをDBから取得します。

同じセッションをで再度取得する場合、NHibernateはDBからフェッチしませんが、すでにフェッチした参照を返します。 Offcourse、これは、同じエンティティを2回目にフェッチするときに同じSessionインスタンスを使用する場合にのみ当てはまります。

エンティティに変更を加えている間に、他の誰かが同じエンティティを変更してDBに変更を残した場合、NHIbernateがそのトラックを保持することは期待できないため、変更は表示されませんデータベース全体をチェックし、他の誰かがあなたが記憶しているエンティティを変更した(そして永続化した)かどうかをチェックします。

したがって、あなたのセッションは短命であるべきです。誰かの変更を上書きしないために、NHibernateで楽観的なロックを簡単に実装することができます。

しかし、私は不思議です...あなたはNHibernateがあなたの問題の良い解決策であると確信していますか?どのようなアプリケーションをビルドするつもりですか?

+0

あなたのお返事ありがとうございます。私のアプリケーションは大量のデータを処理することです。大量のデータを一度に取得し、それらのデータをウィンドウやWebフォームにプレゼンテーションします。この目的でNHibernateを使用することをお勧めしますか? – user98454

+0

あなたのデータはどうしていますか?主にビジネスロジックがほとんどないCRUD操作ですか? このデータはどのようにモデル化されていますか?あなたはNHibernateでそれを行うことができますが、場合によってはNHibernateを使わない方が良いかもしれません。 –

+0

私はこれらのデータを主にCRUD操作のみに使用します.nhibernateを使用しないいくつかのケースについて教えてください。 ありがとう – user98454

0

あなたはデータで何をしたいのか分かりません。私はあなたに良い答えを与えることはできません。あなたが100GBについて話しているとき、私はあなたがデータを別のデータベースまたは記憶媒体に転送したいと思います。なぜETLツールを見ないのですか?