DataMapper adapter for FluidDB
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.document
.gitignore
LICENSE
README.rdoc
Rakefile
VERSION
dm-fluiddb-adapter.gemspec

README.rdoc

dm-fluiddb-adapter

This is a DataMapper adapter for FluidDB (www.fluidinfo.com)

It makes heavy use of memcache and uses Typhoeus to parallelize fetching tag values. TyphoeusClient can also be used independently to make low-level requests.

The connect url for the adapter is:

fluiddb://test:test@sandbox.fluidinfo.com/test

That will connect to the sandbox instance of fluiddb as the test user with test password and use the subnamespace “test”.

Quickstart

# gem install dm-fluiddb-adapter
require 'dm-core'
require 'memcached'

CACHE = Memcached.new 'localhost:11211', :prefix_key => 'fluiddb-test:'
DataMapper.setup(:default, "fluiddb://test:test@sandbox.fluidinfo.com/test")

class MyModel
  include DataMapper::Resource

  property :id, String, :key => true
  property :name, String
end
# Ignore the 404 errors logged during the migration, it's just the adapter
# testing to see if the fluiddb tags/namespaces exist.
MyModel.auto_migrate!

MyModel.create(:name => 'Hello World')
puts MyModel.first.inspect

Details

It creates a namespace for each datamapper resource and a tag in that namespace for each property. It creates a tag with the same name as the namespace which it refers to as the 'identity tag' and tags all the objects for that resoruce with it.

When you delete an object it removes the identity tag and adds a 'deleted' tag from the resource's namespace to the object. The 'deleted' tag is to help with garbage collection although garbage collection is not implemented by the adapter. The reasoning is that you may want to use custom tags for properties and use objects/tags between multiple tables/views.

The about tag is not currently supported, but is on the short list for features as is being able to customize or make optional the identity tag and the corresponding 'identity query' which is the fluidb query used to find the entire set of objects belonging to the datamapper resource. 'Serial' properties are not supported and resources require a column named 'id', type String, and marked with ':key => true'.

You can get access to the underlying http client for making direct requests by calling:

DataMapper.repository(:default).adapter.http

The advantage to using the adapter's http instance is that Typhoeus has to create a pool of handles to libCURL and it creates them on demand. They are a little slow to start up, so it's better to use a warmed up instance of the http client.

TODO

  • Add support for the 'about' fluiddb tag at creation.

  • Enable setting and/or removing the identity tag and query.

  • Add Set property type

  • Add Tag property type

  • Add range support for querying date attributes

Copyright

Copyright © 2009 Jordan Curzon. See LICENSE for details.