What?
FluidDB is a database “in the cloud” built by Fluidinfo and currently in private-Alpha testing.
There is only one FluidDB. All users and applications share the same database.
Why..?
As Wikipedia is to traditional encyclopaedias so FluidDB is to traditional database solutions.
Make the world writeablehttp://www.flickr.com/photos/psd/1428129861/
No pre-defined schemahttp://www.flickr.com/photos/juhansonin/3227851094/
Create, share, organise and understand information
The Glass Wall http://www.liamdelahunty.com/tips/usability_bbc_redesign_the_glass_wall.php
Simplify and enhance the model of control
http://www.flickr.com/photos/chiaramarra/1048662923/
How?
Key Concepts
• Objects - represent things*
• Tags - define object’s attributes
• Namespaces - organise tags
• Permissions - control access
* NOT instantiations of classes as in OO, but simply “objects” in the common-sense use of the term.
Data structure
subject / predicate / value(similar to RDF)
Data structure
object / tag / value(in FluidDB parlance)
Objects are tagged with information
http://ntoll.org/images/93.jpg
Namespaces and tags are pre-defined by users
ntoll/ratingterrycojones/books/reviewamazon.com/book/titleamazon.com/book/authoramazon.com/book/isbnesteve/books/covertimoreilly/has_read
(Every namespace and tag has a description and is itself represented by an object so meta-tagging is allowed)
An object
about = “book:Dune”
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
(The about tag is a convention to help indicate what the object represents. It is optional but must be unique)
A basic object:
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read
estev
e/boo
ks/co
ver =
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read
estev
e/boo
ks/co
ver =
booleanstring (& set)numericopaquenull
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
Value Types:
Opaque tag values each have a MIME type
type = image/png
Other “primitive” types are returned as json
A simple and elegant RESTful API
https://fluiddb.fluidinfo.com/objects/e127475b-eb93-48e1-a24f-dde6825b9ed8/ntoll/rating
HTTP ‘GET’ returns the value, HTTP ‘PUT’ adds/updates it etc...
Full API: http://api.fluidinfo.com/fluidDB/api/*/*/*
https://fluiddb.fluidinfo.com/objects/OBJECT_ID/NAMESPACE(S)/TAG
e.g.
snoissimreP(seem to be back-to-front)
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read
estev
e/boo
ks/co
ver =
Traditional:
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read
estev
e/boo
ks/co
ver =
FluidDB:
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
Permissions
• Apply to namespaces, tags and tag-values not objects
• Scoped by actions (e.g. “see”, “create”, “read”)
• Either “open” or “closed” with a list of exceptions
Search(is simple)
FluidDB’s Query Language• Equality & Inequality: To find objects based on the numeric values or
exact textual values, e.g., tim/rating > 5, or geo/name = "Llandefalle".
• Textual: To find objects based on text matching their tag values, for example, sally/opinion matches “fantastic”.
• Presence: Use has to request objects that have a given tag. For example, has sally/opinion.
• Set contents: The contains operator can be used to select objects with a matching value in a set of strings. The query mary/product-reviews/keywords contains "kids" would match the object with a tag called /mary/product-reviews/keywords and value ["cool", "kids", "adventure" ].
• Exclusion: Exclude objects with the except keyword. For example has nytimes.com/appeared except has james/seen. The except operator performs a set difference.
• Logic: Query components can be combined with and and or. For example, has sara/rating and tim/rating > 5.
• Grouping: Parentheses can be used to group query components. For example, has sara/rating and (tim/rating > 5 or mike/rating > 7).
er... that’s it(QL fits on one slide and enhancements are coming soon)
LIVE DEMO!http://www.flickr.com/photos/8001265@N08/2259250324/
Where?
• http://fluidinfo.com - First stop for more
• http://fluidinfo.com/accounts/new - Sign up!
• http://tickery.net - Twitter on steroids
• http://bit.ly/dicP8O - FluidRefreshmentDB
• http://fluiddbexplorer.appspot.com - Browser
• @fluidDB @terrycojones @esteve on Twitter
• #fluidDB on Freenode IRC
• http://groups.google.com/group/fluiddb-users
• http://groups.google.com/group/fluiddb-discuss
Lots of 3rd party libraries: http://bit.ly/9vvIal
Java, Clojure, Lisp, .NET, Perl, Python, Ruby, PHP & Javascript (all open-source)
We’re listening to youthough the usual caveats apply ;-)
Nicholas Tollervey [email protected]
ntoll on Twitter & IRC
http://www.flickr.com/photos/cambodia4kidsorg/260004685/
Questions / Discussion
Top Related