A beginners introduction to NoSQL 
A beginners introduction to NoSQL 
Jayesh Naithani 
SEIS 605 Technical Communicatio...
A beginners introduction to NoSQL 
● They allow storage of the database on clusters of processors and maintain high­sp...
A beginners introduction to NoSQL 
3. Terminology
Some of the terminology used in the paper is listed below.  They w...
A beginners introduction to NoSQL 
● Hadoop: is an open source software project that uses the MapReduce framework to 
A beginners introduction to NoSQL 
Interface, Middle Tier, and the Database layer.  While the User Interface is on the...
A beginners introduction to NoSQL 
4.4. Distributed data
NoSQL systems also use consistent hashing for synchronizing...
A beginners introduction to NoSQL 
a dictionary functions, where the dictionary has a list of words (keys) and each wo...
A beginners introduction to NoSQL 
5.3 Column-family Stores
A column­family data store uses row and column identifie...
A beginners introduction to NoSQL 
Implementation: CouchDB
CouchDB is another NoSQL database management system devel...
A beginners introduction to NoSQL 
● They make use of replication to create backup copies of data in real time and del...
A beginners introduction to NoSQL 
6.4 Increasing Agility
Software agility is the ability of businesses to quickly a...
A beginners introduction to NoSQL 
7. Future and Beyond
NoSQL systems are relatively new.  There are a number of cha...
A beginners introduction to NoSQL 
NoSQL systems.  Today, business intelligence and analytics support with NoSQL datab...
A beginners introduction to NoSQL 
● XML Databases
XML databases are similar to document databases where the document ...
A beginners introduction to NoSQL 
[2]  P. J. Sadalage and M. Fowler. NoSQL Distilled: A Brief Guide to the Emerging...
Upcoming SlideShare
Loading in …5

A Beginners Introduction to NoSQL


Published on

This paper briefly describes what NoSQL systems are and the motivating factors for their recent
interest. Core concepts associated with the NoSQL data model are introduced, compared and
differentiated with the relational model. The four major types of NoSQL systems are then
discussed, along with brief descriptions of some well known data store implementations.
Included are short descriptions of how NoSQL systems are currently helping solve some of the
business problems of big data and search. Finally, the paper concludes by mentioning some
topics and issues that lie ahead for the NoSQL movement.

Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

