Databases Reference
In-Depth Information
User data management —Store and query user-specific data on highly scalable web
applications. Used by video games and social network applications.
High-volume data feeds —Store large amounts of real-time data into a central
database for analysis characterized by asynchronous writes to RAM .
4.4.7
Case study: CouchDB, a large-scale object database
In 2005, Damien Katz was looking for a better way to store a large number of complex
objects using only commodity hardware. A veteran Lotus Notes user, he was familiar
with its strengths and weaknesses, but he wanted to do things differently and created a
system called CouchDB (cluster of unreliable commodity hardware), which was
released as an open source document store with many of the same features of distrib-
uted computing as part of its core architecture.
CouchDB has document-oriented data synchronization built in at a low level. This
allows multiple remote nodes to each have different versions of documents that are
automatically synchronized if communication between the two nodes is interrupted.
CouchDB uses MVCC to archive document-oriented ACID transactions, and also has
support for document versioning. Written in Erlang , a functional programming lan-
guage, CouchDB has the ability to rapidly and reliably send messages between nodes
without a high overhead. This feature makes CouchDB remarkably reliable even when
using a large number of processors over unreliable networks.
Like MongoDB, CouchDB stores documents in a JSON -style format and uses a
JavaScript-like language to perform queries on the documents. Because of its power-
ful synchronization abilities, CouchDB is also used to synchronize mobile phone data.
Although CouchDB remains an active Apache project, many of the original devel-
opers of CouchDB, including Katz, are now working on another document store
through the company Couchbase . Couchbase provides a distinct version of the product
with an open source license.
The four main patterns—key-value store, graph store, Bigtable store, and docu-
ment store—are the major architecture patterns associated with NoSQL. As with most
things in life, there are always variations on a theme. Next, we'll take a look at a repre-
sentative sample of the types of pattern variations and how they can be combined to
build NoSQL solutions in organizations.
4.5
Variations of NoSQL architectural patterns
The key-value store, graph store, Bigtable store, and document store patterns can be
modified by focusing on a different aspect of system implementation. We'll look at
variations on the architectures that use RAM or solid state drives ( SSD s), and then talk
about how the patterns can be used on distributed systems or modified to create
enhanced availability. Finally, we'll look at how database items can be grouped
together in different ways to make navigation over many items easier.
Search WWH ::




Custom Search