from Hacker News

Sophia: A modern embeddable key-value database – v1.2.2 released

by pmwkaa on 4/12/15, 6:39 PM with 42 comments

  • by NhanH on 4/12/15, 9:01 PM

    There seems to be a lot of embedded KV store already, and SQLite is pretty much the defacto embedded relational DB. Is there a good embedded Graph DB around? Specifically, a embedded property graph DB. Hypergraphdb is embeddable, but it's not property graph, and while neo4j has an embedded version, I don't think it works for non-java use case.
  • by fasteo on 4/12/15, 8:15 PM

    Be sure to checkout Tarantool[1]; it uses Sophia for on-disk databases

    [1] http://www.tarantool.org

  • by MichaelGG on 4/12/15, 8:03 PM

    Does anyone have recommendations on a constant DB optimized for sequential integer keys? Running LZ4 over things is cool, but using delta encoding or more clever schemes, you can work right on the compressed key data. (And even more fun if the value is also just a restricted set of integers, like an inverted index.)
  • by gfodor on 4/12/15, 7:56 PM

    comparisons to kyoto cabinet, leveldb, and rocksdb (on features, maturity, and performance) would be great if anyone has any to share.
  • by diydsp on 4/13/15, 12:48 AM

    Just to be clear, does embeddable have a specific meaning here? I'm a firmware developer, often writing code for small CPUs and microcontrollers. Does this apply? It seems like here "embeddable" means it can be compiled into an app, as opposed to getting accessed through a server. Is that correct? Thank you.
  • by vezzy-fnord on 4/12/15, 10:42 PM

    Since we're throwing around names here, depending on your use case something as simple as cdb can be amazing: http://cr.yp.to/cdb.html
  • by eternalban on 4/12/15, 9:22 PM

    @pmwkee: http://sphia.org/pv12.html doesn't tell us the scaling characteristics. The cited performance page is DB at steady state of 6.0M keys. how does it behave under dynamic load? Various scenarios to help your potential users determine if the software is a good fit for their use-case, would be helpful.

    Glanced at the code and the arch doc. Looks promising and shows careful crafting. Well done!

  • by johncmouser on 4/12/15, 8:43 PM

    Cool! I was looking for a simple key-value alternative for SQLite3 and was going to use redislite[1]. But this is perfect, I think it has the potential to replace SQLite3.

    [1]https://github.com/seppo0010/redislite

  • by aswanson on 4/12/15, 11:21 PM

    BSD licensed and implemented as small C-written library with zero dependencies.

    What's not to like...

  • by virmundi on 4/12/15, 9:07 PM

    So why not BerkleyDB? I couldn't find a comparison to the old standard on the site (granted did just a cursory glance).
  • by halayli on 4/12/15, 9:15 PM

    This looks very promising. The code is very clean and optimization is taken into consideration.
  • by raghavsethi on 4/13/15, 3:43 AM

    Also, what exactly is a database traversal? Is it a random read benchmark? If so, what is the distribution - uniform, zipf, or something else?
  • by skeoh on 4/12/15, 11:39 PM

    What's going on with that logo? It is completely illegible.