A Beginners Introduction to NoSQL

  1. 1.   A beginners introduction to NoSQL    A beginners introduction to NoSQL  Jayesh Naithani  SEIS 605 Technical Communications  Graduate Programs in Software  University of St. Thomas, Saint Paul, Minnesota, USA    Abstract    This paper briefly describes what NoSQL systems are and the motivating factors for their recent  interest. Core concepts associated with the NoSQL data model are introduced, compared and  differentiated with the relational model. The four major types of NoSQL systems are then  discussed, along with brief descriptions of some well known data store implementations.  Included are short descriptions of how NoSQL systems are currently helping solve some of the  business problems of big data and search. Finally, the paper concludes by mentioning some  topics and issues that lie ahead for the NoSQL movement.    1. What is NoSQL?   NoSQL stands for Not­only­SQL.  It can be broadly defined as the following:    “NoSQL is a set of concepts that allows the rapid and efficient processing of data sets with a  focus on performance, reliability, and agility.” [1]1    NoSQL systems were born out of the need to handle larger data volumes and are characterized  by the following essential properties:    ● They are schemaless and allow extraction and query of data using simple interfaces  without joins and which don’t require an entity­relational model.    _________________  1 The numbers in brackets correspond to those of the bibliography in the References section.    1  
  2. 2.   A beginners introduction to NoSQL    ● They allow storage of the database on clusters of processors and maintain high­speed  performance.   ● They have the ability of trade off traditional relational system consistency for other useful  properties such as being more performant, offering greater scalability, and being easier  to program with.    The next section describes the main motivating factors for the use of NoSQL systems today.    2. Why NoSQL?   Two of the primary reasons why people consider using a NoSQL system are:    ● Application development productivity NoSQL systems provide a data model that better fits application needs, simplifying  application development effort which results in less application code to write, debug, and  maintain.  It greatly reduces the application development effort which is involved when  using relational database models with the mapping of in­memory data structures into the  database [2, 7].   ● Large-scale data NoSQL systems are designed to run on clusters of processors and machines, and are a  better fit for big data scenarios. Organizations are able to capture more data and process  it more quickly and economically than what is possible when using a relational database  [2, 7].    Before discussing NoSQL systems in more detail, a few common terms used to describe  NoSQL systems are provided in the next section.            2  
  3. 3.   A beginners introduction to NoSQL    3. Terminology   Some of the terminology used in the paper is listed below.  They will be useful to understand and  refer back to when found in use within this paper.    ● NoSQL systems: are those systems that use a variety of data store types (databases)  ● Hashing: is the process of mapping data of arbitrary length to a fixed length and is used  to uniquely identity documents   ● Caching: is the process of storing recently used information so that it can be quickly  accessed at a later time  ● Sharding: is a process of dividing a data set and distributing it across multiple servers  ● Horizontal scaling: or scale out, is the process of joining multiple computers together to  provide more processing power  ● Cluster: is composed of a set of processors called nodes grouped together in racks  ● Key/Value: is the term used when identifying data (value) by an arbitrary name (key)  ● Indexing: is a method for sorting data by multiple fields  ● Replication: is a term to describe the sharing of information between systems so as to  ensure it’s consistency and high availability  ● JSON: or Javascript Object Notation, is a universal internet data exchange format  ● XML:  or eXtensible Markup Language, is a universal internet data exchange format  ● RDBMS: or Relational Database Management System, is a database management  system that stores data in the form of related tables  ● CAP Theorem: or Consistency, Availability, and Partition tolerance theorem, is a  computing rule that states a system with the three properties of Consistency, Availability,  and Partition tolerance can only provide two of three services at any given time  ● ACID: or Atomicity, Consistency, Isolation, Durability, are properties of transactional  control systems such as an RDBMS  ● BASE: or Basic availability, Soft­state, Eventual consistency, is the alternative to ACID,  and is used to describe systems, such as NoSQL, that focus on data availability more  than data consistency  ● MapReduce: is a programming model for processing large amounts of unstructured  data in parallel on large clusters of commodity hardware     3  
  4. 4.   A beginners introduction to NoSQL    ● Hadoop: is an open source software project that uses the MapReduce framework to  enable the distributed processing of large data sets     Lets discuss some essential NoSQL concepts next.    4. No SQL Concepts   Important key concepts and architectural guidelines of NoSQL are:    ● Simple Building Blocks  ● Layered Architecture  ● Hashing and Data Distribution  ● Distributed Caching  ● Sharding    Each of these concepts is described in more detail below.    4.1 Simple Building Blocks   NoSQL systems are created using modular and simple components that can be re­assembled  to meet the needs of different applications [1]. For instance, a system could consist of several  simple functions: one that allows sharing of objects in memory, another that executes batch  jobs, and a third that is responsible for storing documents. The focus for each of the functions is  to provide efficient services that are frequently used to power a distributed service.    4.2 Layered Architecture   NoSQL systems make use of application tiers to simplify design, similar to many other systems  such as the Relational Database Management Systems (RDBMS).   However, NoSQL  applications are distributed differently than RDBMSs.  Both types of systems consist of the User    4  
  5. 5.   A beginners introduction to NoSQL    Interface, Middle Tier, and the Database layer.  While the User Interface is on the top of both  systems, in NoSQL systems most of the application functionality is in the middle tier while in  RDBMs the application functionality is mostly in the database layer [1].  The database tier in  NoSQL systems is thus very simple, since all the functionality to move data into the database is  part of the middle tier. A feature­by­feature comparison between SQL and NoSQL systems is  provided in the following table.    SQL vs. NoSQL [14]  Feature  SQL Systems  NoSQL Systems  Types  One type with minor  variations  Many different types  History  Developed in 1970s  Developed in 2000s  Examples  MySQL, Postgres, DB2,  Oracle  CouchDB, Cassandra, Neo4j  Data Storage Model  Individuals records stored in  tables  Varies according to database  types  Schemas  Data type, structure fixed  None (dynamic)  Scaling   Single Server, vertical  Horizontal, distributed  Transaction support  Always  Sometimes  Query language  SQL  APIs  Consistency  Strong  Variable    4.3 Distributed Caching   NoSQL systems keep frequently used data in memory using a technique called consistent  hashing [1].  Consistent caching provides the ability to determine if a new query or document is  the same as the one already in cache. This prevents NoSQL systems from making unnecessary  calls to the database and keeps them running fast.      5  
  6. 6.   A beginners introduction to NoSQL    4.4. Distributed data   NoSQL systems also use consistent hashing for synchronizing distributed databases [1].  Systems can assign documents to specific database nodes on distributed systems and quickly  compare remote databases to determine if they need to be synchronized.    4.5 Sharding   NoSQL systems make use of automatic database sharding to break the data into chunks called  shards and spread the chunks around across a number of distributed systems [1].  Sharding  also allows NoSQL systems to horizontally scale gracefully as the database grows.    We are now ready to discuss the four common categories of NoSQL systems.    5. The Four Categories of NoSQL system stores   The four most important categories of NoSQL system stores are:    ● Key­value store  ● Graph store  ● Column store  ● Document store    Each of these type of stores along with a well known product implementation for each, is briefly  described next.    5.1 Key-value Store   A key­value store is a simple database that which presented with a simple string, or the key,  returns an arbitrary binary large object (BLOB) of data, or the value.  They are very similar to how    6  
  7. 7.   A beginners introduction to NoSQL    a dictionary functions, where the dictionary has a list of words (keys) and each word has one or  more definitions (values).  These type of stores have no query language [1].    Implementation: Amazon DynamoDB   Amazon DynamoDB is a fully managed NoSQL database service offered by Amazon as part of  it’s Amazon Web Services (AWS) portfolio.  It is designed to maintain predictably high  performance and to be highly cost efficient for workloads of any scale [3]. Data items are spread  over a sufficient number of servers, stored on solid state disks (SSD), and automatically  replicated across multiple servers to provide high availability and data durability.    5.2 Graph Stores   A graph data store is a system that contains a sequence of nodes and relationships that, when  combined, create a graph.  Graph data stores have three fields:  nodes, relationships, and  properties.  Graph stores allow simple queries to be performed that show nearest neighbouring  nodes as well as queries that look deep into networks and quickly discover patterns.  For  instance, a graph store can provide a list of your friends by last name, and who among them are  mostly likely to buy you a cool beverage [1].      Implementation: Neo4j   Neo4j is a highly scalable, robust (fully ACID) native graph database [4].  The use cases that  make Neo4j ideal for use are those where graph analytics is used to model relationships  between people/customer, object/product, or nodes/device in a network.  The other big  advantage that Neo4j offers is that it’s open source, with an active development team, and a  strong user community.  Among some well known large enterprises that are using Neo4j today  are eBay and Walmart.      7  
  8. 8.   A beginners introduction to NoSQL    5.3 Column-family Stores   A column­family data store uses row and column identifiers as general purpose keys for data  lookup.  They are sometimes referred to as datastores instead of databases, since they lack  features that exist in traditional databases such as typed columns, secondary indexes, triggers,  and query languages.  An important feature of column­family stores is that they can scale very  well to manage large volumes of data [1].      Implementation: Cassandra   Apache Cassandra is a NoSQL column family store with a strong reputation for scalability and  high availability under intense write loads [5].  All nodes in a Cassandra cluster have identical  functionality, and clients can write to any node of the cluster at any time.  Since Cassandra does  not have a single master node, there is no single point of failure.  Because of this feature and it’s  strong peer­to­peer development model, Cassandra is a good fit for organizations that want both  scalability and availability in a column­family system.  Some well known enterprises that are  using Cassandra are Comcast, Hulu, and NetFlix.     5.4 Document Stores   A document store is key­value store with one major exception, instead of just storing a BLOB in  it, a document database requires that the data (document) be stored in a format that the  database can recognize.  The format can be XML, JSON, Binary JSON, or any other format the  database can understand.  A document store automatically indexes everything inside the  document when it is added into the store.  This means that everything inside the document is  searchable [1].            8  
  9. 9.   A beginners introduction to NoSQL    Implementation: CouchDB   CouchDB is another NoSQL database management system developed by the Apache software  foundation, with powerful synchronization abilities.  It stores data in the form of a collection of  JSON style documents.  It uses a JavaScript like language to perform queries on the documents  [6].  CouchDB is used by applications that have a need to synchronize mobile phone data fast.  Although CouchDB is still an active Apache project, many of the original developers are now  working on another document store through a company called CouchBase.    After this short summary of the major types of datastores with corresponding example  implementations, the next section of the paper highlights some of the ways that NoSQL solutions  provide a positive return on investment for organizations.    6. NoSQL Solutions   This section discusses how NoSQL solution solve real­world business problems of big data,  search, high availability, and agility.    6.1 Managing Big Data   A big data class problem is any business problem that is so large that it cannot be easily  managed using a single processor [1]. NoSQL systems with their inherent support for horizontal  scale­out architectures are ideal for solving big data problems.  Here are the four ways that  NoSQL systems help handle big data problems:    ● They make use of commodity processors that each hold a subset of the data on their  local drives. It becomes more efficient to query each node than to transfer large data sets  to a central processor.  By moving queries to the data and not data to the queries,  NoSQL systems keep big data queries fast.  ● They make use of hash rings to evenly distribute data on a cluster.  This helps with the  balanced distribution of network load and helps improve the performance of queries.    9  
  10. 10.   A beginners introduction to NoSQL    ● They make use of replication to create backup copies of data in real time and deliver fast  read/write consistency.  ● They let the database distribute queries evenly to data nodes, and then efficiently  combine the results together.    6.2 Search   Search involves finding an item of interest in a database when only partial information is available  about the item. NoSQL systems combine document store concepts with full text indexing to  deliver high quality search solutions [1].  Document stores keep data in single hierarchical tree  and don’t shred elements into rows within tables.  The retained structure then can be used to  exactly locate a matched keyword within the document.  NoSQL solutions when used together  with highly scalable processes such as MapReduce can be used to create reverse indexes for  enabling fast search.    6.3 High Availability   The features that allow NoSQL systems to scale out and handle big data problems can also be  used to increase the availability of database servers.  NoSQL architectures make effective use  of a couple of strategies to create high availability systems backed by clusters of multiple  systems [1]:    ● By using a load balancer to direct traffic to the least busy node  ● By using high­availability distributed file systems.  One such high availability system is  the Hadoop Distributed File System (HDFS).     Simplicity of design of NoSQL systems is another feature that promotes high availability.  Organizations benefit by the cost effectiveness provided by operating high­availability NoSQL  systems that run on multiple processors.        10  
  11. 11.   A beginners introduction to NoSQL    6.4 Increasing Agility   Software agility is the ability of businesses to quickly adapt software systems to changing  business requirements.  Many organizations find a significant reduction in effort when using  NoSQL systems in use cases that involve data import and export [1]. When objects are used as  a middle layer between a web page and an RDBMS they undergo a four step translation process  versus when using a NoSQL solution which requires no translation in storing the object directly  to the database.  This lack of translation makes NoSQL systems simpler to use and allows both  subject matter experts and non­programming staff to participate directly in the application  development process.  Direct involvement by the technical members in building applications  allows corrections to be made early in the software development process, leading to savings in  time and money that would otherwise have been put towards re­work.    The following table summarizes the most important types of datastores introduced by the the  NoSQL movement and their typical uses.    Significant NoSQL Data Stores and Typical Use [1]  Datastore Type  Description   Typical Uses  Key­value store  A simple way to associate  between a large data file and  text string  Dictionary, image store,  document/file store, lookup  table  Graph store  A way to store nodes and  arcs of a graph  Social network queries,  friend­of­friend queries,  pattern matching  Column Family store  A way to store irregular type  data using row and a column  as the key  Web­crawling,  highly­adaptable systems  Document store  A way to store hierarchical,  tree­structured information in  a single unit  Office documents, invoices,  web pages, any data that has  a natural container structure    Next we take look at a few NoSQL adoption challenges and developments that lie ahead for the  NoSQL movement.    11  
  12. 12.   A beginners introduction to NoSQL    7. Future and Beyond   NoSQL systems are relatively new.  There are a number of challenges that NoSQL systems  face: Some of these challenges and what is in the horizon for the further evolution of NoSQL  systems, along with some other viable persistence alternatives, are briefly described next.    7.1 Lack of trained Administrators and Developers   In today’s environment, most senior administrators and developers have extensive experience  writing code and managing relational databases.  NoSQL systems are still unchartered territory  for many of them.   There is a significant shortage of skilled professionals who can evaluate the  needs of enterprises to determine the type of NoSQL systems best suited for their business  purpose, and then also administer and develop the algorithms and programs to operate with their  choice of NoSQL system [8, 9].    7.2 Adoption Readiness   Many enterprises are reluctant to invest in commercial NoSQL technology due to the lack of  trained professionals to manage, optimize, and develop applications for them.  Also, there still  are a few enterprises that feel the technology is not quite ready for primetime. Finally, there is a  need for the increased development of more big data applications that are ideally suited for the  use of NoSQL systems [10].    7.3 Support for Real-Time Analytics   Real­time analytics is the use of all available enterprise data and resources whenever they are  needed.  It involves dynamic analysis and reporting, based on data entered into a system a  fraction of seconds before the actual moment of use. Relational databases are ideally suited for  complex query and analysis, however real time analysis of operational data is better suited for    12  
  13. 13.   A beginners introduction to NoSQL    NoSQL systems.  Today, business intelligence and analytics support with NoSQL databases is  still very new, but has started to grow rapidly [2].    7.4 Global Transaction Support   The Consistency, Availability, and Partition­tolerance (CAP) theorem states that a distributed  system cannot simultaneously provide all three services, and at best can provide two of the  three services.  This is widely understood within the NoSQL community as justifying the need for  NoSQL systems to provide high availability over consistency.  Consistency of data is one of the  guarantees of transactional systems, and is must for certain types of enterprise applications,  such as financial applications.  The growing understanding that consistency of data is crucial for  many applications has many NoSQL system designers now favoring a return to support for  transactions with NoSQL [12]. And to provide the transaction support functionality without  sacrificing the NoSQL functional advantages in the area of scalability, fault­tolerance,  concurrency, and performance.      7.5 Other Storage Technologies   NoSQL systems have done a great deal to open up the world of databases.  But they are still  only a part of the picture of choosing the right persistence option for the task at hand.  There are  several other persistence options besides relational and NoSQL systems, and here are just a  couple of them briefly described:    ● File Systems. File systems are ubiquitous, and are widely used for storing personal productivity  documents.  They are similar to key­value stories with a hierarchic key and provide little  control over concurrency.   They offer no support for queries on their own, and work best  for a relatively small number of large files that can be processed in big chunks [2].       13  
  14. 14.   A beginners introduction to NoSQL    ● XML Databases XML databases are similar to document databases where the document is stored in a  data model compatible to XML, and then various XML technologies are used to  manipulate the document.  XML databases are capable of storing complex data, have an  expressive data format, provide superior search services, and tend to support web  standards better than other document stores.  They make a good choice to solve  business problems in specific areas that require the publishing and searching of data.  They have the additional advantage of ease of use which allows non­development staff to  build and maintain enterprise applications, which results in the increase in application  development productivity [2].    8.0 Conclusion   NoSQL systems are not a replacement to relational systems (SQL) everywhere.  They have  specific advantages and use in situations where speed, flexibility, and scalability are required  when working with large amounts of non­uniform data.   And they offer programmer productivity  by greatly reducing the transformations and relationships required to persist data, and also by  providing relief from systems that support a strong schema in order to support ad hoc fields for  storing non uniform information [13].     Enterprises choosing a NoSQL system over SQL need to understand clearly the real  advantages that NoSQL systems offer for their business.  Furthermore, it is still the early days in  the production use of NoSQL systems, and there is always the possibility of running into the  rough edges typical of any new technology [2].  So while there are many cases where it  advantageous to use NoSQL systems today, it still may not  be a suitable option for most or all  situations.    References   [1]  D. McCreary and A. Kelly. Making Sense of NoSQL: A Guide for Managers and the Rest of  Us 2013.    14  
  15. 15.   A beginners introduction to NoSQL      [2]  P. J. Sadalage and M. Fowler. NoSQL Distilled: A Brief Guide to the Emerging World of  Polyglot Persistence 2013.    [3]  G. DeCandia, D. Hastorun, M. Jampani, G. Kakulapati, A. Lakshman, A. Pilchin, S.  Sivasubramanian, P. Vosshall, and W. Vogels. “Dynamo: amazon's highly available key­value  store,”  In Proceedings of twenty­first ACM SIGOPS symposium on Operating systems  principles (SOSP '07), 2007, pp. 205­220. DOI=10.1145/1294261.1294281  http://doi.acm.org.ezproxy.stthomas.edu/10.1145/1294261.1294281    [4]  Neo4j. Get Neo4J, your graph database. [Online]. Available:  http://www.neo4j.org.    [5]  A. Lakshman and P. Malik. “Cassandra: a decentralized structured storage system.”  SIGOPS Oper. Syst. Rev. 44, 2, pp. 5­40, April 2010. DOI=10.1145/1773912.1773922  http://doi.acm.org.ezproxy.stthomas.edu/10.1145/1773912.1773922    [6]  CouchDB. A Database for the Web. [Online]. Available: http://couchdb.apache.org.    [7]  S. Uzayr, “A Beginner’s Guide to NoSQL.” Software Developer’s Journal, June 2013. [Online].  Available: http://www.codeproject.com/Articles/630103/A­Beginners­Guide­to­NoSQL    [8]  J. Kelly. “Hadoop­NoSQL Software and Services Market Forecast 2012­2017.” September  2013. [Online]. Available:  http://wikibon.org/wiki/v/Hadoop­NoSQL_Software_and_Services_Market_Forecast_2012­2017.    [9]  B. Woo. “Combating the Big Data skills shortage.” Forbes, January 2013. [Online]. Available:  http://www.forbes.com/sites/bwoo/2013/01/18/combating­the­big­data­skills­shortage.    [10] T. J. Hampton. “NoSQL Market Snapshot: Past, Present, and Future,” siliconAngle, October  2013. [Online]. Available:  http://siliconangle.com/blog/2013/10/15/nosql­market­snapshot­past­present­and­future.    [11]  FoundationDB. “The Future of NoSQL.” [Online]. Available:  https://foundationdb.com/white­papers/future­of­nosql.    [12]  S. Pimental. “The Return of ACID in the Design of NoSQL Databases.” Methods & Tools,  May 2013. [Online]. Available: http://www.methodsandtools.com/archive/acidnosqldatabase.php.    [13]  J. Dash. “RDBMS vs. NoSQL: How do you pick?” ZDNet, September 2014. [Online].  Available: http://www.zdnet.com/rdbms­vs­nosql­how­do­you­pick­7000020803.    [14]  MongoDB, NoSQL Databases Explained. [Online]. Available:  http://www.mongodb.com/nosql­explained.    15