ntoll.org

(Everything I say is false...)
home | about | articles | presentations | cv | contact

FluidDB 101

Wednesday 19 August 2009 (01:04PM)

On Monday Terry and Esteve "switched on" the alpha version of their FluidDB offering. Congratulations guys!

I've written about FluidDB before – I find the philosophy behind the project so interesting. Now that I (and you) can get to play with it I'm recording some quick take-aways for the sake of my memory and hopefully your education (I'm assuming you're au fait with FluidDB). ;-)

Currently, FluidDB is in read-only mode as none of the pillaging horde that are the alpha testers have been given access to their user's details so can't make any "writes". According to Terry, alpha testers will get their account details by the end of the week.

Nevertheless, we can still "read" what little is in there to get a feel of what interacting with FluidDB is like:

Example Interactions

FluidDB currently communicates with the outside world via an HTTP based API. You could use tools like wget or curl to interact with FluidDB but simple libraries are already being written (kudos to Sanghyeon Seo for the quick work – my fork includes fixes for Python < 2.6). I'll use my fork in the following Python doctest like example:

Return a list of objects that have the tag "username" from the "fluiddb/users" namespace




>>> import fluiddb

>>> fluiddb.call('GET', '/objects', query='has fluiddb/users/username')

(200, {'ids': ['8b57277a-09f6-485d-9108-761b7848c913', ...SNIP... '62fe2cca-7ad2-4dd8-9b0a-b3909c0709e8']})



Return an object where the tag "username" from the "fluiddb/users" namespace has the value "ntoll"




>>> fluiddb.call('GET', '/objects', query='fluiddb/users/username = "ntoll"')

(200, {'ids': ['5873e7cc-2a4a-44f7-a00e-7cebf92a7332']})



Find out about a specific object:




>>> fluiddb.call('GET', '/objects/5873e7cc-2a4a-44f7-a00e-7cebf92a7332', {"showAbout": True})

(200, {'about': 'Object for the user named ntoll', 'tagPaths': ['fluiddb/about', 'fluiddb/users/name', 'fluiddb/users/username']})



Get the value of the tag "fluiddb/users/username" from the object with the uuid "5873e7cc-2a4a-44f7-a00e-7cebf92a7332"




>>> fluiddb.call('GET', '/objects/5873e7cc-2a4a-44f7-a00e-7cebf92a7332/fluiddb/users/name')

(200, 'ntoll')



Get the result as json (GET and PUT responses default to raw HTML payload)




>>> fluiddb.call('GET', '/objects/5873e7cc-2a4a-44f7-a00e-7cebf92a7332/fluiddb/users/name', body=None, format='json')

(200, {'value': 'ntoll'})



So far so good…

Until we get our API keys that allow us to "write" stuff in our namespaces then this is all we've got to play with. I suspect that we might be able to create new objects (I've not tested this yet) as these don't "belong" to anyone – remember it's the namespaces/tags and the associated values that make FluidDB so interesting.

Finally, you might be asking where one might find out more… the most useful pages I've found are:

You might also want to join the #fluiddb channel on Freenode IRC or subscribe to the two Google groups.

I'll update with more as soon as I've worked it out / been given access… :-)