11 OPEN NoSQL Document-Oriented Databases
Join the DZone community and get the full member experience.Join For Free
MongoDB: MongoDB is a collection-oriented, schema-free document database. Data is grouped into sets that are called ‘collections’. Each collection has a unique name in the database, and can contain an unlimited number of documents. Collections are analogous to tables in a RDBMS, except that they don’t have any defined schema.
It store data (which is in BASON – “Binary Serialized dOcument Notation” format) that is a structured collection of key-value pairs, where keys are strings, and values are any of a rich set of data types, including arrays and documents.
Quick Start: http://www.mongodb.org/display/DOCS/Quickstart
Quick Start: http://couchdb.apache.org/docs/intro.html
- Terrastore: Terrastore is a modern document store which provides advanced scalability and elasticity features without sacrificing consistency. It is based on Terracotta, so it relies on an industry-proven, fast clustering technology.
Quick Start: http://code.google.com/p/terrastore/wiki/Documentation
- RavenDB: Raven is a .NET Linq enabled Document
Database, focused on providing high performance, schema-less, flexible
and scalable NoSQL data store for the .NET and Windows platforms.
Raven store any JSON document inside the database. It is schema-less database where you can define indexes using C#’s Linq syntax.
Quick Start: http://ravendb.net/tutorials
- OrientDB: OrientDB is an open source NoSQL database management system written in Java. Even if it is a document-based database, the relationships are managed as in graph databases with direct connections between records. It supports schema-less, schema-full and schema-mixed modes. It has a strong security profiling system based on users and roles and supports SQL as a query languages.
Quick Start: http://code.google.com/p/orient/wiki/Tutorials
- ThruDB: Thrudb is a set of simple services built on
top of the Apache Thrift framework that provides indexing and document
storage services for building and scaling websites. Its purpose is to
offer web developers flexible, fast and easy-to-use services that can
enhance or replace traditional data storage and access layers.
It supports multiple storage backends such as BerkeleyDB, Disk, MySQL and also having Memcache and Spread integration.
Quick Start: http://thrudb.googlecode.com/svn/trunk/doc/Thrudb.pdf
- SisoDB: SisoDb is a document-oriented db-provider for Sql-Server written in C#. It lets you store object graphs of POCOs (plain old clr objects) without having to configure any mappings. Each entity is treated as an aggregate root and will get separate tables created on the fly.
Quick Start: http://www.sisodb.com/Wiki
- RaptorDB: RaptorDB is a extremely small size and fast embedded, noSql, persisted dictionary database using b+tree or MurMur hash indexing. It was primarily designed to store JSON data (see my fastJSON implementation), but can store any type of data that you give it.
Quick Start: http://www.codeproject.com/KB/database/RaptorDB.aspx
- CloudKit: CloudKit provides schema-free, auto-versioned, RESTful JSON storage with optional OpenID and OAuth support, including OAuth Discovery.
Quick Start: http://getcloudkit.com/api/
Quick Start: http://code.google.com/p/persevere-framework/w/list
- Jackrabbit: The Apache Jackrabbit™ content repository is a fully conforming implementation of the Content Repository for Java Technology API (JCR, specified in JSR 170 and 283). A content repository is a hierarchical content store with support for structured and unstructured content, full text search, versioning, transactions, observation, and more.
Quick Start: http://jackrabbit.apache.org/getting-started-with-apache-jackrabbit.html
Document databases store and retrieve documents and basic atomic stored unit is a document. As always your requirement leads into the decision. You need to think about your data-access patterns / use-cases to create a smart document-model. When your domain model can be split and partitioned across some documents, a document-database will be a suitable one for you. For example for a blog-software, a CMS or a wiki-software a document-db works extremely well. But at the same time a non-relational database is not better than a relational one in some cases where your database have a lot of relations and normalization.
Just check the following link from stackoverflow also to cover the pros/cons of Relational Vs Document based databases.
Published at DZone with permission of Lijin Joseji, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Redefining DevOps: The Transformative Power of Containerization
Cypress Tutorial: A Comprehensive Guide With Examples and Best Practices
Microservices Decoded: Unraveling the Benefits, Challenges, and Best Practices for APIs
Which Is Better for IoT: Azure RTOS or FreeRTOS?