Original author(s) | Terry Jones, Esteve Fernandez |
---|---|
Developer(s) | Fluidinfo |
Initial release | 2009 |
Written in | Python, Twisted, PostgreSQL, Thrift, AMQP, Lucene |
Available in | English |
Website | fluidinfo |
Fluidinfo, formerly named FluidDB until early 2011, is an online cloud data store based on an attribute-value centric data model. [1] Fluidinfo is written in Python and characterized by a publicly writeable schema-less database that provides a query language, a fine-grained permissions model and promotes data sharing, both publicly and in groups. [2] The lack of an underlying RDBMS structure may classify Fluidinfo as a type of publicly writeable "collective database". [3] [4]
Few data stores are available with the intent to provide public write-access, except in narrow contexts. Two examples of shareable data stores operating in specific contexts are del.icio.us (shareable bookmarks) and Twitter (micro-blogging service). Fluidinfo offers a generalized shareable data store, where potentially any piece or type of information can be shared with anybody else, if desired, striving for a balance between individual, group and communal data ownership. Author and blogger Robert Scoble described Fluidinfo as a "database that acts like a wiki". [5]
Fluidinfo emphasizes three aspects that make it unique among existing public data stores:
The data model aims to be as flexible as possible, permitting a wide range of information to be stored in Fluidinfo. The fundamental difference between attribute-value stores (along the lines of EAV schemas) and traditional RDBMS is the lack of a highly defined top-down structure. The essence of Fluidinfo consists of arbitrary objects, which can be considered points in a data space to which tags may be attached. Objects have no owners, similar to concepts in the "real" world. Tags are initially controlled by the user/application who creates them and can be attached to objects, in a fashion reminiscent of how humans use their minds to create and associate information with physical objects or concepts. One of the underlying motivations of Fluidinfo is to make working with information more natural. [6] Anyone can attach tags to any data object, but only people with the right roles can see and search these tags. [7]
The query language was designed to perform complex queries in as simple a manner as possible. [8] The syntax is superficially reminiscent of information retrieval query languages such as CQL which are characterized as less complicated than traditional database query languages such as SQL. The query language always return object identifiers based on tag values, using the predicates below: [9]
tim/rating > 5
sally/opinion matches fantastic
has sally/opinion
mary/product-reviews/keywords
might be on an object with a value of [ "cool", "kids", "adventure" ]
. The contains
operator can be used to select objects with a matching value. The query mary/product-reviews/keywords contains "kids"
would match the object in this example.except
keyword. For example, has nytimes.com/appeared except has james/seen
. The except
operator performs a set difference.and
and or
. For example, has sara/rating and tim/rating > 5
.has sara/rating and (tim/rating > 5 or mike/rating > 7)
.For each action that be applied to any tag or namespace within Fluidinfo, there is:
The various actions that can be performed on a tag are read
, update
, create
and see
. The combination of the various actions with policies and exceptions provides a fine-grained permission model within Fluidinfo. It should be re-emphasized that only tags and namespaces have permissions allowing for various levels of control. Objects (the basic Fluidinfo data structure) do not have owners and so cannot be controlled by users/applications.
Examples of the permission model in various states are shown in the table below: [10]
Tag or namespace | Action | Policy | Exceptions |
---|---|---|---|
tim/seen | read | closed | tim, meg |
mike/opinion | update | open | |
mike/ | create | closed | |
meg/rating | see | open | |
meg/rating | read | closed | meg |
The company Fluidinfo was founded in the UK in 2007 and operates out of New York City and Barcelona. [11] Esther Dyson provided an early-stage angel investment in the company. [12] Tim O'Reilly is also an investor in the company. [13]
Fluidinfo launched in alpha as "FluidDB" on August 17, 2009. [14] Developers can sign-up for access to Fluidinfo via their homepage. This is similar to the types of RESTful API access provided by other cloud services. [15] [16] [17] The company changed the name of the product from "FluidDB" to "Fluidinfo" [18] and won Top Technology Prize at the 2011 LAUNCH Conference. [19] During SXSW 2011, Tim O'Reilly named Fluidinfo as his favorite startup. [20]
A relational database is a database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relational database systems are equipped with the option of using SQL for querying and updating the database.
Structured Query Language, abbreviated as SQL, is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS). It is particularly useful in handling structured data, i.e. data incorporating relations among entities and variables.
An object–relational database (ORD), or object–relational database management system (ORDBMS), is a database management system (DBMS) similar to a relational database, but with an object-oriented database model: objects, classes and inheritance are directly supported in database schemas and in the query language. In addition, just as with pure relational systems, it supports extension of the data model with custom data types and methods.
Db2 is a family of data management products, including database servers, developed by IBM. It initially supported the relational model, but was extended to support object–relational features and non-relational structures like JSON and XML. The brand name was originally styled as DB/2, then DB2 until 2017 and finally changed to its present form.
A stored procedure is a subroutine available to applications that access a relational database management system (RDBMS). Such procedures are stored in the database data dictionary.
In the context of SQL, data definition or data description language (DDL) is a syntax for creating and modifying database objects such as tables, indices, and users. DDL statements are similar to a computer programming language for defining data structures, especially database schemas. Common examples of DDL statements include CREATE
, ALTER
, and DROP
.
A query language, also known as data query language or database query language (DQL), is a computer language used to make queries in databases and information systems. A well known example is the Structured Query Language (SQL).
eXist-db is an open source software project for NoSQL databases built on XML technology. It is classified as both a NoSQL document-oriented database system and a native XML database. Unlike most relational database management systems (RDBMS) and NoSQL databases, eXist-db provides XQuery and XSLT as its query and application programming languages.
An XML database is a data persistence software system that allows data to be specified, and sometimes stored, in XML format. This data can be queried, transformed, exported and returned to a calling system. XML databases are a flavor of document-oriented databases which are in turn a category of NoSQL database.
Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.
A document-oriented database, or document store, is a computer program and data storage system designed for storing, retrieving and managing document-oriented information, also known as semi-structured data.
Freebase was a large collaborative knowledge base consisting of data composed mainly by its community members. It was an online collection of structured data harvested from many sources, including individual, user-submitted wiki contributions. Freebase aimed to create a global resource that allowed people to access common information more effectively. It was developed by the American software company Metaweb and run publicly beginning in March 2007. Metaweb was acquired by Google in a private sale announced on 16 July 2010. Google's Knowledge Graph is powered in part by Freebase.
db4o was an embeddable open-source object database for Java and .NET developers. It was developed, commercially licensed and supported by Actian. In October 2014, Actian declined to continue to actively pursue and promote the commercial db4o product offering for new customers.
Apache Empire-db is a Java library that provides a high level object-oriented API for accessing relational database management systems (RDBMS) through JDBC. Apache Empire-db is open source and provided under the Apache License 2.0 from the Apache Software Foundation.
A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Such databases have existed since the late 1960s, but the name "NoSQL" was only coined in the early 21st century, triggered by the needs of Web 2.0 companies. NoSQL databases are increasingly used in big data and real-time web applications. NoSQL systems are also sometimes called Not only SQL to emphasize that they may support SQL-like query languages or sit alongside SQL databases in polyglot-persistent architectures.
A graph database (GDB) is a database that uses graph structures for semantic queries with nodes, edges, and properties to represent and store data. A key concept of the system is the graph. The graph relates the data items in the store to a collection of nodes and edges, the edges representing the relationships between the nodes. The relationships allow data in the store to be linked together directly and, in many cases, retrieved with one operation. Graph databases hold the relationships between data as a priority. Querying relationships is fast because they are perpetually stored in the database. Relationships can be intuitively visualized using graph databases, making them useful for heavily inter-connected data.
Couchbase Server, originally known as Membase, is an open-source, distributed multi-model NoSQL document-oriented database software package optimized for interactive applications. These applications may serve many concurrent users by creating, storing, retrieving, aggregating, manipulating and presenting data. In support of these kinds of application needs, Couchbase Server is designed to provide easy-to-scale key-value, or JSON document access, with low latency and high sustainability throughput. It is designed to be clustered from a single machine to very large-scale deployments spanning many machines.
ObjectDB is an object database for Java. It can be used in client-server mode and in embedded mode.
The following is provided as an overview of and topical guide to databases:
Apache Drill is an open-source software framework that supports data-intensive distributed applications for interactive analysis of large-scale datasets. Built chiefly by contributions from developers from MapR, Drill is inspired by Google's Dremel system, also productized as BigQuery. Drill is an Apache top-level project. Tom Shiran is the founder of the Apache Drill Project. It was designated an Apache Software Foundation top-level project in December 2016.