> email to mechanical-sympathy+unsub...@googlegroups.com.
>> > email to mechanical-sympathy+unsub...@googlegroups.com.
>> > For more options, visit https://groups.google.com/groups/opt_out.
>
> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to mechanical-sympathy+unsub...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-symp...@googlegroups.com.
>> > email to mechanical-sympathy+unsubscribe...@googlegroups.com.
>> > For more options, visit https://groups.google.com/groups/opt_out.
>
> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-sympathy+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
On Tuesday, August 13, 2013 4:13:07 AM UTC-7, Martin Scholl wrote:The benchmark results are impressive, but I have my doubts after reading about the design of MDB.
The real impact of a main-memory mapped database is (obviously) when data doesn't fit into memory anymore. Now according to the design document[1], MDB employs a block-re-using strategy. This is more than fine if you are building an in-memory data store but it's a real trade-off. You really don't want to use such a library for longer-lasting transactions or analytical workloads involving listings because data will most likely be physically spread all over your disk; in that case, relying on the OS (read read-ahead) won't help MDB much here (so far about the mechanical sympathy of MDB for bigger data) ...
LMDB turns off readahead. Since the I/O *is* random when the DB is larger than RAM, readahead is actually a liability. With readahead the OS will bring in 100 pages for a single page request, and in so doing it will evict 99 other pages from cache that you probably cared about. (Already discovered this in earlier testing.)
It's as always. You really have to read the fine-print, and benchmark numbers seldomly help you find the right conclusion about a data store.
I'd go further - you have to read the source code. And you have to benchmark your own actual workloads.
>> > email to mechanical-sympathy+unsubscribe...@googlegroups.com.
>> > For more options, visit https://groups.google.com/groups/opt_out.
>
> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-sympathy+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-sympathy+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
The compaction point Martin raised is interesting, however I don't think it will affect my use case. I and building an index that is a rolling time window over a stream of events, therefore all values written to the DB will be deleted at some point in the future and their pages released and reused.
Thanks for the update Mike. Any chance you'll release the JNI bindings?
>> > email to mechanical-sympathy+unsubscribe...@googlegroups.com.
>> > For more options, visit https://groups.google.com/groups/opt_out.
>
> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-sympathy+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
(repost) LMDB turns off readahead. When the DB is larger than RAM it proves to be detrimental. You may request a single page but the OS will try to readahead 100 pages. If your RAM/cache is already full, 99 pages will be evicted that you probably wanted to keep around.
I'm sure I'm not the only person who likes to get a feel for a products capabilities before committing the time reading and learning to navigate unknown source code.
Hi,
While doing a bit of work with embedded key/value databases I came
across LMDB (http://symas.com/mdb/) which is the new data store for
OpenLDAP. Howard Chu gave an interesting talk about it at Devoxx
France earlier this year
(http://www.parleys.com/play/517f58f9e4b0c6dcd95464ae/chapter0/about).
It displays some interesting mechanical sympathy, e.g. doesn't
maintain it's own data cache, it uses the OS page cache. Similar to
the approach used by the Varnish HTTP proxy.
Mike.
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-symp...@googlegroups.com.
Hello Howard.
I wanted to ask you further more on fragmentation. What if I had an object larger than one page. Does LMDB try to store it into adjactent pages in order to prevent fragmentation?
Is there a way to find out how much is DB fragmented?
And what is the best way to defragment it?
On Wednesday, September 18, 2013 11:45:42 PM UTC-7, Jan wrote:Hello Howard.
I wanted to ask you further more on fragmentation. What if I had an object larger than one page. Does LMDB try to store it into adjactent pages in order to prevent fragmentation?
That is already answered in the documentation. I don't answer questions whose answers are already documented.
It is great that you are getting impressive benchmarks while doing synchronous transactions to disk. This will mean multiple page writes per transaction while doing the path copy. People should be aware that on an SSD this will cause significant wear with high transaction rates compared to a standard journal based transaction system where multiple transactions get batched into single journal pages. All part of the mechanical sympathy :-)
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-symp...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
On Wednesday, August 14, 2013 3:53:50 PM UTC+2, Martin Thompson wrote:It is great that you are getting impressive benchmarks while doing synchronous transactions to disk. This will mean multiple page writes per transaction while doing the path copy. People should be aware that on an SSD this will cause significant wear with high transaction rates compared to a standard journal based transaction system where multiple transactions get batched into single journal pages. All part of the mechanical sympathy :-)You write that a "standard journal based transaction system " batches "multiple transactions" into "single journal pages". Are you sure about this?
The database engine is expected to fsync after each transaction. There we have two possibilities: 1) write a full page (usually 4 kb) for each transaction even if only a part of the page is used, or 2) only write the necessary bytes to the log which implies that the next transaction will start on the same page if there is still available space.
In the context of an SSD, the second approach may be inefficient because the page cannot be modified. Thus the page has to be written elsewhere or the full block has to be erased and rewritten. With this approach, I would not say that journaling is obviously more efficient than LMDB approach.This leaves us with the first approach which is similar to what LMDB does.We should be very cautious in trying to evaluate the properties of engines like LevelDB and LMDB on SSD, because the Flash Translation Layer used by SSD is proprietary most of the time and it's difficult to known what they really do.
Any status update on your minimal-garbage binding to LMDB?
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-symp...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I'm coming back round to working on a system that uses LevelDB over the next month or 2. Migrating to LMDB is one of the potential tasks that we may pick up. I'll will post here if there is any progress.Mike.
On 25 May 2014 08:56, Thomas Harning <harn...@gmail.com> wrote:
Any status update on your minimal-garbage binding to LMDB?
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-sympathy+unsub...@googlegroups.com.
If durability is very important you need to have a conversation with your storage vendor and only pick vendors willing to have that conversation :-)So often it is easier to be resilient by acknowledged replication rather than syncing to disk. synch'ing to disk can be considering as replicating to yourself in the future with a partial ACK.I'm not knocking LMDB. I think the design really cool and very interesting. For many usecases it can be an excellent and even the best choice.Martin...
Hi,
Perhaps have a look at MapDB as well. It is pure java, optimized to have almost zero copy and no GC trash. And it uses mmap files as well.
In-memory off heap mode is only 3x slower compared to Java Collections :-)
(I am author).
Jan
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-symp...@googlegroups.com.
I'm coming back round to working on a system that uses LevelDB over the next month or 2. Migrating to LMDB is one of the potential tasks that we may pick up. I'll will post here if there is any progress.Mike.
On 25 May 2014 08:56, Thomas Harning <harn...@gmail.com> wrote:
Any status update on your minimal-garbage binding to LMDB?
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-sympathy+unsub...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-symp...@googlegroups.com.
Sorry it is unfinished as we didn't end up using LMDB. I'll dig out what I have and post to github at some point.Mike.
On 13 December 2014 at 09:41, Viktor Szathmáry <phra...@gmail.com> wrote:
Hi Mike,Any chance of sharing your LMDB JNI wrapper?Thanks,
Viktor
On Wednesday, May 28, 2014 5:16:05 AM UTC+2, mikeb01 wrote:
I'm coming back round to working on a system that uses LevelDB over the next month or 2. Migrating to LMDB is one of the potential tasks that we may pick up. I'll will post here if there is any progress.Mike.
On 25 May 2014 08:56, Thomas Harning <harn...@gmail.com> wrote:
Any status update on your minimal-garbage binding to LMDB?
--
You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mechanical-sympathy+unsubscribe...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.