DataMapper Tokyo Cabinet/Tyrant Table Store Adapter
Description
A DataMapper Tokyo Cabinet/Tyrant table store adapter.
Table Store
tokyocabinet.sourceforge.net/spex-en.html#features_tctdb
The Tokyo Cabinet table storage engine doesn’t require a predefined schema and as such properties in your resource are only used for by the adapter for typecasting. There is no need to migrate your resource when you create, update or delete properties.
Dependencies
- Ruby
-
dm-core ~> 0.10.0
-
rufus-tokyo ~> 0.1.12
Install
-
Via gem:
gem install shanna-dm-tokyo-adapter -s http://gems.github.com
-
Via git:
git clone git://github.com/shanna/dm-tokyo-adapter.git rake install
Synopsis
# Tokyo Cabinet DB files will be located in #{path}/#{database}/#{resource}.tdb
DataMapper.setup(:default,
:adapter => 'tokyo_cabinet',
:database => 'tc',
:path => File.dirname(__FILE__)
)
# Tokyo Tyrant connection.
DataMapper.setup(:default,
:adapter => 'tokyo_tyrant',
:host => 'localhost',
:port => '1978'
)
# Define your DataMapper resource and start saving:
class User
include DataMapper::Resource
property :id, Serial
property :name, String
property :age, Integer
end
# No need to (auto_)migrate!
User.create(:name => 'Fred', :age => '25')
# Conditions:
users = User.all(:age.gte => 10, :limit => 20, :order => [:age.asc])
TODO
-
Documentation. It’s undocumented at the moment.
-
Give access to the
Rufus::Tokyo::Table
object through the adapter. Handy if you want to add indexes and other things that can’t be done through the DataMapper API. -
Better tests. I haven’t really tested all the DM primitives and query operators yet.
-
Better typecasting. DataTime and Time should typecast to Integer so that they can be searched using the numeric operators.
Ideally in the future I’d like to contribute to these broader goals:
-
All the TokyoCabinet stores equally supported in DM.
-
DataMapper define a public/semipublic API for key => value and search stores through Moneta (memcachedb, memcacheq, couchdb, mtokyo cabinet bdb, etc.)
-
DataMapper per adapter query operators. You can’t always shoehorn everything into an SQL mindset.
Contributing
Go nuts. Just send me a pull request (github or otherwise) when you are happy with your code.
Copyright
Copyright © 2009 “Shane Hanna”. See LICENSE for details.