Welcome to the Ruby Keymap Project
The purpose of the project is to provide seamless Ruby support for list-based and hash-based collections stored in various backing stores, such as Riak, Redis, etc. Acknowledging that SQL is only one possible backing store for enterprise information, users should take note of the similarity in look and feel to ActiveRecord in some regards, but in other regards the API pays particular emphasis on map-reduce like behaviors intrinsic to Ruby, over any emphasis on SQL per se. As such, the solution is not bound to SQL semantics, whereas ActiveRecord targets SQL.
News!
Keymap turned 500 today, with over 61 downloads from rubygems.org within the first few hours of the new release!
Documentation
Documentation for keymap is provided here, and was generated from Ruby RDoc.
Contributors Wanted
I am looking for co-contributors to round out the API and tests. If you have interest in helping please let me know. Here are some things that I would contributions for and help with:
- Add connection adapter for Riak
- Add connection adapter for CouchDB
- Add connection adapter for MongoDB
- Add connection adapter for Cassandra
- Add connection adapter for Hadoop
- Add support for a persistence DSL for Ruby objects and classes
- Connection Adapters:
- Persistence:
I am looking for feedback as to what features folks would like to see first, noted examples above.
Recent Updates
We cleaned up the release process, support generating rDoc,
added documentation, and fixed a small defect or two.
We now have support for Ruby hashes! Like
the support for arrays (lists), the hash integration supports a vast
subset of the Hash API as well as Enumerable. Unlike lists, as described
below, performing an each operation will pull all the keys into memory.
That should be a design consideration for users dealing with massive
datasets.
This week enumerable-based list support is available and fully tested.
This allows Ruby developers to access and iterate over their key-value
store data the same way they perform map, collect, inject operations
over Ruby arrays. And what's more, data is read incrementally so that
you don't blow your address space when reducing or summarizing larger
dataset sizes.
Authors and Contributors
Robert Buck (@rbuck).
Continuous Integration and Code Health
We have added support for continuous integration and the build status is available from Travis-CI and available from Circle-CI.
CodeClimate provides our static analysis quality metrics.
Support or Contact
Having trouble with Keymap? Please file issues at https://github.com/rbuck/keymap/issues or contact me through email or by twitter (@ysoitenly) and I’ll help you sort it out. If you would like to talk with us or post questions, a web forum is also available.