• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
An Introduction to FluidDB
 

An Introduction to FluidDB

on

  • 3,019 views

The slides and notes used when presenting to Manchester Geek Night.

The slides and notes used when presenting to Manchester Geek Night.

Statistics

Views

Total Views
3,019
Views on SlideShare
2,976
Embed Views
43

Actions

Likes
4
Downloads
20
Comments
0

3 Embeds 43

http://nosql.mypopescu.com 32
http://lanyrd.com 9
http://coderwall.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br /> <br />
  • A high-level, non-technical overview of the concepts behind FluidDB <br />
  • ...is FluidDB <br />
  • But what is an openly writable social object..? <br />
  • An example of an openly &#x201C;writable&#x201D; social object in the real world. FluidDB just allows this in the digital world. <br />
  • <br /> <br />
  • Most interesting information is currently in walled gardens sitting in databases behind applications, APIs or in weird proprietary formats. <br />
  • Often you have to duplicate information in each of the different walled gardens. <br />
  • And you usually can&#x2019;t request information that combines data from the different walled gardens. For example, selecting all the self-catering cottages endorsed by the Cornish Tourist Board that are close to good pubs that serve my favourite beer. So how is FluidDB different..? <br />
  • At Fluidinfo we want to make it much easier to share, annotate, augment and re-use information. FluidDB is designed to make this possible. <br />
  • <br /> <br />
  • <br /> <br />
  • FluidDB is conceptually very simple. <br />
  • Openly writable objects are simply tagged with information. <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • Namespaces and tags are pre-defined by users and applications. When you sign up for FluidDB you&#x2019;re assigned a namespace corresponding to your username. Every namespace and tag can have a description and is itself represented by an object within FluidDB so meta-tagging is possible. <br />
  • Every FluidDB object has a Universally Unique ID (this allows applications to operate on a specific object) and an optional unique &#x201C;about&#x201D; tag that can be used to indicate what the object represents. <br />
  • <br /> <br />
  • There are two &#x201C;types&#x201D; of information: primitive (boolean, string, numeric, null etc...) and opaque (that have an associated mime-type). <br />
  • How does FluidDB ensure that users and applications retain control over their information..? <br />
  • The traditional mechanism is to control the thing being written to: a database table or document for example. But FluidDB&#x2019;s aim is to make the world writeable so Objects have no owners or associated permissions. <br />
  • Permissions only apply to the namespaces, tags and tag-values. Therefore users and applications retain control over who sees, reads, writes or creates data without inhibiting the writability of FluidDB. <br />
  • <br /> <br />
  • <br /> <br />
  • It&#x2019;s a bit like the unix filesystem where permissions on directories and files are also scoped by action (read, write and execute) and apply to specific users or groups. <br />
  • Use the very simple query language to search for information. The current specification fits onto this slide. <br />
  • Another way to find information is to ask FluidDB for tags that are attached to interesting objects. <br />
  • Users and applications interact with FluidDB via a RESTful HTTP API. <br />
  • But what exactly do we mean by social data? Let&#x2019;s look at a few examples: <br />
  • Tickery, WeMetAt, TunkRank. <br />
  • ...can you find out more information and get involved? <br />
  • <br /> <br />
  • <br /> <br />
  • <br /> <br />
  • Tell us what you think! <br />
  • <br /> <br />

