2009-05-14 6 views
0

Je suis nouveau à NHibernate. Quelqu'un peut-il m'expliquer comment il traite avec un grand ensemble de données?Informations sur NHibernate

Si j'ai 100gb de données, je veux récupérer via Nhibernate, je pense que c'est possible avec ISession. Si j'utilise ISession, va-t-il stocker en mémoire? S'il stocke en mémoire, s'il y a des changements dans la base de données, que se passera-t-il? Ces doutes peuvent me conduire dans un peu de confusion. Est-ce que quelqu'un peut me suggérer?

Merci à l'avance

+0

Je ne comprends pas votre situation. Que voulez-vous dire par "grand ensemble de données"? Comment est-il structuré? S'agit-il de tant de lignes ou s'agit-il d'une seule goutte? Le modèle de base de données est-il déjà défini? Le modèle d'objet est-il déjà défini? Quel est le problème réel que vous devez résoudre? –

Répondre

0

La session de NHibernate ne met pas seulement la « unité de travail » modèle, mais il met également en œuvre la structure « identité Carte ». Autrement dit, lorsque vous récupérez une entité du magasin de données pour la première fois dans une session, NHibernate récupère cette entité à partir du DB.

Lorsque vous souhaitez récupérer à nouveau la même entité en utilisant la même session, NHibernate ne la récupèrera pas de la base de données, mais elle renverra la référence qu'elle a déjà récupérée. Bien entendu, ceci n'est vrai que si vous utilisez la même instance de session lorsque vous récupérez la même entité pour la deuxième fois. Lorsque vous apportez des modifications à une entité et que, pendant ce temps, quelqu'un d'autre change la même entité et conserve ces modifications dans la base de données, vous ne verrez pas ces modifications, car vous ne pouvez pas vous attendre à ce que NHIbernate la base de données entière, et vérifie si quelqu'un d'autre a changé (et a persisté) une entité que vous avez en mémoire.

Par conséquent, il est conseillé que vos sessions soient de courte durée. Afin de ne pas écraser les modifications de quelqu'un d'autre, vous pouvez facilement implémenter le verrouillage optimiste dans NHibernate. Mais, je me demande ... Êtes-vous sûr que NHibernate est une bonne solution pour votre problème? Quel genre d'application allez-vous construire?

+0

Merci pour votre réponse.Maintenant, mon application est de traiter de gros morceaux de données.Pour récupérer les gros morceaux de données à la fois et faire des manipulations et la présentation de ces données dans Windows et webforms.Il est conseillé d'utiliser NHibernate à cet effet? – user98454

+0

Que faites-vous avec vos données? S'agit-il principalement d'opérations CRUD avec très peu de logique métier? Comment modélisez-vous ces données? Vous pourrez le faire dans NHibernate, mais dans certains cas, il pourrait être préférable de ne pas utiliser NHibernate. –

+0

Je vais utiliser ces données principalement pour les opérations CRUD seulement. Pouvez-vous m'expliquer quelques cas qui n'utilisent pas nhibernate? Merci – user98454

0

Je ne sais pas ce que vous voulez faire avec les données, donc je ne peux pas vous donner une bonne réponse. Quand vous parlez de 100 Go, je suppose que vous voulez transférer les données vers une autre base de données ou un support de stockage. Pourquoi ne regardez-vous pas un outil ETL?