196
F. Firouzi and B. Farahani
• What Is NoSQL?
NoSQL which stands for “Not Only SQL” or “Not SQL” is a broad term
covering a variety of technologies that address several key topics such as nonrelational, distributed, open-source, and horizontally scalable. While the name
may seem to imply such, NoSQL is not focused solely on the absence of SQL.
For instance, several NoSQL query languages such as Hive’s query language are
heavily influenced by SQL. NoSQL does not mean that the database is schemaless.
Schemaless means that the database does not have a fixed data structure (e.g., Table
in RDBMS). For instance, PostgreSQL (RDBMS) has evolved to be able to serve
as schemaless document storage as well. ACID-ity which is a main feature of SQL
is not necessarily the focus either. Consider Hyperdex, a NoSQL database able to
support ACID-transactions. When it comes to relationships, most NoSQL databases
do not support joining in the same manner as a traditional database; however, some
do. With some research, a distributed SQL database can also be found, and indeed
more recently created databases are usually distributed in some way. Note that a
join operation in SQL is used to establish a connection/relationship between two or
more tables based on a set of given columns of the target tables. Based on the above
facts, it is not entirely logical to narrowly define NoSQL [17].
A NoSQL database is meant to meet large, distributed data storage needs and is
often used for big data and real-time use web applications such as Twitter, Google,
or Facebook that constantly gather terabytes of user data. While traditional RDBMS
utilizes SQL syntax to store or retrieve data, NoSQL encircles a diverse spectrum of
database technologies that can house polymorphic, unstructured, semi-structured,
or structured data. There are four types of unique NoSQL databases, each useful for
different data needs (see Fig. 4.14):
• Graph Database – Uses graph theory and designed for data represented as
a graph with an undetermined number of relationships among interconnected
elements, for examples, Neo4j and Titan.
• Key-Value Store – A great starting place as it is one of the simplest NoSQL
options, designed to store data comprised of an indexed key and value in
a schemaless manner. Examples: DynamoDB, Cassandra, Redis, Azure Table
Storage (ATS), and BerkeleyDB.
• Column Store (Wide Column Stores) – Rather than storing data in a row, these
databases store data tables in vertical columns. While it may sound like a simple
horizontal versus vertical adjustment, column stores actually offer high-quality
performance and extremely scalable architecture, for examples, HyperTable,
BigTable, and HBase.
• Document Database – This option extends the idea of key-value stores in that
each document is given a unique key needed to retrieve a specific document,
designed to store, manage, and retrieve semi-structured, document-oriented data,
for example, MongoDB and CouchDB.
Précédent

- 203/647

Suivant