Document-oriented database
A document-oriented database is a computer program designed for document-oriented applications. These systems may be implemented as a layer above a relational database or an object database.
Overview
As opposed to relational databases, document-based databases do not store data in tables with uniform sized fields for each record. Instead, each record is stored as a document that has certain characteristics. Any number of fields of any length can be added to a document. Fields can also contain multiple pieces of data.
For example here's a document:
FirstName="Bob", Address="5 Oak St.", Hobby="sailing".
Another document could be:
FirstName="Jonathan", Address="15 Wanamassa Point Road", Children=("Michael,10", "Jennifer,8", "Samantha,5", "Elena,2").
Notice that both documents have some similar information and some different - but unlike a relational database where each record would have the same set of fields and unused fields might be kept empty, there are no empty 'fields' in either document (record) in this case. This system allows information to be added any time without using storage space for "empty fields" as in relational databases.
It is noteworthy here that using XML, YAML or JSON for information storage has advantages similar to document oriented database. In these languages each record can have a non-standard amount of information. Such information is properly called semi structured data.
Another advantage of document oriented databases is the ease of usage and programming so that untrained business users, for example, can create applications and design their own databases. Information can be added without worrying about the "record size" and so programmers simply need to build an interface to allow the information to be entered easily.
Implementations
All XML databases are document-oriented databases. Other examples include:
- Lotus Notes (IBM)
- askSam (askSam Systems)[1]
- Apstrata
- Datawasp (Significant Data Systems)
- SimpleDB (Amazon.com)
- CRX (Day Software)
- MUMPS Database[2]
- UniVerse (Rocket Software)
- UniData (Rocket Software)
Open source implementations:
- Apache Jackrabbit (Apache License)
- Apache CouchDB (Preview release), (Apache License)
- FleetDB A schema-free database implemented in Clojure and optimized for agile development. (MIT License)
- MongoDB - Cloud-scale document oriented database. (GNU AGPL v3.0 [3])
- OrientDB
- RavenDB - Transactional .NET based RESTful document database.[4] (commercial or GNU AGPL v3.0)
- Redis - Key-value store with support for lists and sets (BSD License)
- Riak - Decentralized, fault-tolerant, horizontally scaling document datastore (Apache License)
- StrokeDB (Alpha software, MIT License)
- ThruDB Built on top of Facebook’s Thrift framework that provides indexing and document storage services for building and scaling websites. (Alpha software, BSD License)
- Persevere is a JSON database and JavaScript Application Server. Provides RESTful JSON interface for Create, read, update, and delete access to data. Also supports JSONQuery/JSONPath querying.
- DBSlayer is lightweight database abstraction layer (over MySQL) that talks to clients via JSON over HTTP used by the New York Times.
See also
- XML Databases
- IMAP servers
- Comparison of document-oriented database management systems
- Database theory
- In-memory database
- Object database
- Online database
- Real time database
- Relational database
- Data hierarchy
References
Further reading
- Assaf Arkin. (2007, September 20). Read Consistency: Dumb Databases, Smart Services. Labnotes:Don’t let the bubble go to your head!