An Introduction to FluidDB An Introduction to FluidDB Presentation Transcript

  • An Introduction to FluidDB (A social database in the cloud). Nicholas Tollervey ntoll@fluidinfo.com http://fluidinfo.com/
  • The Agenda: What? Why? How? Where? A high-level, non-technical overview of the concepts behind FluidDB
  • What? ...is FluidDB
  • FluidDB is a platform for the web of things, each represented by an openly writable “social” object. But what is an openly writable social object..?
  • http://www.flickr.com/photos/psd/1428129861/ An example of an openly “writable” social object in the real world. FluidDB just allows this in the digital world.
  • Why?
  • http://www.flickr.com/photos/jointhedots/4622191119/ Most interesting information is currently in walled gardens sitting in databases behind applications, APIs or in weird proprietary formats.
  • People I know Often you have to duplicate information in each of the different walled gardens.
  • SELECT self-catering-cottage FROM WHERE location NEAR pubs SERVING AND pub HAS rating > 7 IN And you usually can’t request information that combines data from the different walled gardens. For example, selecting all the self-catering cottages endorsed by the Cornish Tourist Board that are close to good pubs that serve my favourite beer. So how is FluidDB different..?
  • Share, annotate, augment and re-use information. At Fluidinfo we want to make it much easier to share, annotate, augment and re-use information. FluidDB is designed to make this possible.
  • How?
  • There is only one FluidDB. All users and applications share the same database.
  • • Objects - represent things • Tags - define objects’ attributes • Namespaces - organise tags • Permissions - control access FluidDB is conceptually very simple.
  • http://ntoll.org/images/93.jpg Openly writable objects are simply tagged with information.
  • Data Structure entity / attribute / value
  • Data Structure object / tag / value (in FluidDB parlance)
  • Data Structure object / tag / value (optional)
  • Namespaces/Tags ntoll/rating terrycojones/books/review amazon.com/book/title amazon.com/book/author amazon.com/book/isbn esteve/books/cover timoreilly/has_read Namespaces and tags are pre-defined by users and applications. When you sign up for FluidDB you’re assigned a namespace corresponding to your username. Every namespace and tag can have a description and is itself represented by an object within FluidDB so meta- tagging is possible.
  • about = An id = “e127475b-eb93-48e1-a24f-dde6825b9ed8” “book:Dune” object Every FluidDB object has a Universally Unique ID (this allows applications to operate on a specific object) and an optional unique “about” tag that can be used to indicate what the object represents.
  • r= ove /c ks oo ntoll/ b e/ ev st rating am e 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 .com 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 it k H ok le ter “ = ran /bo “F om ad n.c azo am
  • r= ove /c ks oo ntoll/ b e/ ev st rating am e 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 .com 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 it k H ok le ter “ = string (& set) ran /bo “F om numeric ad n.c opaque azo am null There are two “types” of information: primitive (boolean, string, numeric, null etc...) and opaque (that have an associated mime-type).
  • snoissimreP(seem to be back-to-front) How does FluidDB ensure that users and applications retain control over their information..?
  • r= Traditional: oo ks /c ove ntoll/ b e/ ev st rating am e 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 .com 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 it k H ok le ter “ = ran /bo “F om ad n.c azo am The traditional mechanism is to control the thing being written to: a database table or document for example. But FluidDB’s aim is to make the world writeable so Objects have no owners or associated permissions.
  • r= FluidDB: ks /c ove ntoll/ b oo e/ ev st rating am e 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 v iew 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 it le k H ok y/has_re ter “ = ran /bo “F om n.c ad azo am Permissions only apply to the namespaces, tags and tag-values. Therefore users and applications retain control over who sees, reads, writes or creates data without inhibiting the writability of FluidDB.
  • You control who can see, read or use your tags.
  • http://www.flickr.com/photos/fixe/3415776837/ Anyone can tag information to an object.
  • 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 It’s a bit like the unix filesystem where permissions on directories and files are also scoped by action (read, write and execute) and apply to specific users or groups.
  • 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). Use the very simple query language to search for information. The current specification fits onto this slide.
  • Tags attached to the “about:esteve” object. {“tagPaths”: [ " “twitter.com/username”, " “twitter.com/fullname”, " “tunkrank.com/score”, " “ntoll/met”, " “terrycojones/met”, " “python.org/member”, " “ub.edu/alumni”, " “ub.edu/bsc”, " “uoc.edu/msc”, " ... etc ... ]} Another way to find information is to ask FluidDB for tags that are attached to interesting objects.
  • A RESTful API https://fluiddb.fluidinfo.com/objects/OBJECT_ID/NAMESPACE(s)/TAG HTTP ‘GET’ returns the value, HTTP ‘PUT’ adds/updates it etc... Full API: http://api.fluidinfo.com/fluidDB/api/*/*/* Users and applications interact with FluidDB via a RESTful HTTP API.
  • Social data? But what exactly do we mean by social data? Let’s look at a few examples:
  • http://www.flickr.com/photos/8001265@N08/2259250324/ Let me demonstrate! Tickery, WeMetAt, TunkRank.
  • Where? ...can you find out more information and get involved?
  • http://fluidinfo.com/
  • • Twitter: @fluidDB @terrycojones @esteve & @ntoll • http://youtube.com/fluiddb • #fluiddb on Freenode IRC • http://groups.google.com/group/fluiddb-users • http://groups.google.com/group/fluiddb-discuss
  • Lots of 3rd party libraries: http://fluidinfo.com/developers/libs Java, Clojure, Lisp, .NET, Perl, Python, Ruby, PHP & Javascript (all open-source)
  • We’re listening to you though the usual caveats apply ;-) Tell us what you think!
  • Questions..?