4 ms·
Sophia – A modern embeddable key-value database
- rkwasny 12y agoHow it compares to LMDB?
- biomimic 12y agoWould love to see where it fits in terms of performance here: Symas Micro database benchmarks http://symas.com/mdb/microbench/ http://symas.com/mdb/microbench/ I'm an MDB fan.
- fasteo 12y agoSome standalone performance numbers [1] Note also that it is being integrated into tarantool [2], a really nice piece of software [1] http://sphia.org/pv12.html http://sphia.org/pv12.html [2] http://tarantool.org/ http://tarantool.org/
- hyc_symas 12y agoI've tried to test it, several times. You're welcome to try too. https://github.com/hyc/leveldb/tree/benches/doc/bench https://github.com/hyc/leveldb/tree/benches/doc/bench It crashed every time for me https://github.com/pmwkaa/sophia/issues/53 https://github.com/pmwkaa/sophia/issues/53 (single-threaded) It's also not thread-safe, and the docs never mentioned this limitation. https://github.com/pmwkaa/sophia/issues/54 https://github.com/pmwkaa/sophia/issues/54 I would call it a toy but isn't even that - toys are fun.
- oscargrouch 12y agoIm actually embedding this in place of leveldb, in a project im working, because i just want a compact db file, and not several like leveldb use to do, and giving the benchmarks are saying this is even faster, its a plus.. But i was just worried about the api using void pointers to represent heap state like db, cursor, etc.. im not a security expert but isnt that considered harmful? giving it could be used as a cursor to point to any arbitrary memory address by a black hat? (or that work just if the handle points to a invalid address? in a bug for instance?)
- codys 12y agoWhile it is unfortunate they don't use forward-declared structs instead of void pointers, that only means that potential type checking that could otherwise be done by the compiler does not happen, the use of void pointers in and of itself is not a bug, it just can make it more likely that code using the library won't know about bugs until too late.
- oscargrouch 12y agoThank you for clarifying. So its more about type safety than
- hyc_symas 12y agoGood luck with that. This is ridiculously poor code, poor design, and no progress on fixing obvious bugs.
- otterley 12y agoHow does it compare to sqlite? (Yes, sqlite can do K/V if you structure your table simply.)
- seanp2k2 12y agoThis, so much this, but also some of how proper DB modeling and not being afraid of denormalization can really let you solve lots of problems in efficient-enough ways with SQLite and/or MySQL / Postgres. I tried out a few different mongo db-like embedded DBs for Python for a project a few months back, and I came away largely unimpressed. I ended up using couchdb for the PoC, later moving to ElasticSearch and letting that handle the "hard" parts for me (aggregations, JS in queries, and rivers are awesome). Even though it's hugely overkill for my data needs (~100mb uncompressed JSON), ElasticSearch is stupid fast and now handles a big part of what my app actually did. Embedded DBs couldn't do the same.
- otterley 12y agoElasticSearch is a fantastic document database in its own right. It gives you everything CouchBase does, is obscenely scalable, AND it does search.