gokv icon indicating copy to clipboard operation
gokv copied to clipboard

Add more gokv.Store implementations

Open philippgille opened this issue 5 years ago • 5 comments

Instead of creating a new issue as soon as someone thinks a new implementation makes sense, let's use this ticket for collecting ideas which implementations could make sense in the future.

Only when getting more serious about a specific implementation and starting to more thoroughly evaluate the key-value store / DB, a new issue specifically for that store should be created.


  • Cloudflare Workers KV
    • https://workers.cloudflare.com/docs/reference/storage/overview/
    • Limitations (important to mention in the gokv docs): https://workers.cloudflare.com/docs/reference/storage/limitations/
    • API reference: https://api.cloudflare.com/#workers-kv-namespace-properties
    • There doesn't seem to be any Go library for it yet, so when gokv is the first one, maybe mention it somewhere like https://github.com/tomByrer/awesome-cloudflare-workers
  • bitcask
    • Embedded key-value store
    • https://github.com/prologic/bitcask
    • https://prologic.github.io/bitcask/
  • bitraft
    • Distributed key-value store, based on bitcask
    • https://github.com/prologic/bitraft
    • https://prologic.github.io/bitraft/
  • NutsDB
    • Embedded key-value store
    • https://github.com/xujiajun/nutsdb
    • https://xujiajun.cn/nutsdb/
  • Pebble
    • Embedded key-value store
    • By the CockroachDB guys
    • https://github.com/cockroachdb/pebble
  • ScyllaDB
    • Compatible to Apache Cassandra, but meant to be faster
    • https://github.com/scylladb/scylla
    • https://www.scylladb.com/
  • FoundationDB
    • By Apple
    • Multi-model datastore
    • https://github.com/apple/foundationdb
    • https://www.foundationdb.org/
  • Yugabyte
    • NewSQL
    • https://github.com/yugabyte/yugabyte-db
    • https://www.yugabyte.com/
  • FaunaDB
    • Not self-hostable? Usable as key-value store at all?
    • https://fauna.com/faunadb
    • Go driver: https://github.com/fauna/faunadb-go
  • minikeyvalue
    • Distributed key-value store
    • By George Hotz a.k.a. geohot
    • https://github.com/geohot/minikeyvalue
  • Ristretto
    • Embedded cache
    • By the creators of BadgerDB
    • https://github.com/dgraph-io/ristretto
    • Blog article: https://blog.dgraph.io/post/introducing-ristretto-high-perf-go-cache/
  • Lungo
    • Embedded MongoDB compatible DB
    • https://github.com/256dpi/lungo
  • Redix
    • Distributed Redis compatible DB
    • https://github.com/alash3al/redix
  • Olric
    • Usable as embedded cache or as service
    • https://github.com/buraksezer/olric

philippgille avatar Aug 25 '19 21:08 philippgille

Would you consider https://github.com/prologic/bitcask ? 😁

James Mills / prologic

E: [email protected] W: prologic.shortcircuit.net.au

prologic avatar Aug 25 '19 21:08 prologic

Sorry for the late reply @prologic! When you commented I actually already had bitcask (and bitraft) on a TODO list elsewhere.

I extended the list in the top comment by:

  • Bitcask
  • Bitraft
  • NutsDB
  • Pebble
  • ScyllaDB
  • FoundationDB
  • Yugabyte
  • FaunaDB
  • Minikeyvalue
  • Ristretto

philippgille avatar Oct 27 '19 12:10 philippgille

No worries :)

prologic avatar Oct 27 '19 20:10 prologic

Added Lungo and Redix

philippgille avatar Nov 11 '19 20:11 philippgille

Added Olric

philippgille avatar Nov 22 '19 22:11 philippgille