-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Group By query Nhibernate
PostPosted: Tue Jan 29, 2013 11:02 am 
Newbie

Joined: Tue Jan 29, 2013 10:48 am
Posts: 2
Hallo,

Ich versuche mit NHibernate.Query große Datenmengen zu laden und zu gruppieren (~ 5 Mio Einträge). Normalerweise würde ich erwarten, dass die Gruppierung mit einem GROUP BY statement in der Datenbank abgehandelt würde. Jedoch scheint es, dass NHibernate sich zuerst alle Daten holt und dann die Gruppierung auf den geladenen Daten durchführt (Der Speicher läuft voll).

Wie ist es möglich mit NHibernate die Gruppierung in der Datenbank machen zu lassen? Muss ich etwas an meinem Query ändern oder ein ganz anderes Konzept verwenden?

Im Moment sieht der Code etwa so aus:
Code:
using (var session = NHibernateHelper.OpenSession(typeof(ServiceClass).Assembly))
            {
                var groups = session.Query<Entry>().Where(entry=> entry.Type == "tag")
                       .GroupBy(entry => new
                                 {
                                        entry.Data1,
                                        DateTime.Parse(entry.Data2, CultureInfo.InvariantCulture).Date,
                                        entry.Data3
                                 });

                foreach (var group in groups)
                {
                    var element = group.First();
                    entries.Add(CreateEntry(element, group.Count()));
                }
            }


Top
 Profile  
 
 Post subject: Re: Group By query Nhibernate
PostPosted: Thu Jan 31, 2013 3:17 am 
Senior
Senior

Joined: Tue Oct 28, 2008 10:39 am
Posts: 196
Wie sieht denn die abgesetzte Query aus? Ist da das GROUP BY mit drin? Sind deine Gruppierungen auch wirklich ok, so dass eine kleine Anzahl Datensätze kommen sollte? Problematisch stelle ich mir z.B. vor, wenn man in der Gruppierung einen Zeitstempel drin hat und die Gruppierung in bezug auf die Anzahl Datensätze kaum eine "Reduzierung" bringt.


Top
 Profile  
 
 Post subject: Re: Group By query Nhibernate
PostPosted: Thu Jan 31, 2013 3:52 am 
Newbie

Joined: Tue Jan 29, 2013 10:48 am
Posts: 2
Mittlerweile hat sich herausgestellt, dass mit dieser Query tatsächlich alle Daten zunächst in den Speicher geladen werden und dann erst gruppiert. Bei mehreren Millionen Einträgen führte das zu überfülltem Speicher. Dies lag wohl am Parsing des DateTime-Formats. Sobald ich der Spalte der DB-Tabelle den Typ DateTime zugewiesen habe, funktionierte das Gruppieren auch auf der Datenbank und nicht mehr im Speicher.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.