Introductory material that answers the what, why and how questions relating to FluidDB (a new cloud-based database that simplifies creating, sharing, annotating and reusing information).
12. 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.
16. Namespaces and tags are
pre-defined by users
ntoll/rating
terrycojones/books/review
amazon.com/book/title
amazon.com/book/author
amazon.com/book/isbn
esteve/books/cover
timoreilly/has_read
(Every namespace and tag has a description and is itself
represented by an object so meta-tagging is allowed)
17. A basic object:
about = An id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune” object
(The about tag is a convention to help indicate
what the object represents. It is optional but
must be unique)
18. r=
ove
/c
ks
oo
ntoll/
b
ve/
te
es
rating
am
azo
n.c
“87 om/b
-41 ook
=
8-7
517 s/isbn
5
- 6” =
about = An id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune” object
= am
az
iew on
timoreill
v
/re s”
r=
s .c
om
ok rm
er tho
/bo wo “D /bo
nes and un ok
erb s/au
ojo ve s e” s/t
t”
y/has_re
ryc I lo itle
k H ok
ter “ =
ran /bo
“F om
ad
n.c
azo
am
19. r=
ove
/c
ks
oo
ntoll/
b
ve/
te
es
rating
am
azo
n.c
“87 om/b
-41 ook
=
8-7
517 s/isbn
5
- 6” =
about = An id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune” object
Value Types:
= am
az
iew on
timoreill
v
/re s”
r=
s .c
om
ok rm
er tho
/bo wo “D /bo
nes and un ok boolean
erb s/au
ojo ve s e” s/t
t”
y/has_re
ryc I lo itle
k H ok
ter “ = string (& set)
ran /bo
“F om
numeric
ad
n.c
opaque
azo
am
null
22. A simple and elegant
RESTful API
https://fluiddb.fluidinfo.com/objects/OBJECT_ID/NAMESPACE(S)/TAG
e.g.
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/*/*/*
24. r=
Traditional: oo
ks
/c
ove
ntoll/
b
ve/
te
es
rating
am
azo
n.c
“87 om/b
-41 ook
=
8-7
517 s/isbn
5
- 6” =
about = id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune”
= am
az
iew on
timoreill
v
/re s”
r=
s .c
om
ok rm
er tho
/bo wo “D /bo
nes and un ok
erb s/au
ojo ve s e” s/t
t”
y/has_re
ryc I lo itle
k H ok
ter “ =
ran /bo
“F om
ad
n.c
azo
am
25. r=
FluidDB: ks
/c
ove
ntoll/
b oo
ve/
te
rating
am es
azo
n.c
“87 om/b
=
-41 ook
8-7
517 s/isbn
5
- 6” =
about = An id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune” object
= am
az
view on
/re s” .c
r=
timoreill
s om
ok rm
er tho
/bo wo “D /bo
nes and un ok
erb s/au
ojo ve s e” s/t
t”
ryc I lo itle
k H ok
y/has_re
ter “ =
ran /bo
“F om
n.c
ad
azo
am
26. 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
28. 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).