Cyryl Płotnicki
Cyryl Płotnicki

Reputation: 483

Is there any embedable key-value store for Ruby?

I need fast and reliable key-value store for Ruby. Is there anything like it already?

The requirement is for it to run wholly inside the Ruby process, not needing any outside processes.
It might be in-memory with explicit disk flushes.
It needs to have minimal value-for-key retrieval times, write times may be not so good.
The amount of data stored won't be terrible, about few hundred thousand keys, each with ~1kb text value.

Upvotes: 9

Views: 3604

Answers (7)

captainpete
captainpete

Reputation: 6222

There's LevelDB, here's the ruby bindings.

Upvotes: 0

gnrfan
gnrfan

Reputation: 19381

Daybreak is a nice new option. Data is stored in a table in memory so Ruby niceties are available (each, filter, map, reduce, etc) and appears to be faster than pstore or dbm.

See this blog post for more info.

Upvotes: 0

Miguel Ping
Miguel Ping

Reputation: 18347

Check out PStore. Not sure if it's fast enough though.

Upvotes: 0

Daniel
Daniel

Reputation: 61

You could also try Moneta which allows you to build your own key/value store embedded in a ruby process.

Upvotes: 6

brentmc79
brentmc79

Reputation: 2541

You could try Oria: https://github.com/intridea/oria

Oria (oh-rye-uh) is an in-memory, Ruby-based, zero-configuration Key-Value Store. It's designed to handle moderate amounts of data quickly and easily without causing deployment issues or server headaches. It uses EventMachine to provide a networked interface to a semi-persistent store and asynchronously writes the in-memory data to YAML files.

Upvotes: 1

Cyryl Płotnicki
Cyryl Płotnicki

Reputation: 483

It turns out that the best option for me was to use plain Hash along with Marshal to serialize it to disk.
YAML is definitely too slow for that number of objects.
Thanks to @ian-armit for reinforcing my trust in the core Ruby libraries.

Upvotes: 5

Philip Hallstrom
Philip Hallstrom

Reputation: 19879

Like DBM? http://www.ruby-doc.org/stdlib-1.9.3/libdoc/dbm/rdoc/DBM.html

(filler for spambot)

The DBM class provides a wrapper to a Unix-style dbm or Database Manager library.

Dbm databases do not have tables or columns; they are simple key-value data stores, like a Ruby Hash except not resident in RAM. Keys and values must be strings.

Upvotes: 2

Related Questions