[hibernate-dev] [OGM] MongoDB time spikes

Sanne Grinovero sanne at hibernate.org
Wed Apr 25 04:59:25 EDT 2012


Isn't Hibernate ORM already providing such a service via the
Session/Persistence context/"L1" container ?

We might be able to take advantage of existing events to control the
batching on MongoDB.

On 25 April 2012 08:35, Emmanuel Bernard <emmanuel at hibernate.org> wrote:
> I don't think we need an actual multi threaded cache. the flush operation in Hibernate is not multi threaded, neither is the session.
> A simple Map (or a better append only structure) will suffice, I think.
>
> On 25 avr. 2012, at 09:32, Guillaume SCHEIBEL wrote:
>
>> Hi all,
>>
>> What do you think about using the Ehcache module to store the data between 2 flushes ?
>> I will open a JIRA about this point if it has not already been done.
>>
>> Guillaume
>>
>> 2012/4/25 Emmanuel Bernard <emmanuel at hibernate.org>
>> Hi Alan and all,
>>
>> I have been researching the spikes issue you encounter in the stress test from a theoretical point of view.
>> You were trying a different associations storage approach (splitting associations as one row per document rather than the whole association per document). Does that return better results?
>>
>> I am skeptical for a few reasons. MongoDB has a global write lock per mongod process (they are working on a more fine grained solution). So if the spikes are due to lock contention, shuffling data won't help much. Also make sure you use MongoDB 2.0 instead of 1.8 as they yield lock on page fault which should solve a lot of these spikes problems.
>>
>> I have found this blog entry to be quite insightful http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html
>>
>> Generally speaking, if all data can stay in memory, MongoDB should behave wonderfully.
>>
>> Which leads to my demo and the time difference between Infinispan 5s and Mongodb 20s. I can see several reasons:
>>
>> - we don't really batch operations in the mongodb dialect and we should.
>>  We should accumulate operations and apply them at the end of the flush operation in one batch. That will require some new infrastructure from OGM's engine though
>>  to tell the dialect when to "flush".
>> - my VM might swap memory on disk which would explain the difference
>> - or it could be that Infinispan is simply 4 times faster which would not be too surprising as Infinispan is in-process.
>>
>> Emmanuel
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev



More information about the hibernate-dev mailing list