Introduction to NoSQL Database Mohammad Al Ghanem Senior Software Engineer
Outline  Introduction To NoSQL.  Web Application Data growth.  Characteristic of NoSQL.  ACID.  BASE.  CAP Theory.  Major NoSQL Types.  Developers Viewpoint.  Look at Queries syntax.  NoSQL Shells.  Summary.  Questions.
Introduction to NoSQL  Stands for Not Only SQL.  The idea of NoSQL founded in 1998 with term lightweightSchemaLess by Carlo Strozzi.  Open source database.  NoSQL will be the future database.  Very compatible with distributed systems.  Lower cost.  High performance database.  Founded to handle huge data space.  Used by Facebook , Google , Wikipedia …
Increasing Web Application Data.
Characteristic of NoSQL  Large data volumes.  Scalable replication and distribution (Horizontal scaling).  Queries need to return answers quickly.  Asynchronous Inserts & Updates.  Schema-less.  Designed to support Caching without 3-rd party tools.  ACID transaction properties are not needed.  BASE here.  CAP Theorem.  No Joins statement.  No complicated Relationships  Less administration time(less cost).
ACID  Atomic – All transaction completes (commit) or none of it completes.  Consistent – Consistency is defined in terms of constraints.  Isolated – The transaction will behave as if it is the only operation being performed upon the database  Durable – Upon completion of the transaction, the operation will not be reversed.
BASE  Basically Available.  Soft state(expiration of information).  Eventually Consistent.  Weak consistency.  Availability first.  Simpler and faster.
CAP Theory
Major NoSQL Types  Key-Value Store.  Hashing.  Basic get/put/delete.  Crazy fast because there is key to get set of values.  Document Store.  JSON,XML … document structured.  No Join.(handle it in your code).  Column Database.  Each storage block contains data from only one column.  Reduce access and scanning time.  Still use tables without joins statements.  Better for data analytics.
Developers Viewpoint ! SQL is better ?  Natural reaction.  Everyone's experience.  Fear of change. NoSQL Will :  Simplify your data model.  Easy to install.  your bugs will be fewer and easier to find.  Lower administration / less DBAs.  performance is going to be awesome.  Scale will be much simpler.  Rapid Development.  Large binary objects.  Graphs/relationships.
Look at Queries syntax  db.inventory.find( { type: "snacks" } );  db.inventory.find( { type: 'food', price: { $lt: 9.95 } } );  db.inventory.find( { producer: { company: 'ABC123', address: '123 Street' } } );  db.inventory.find( { memos: { $elemMatch: { memo : 'on time', by: 'shipping' } } } );  db.inventory.insert( { _id: 10, type: "misc", item: "card", qty: 15 } );  db.users.remove( { status: "D" } )  db.users.insert( { name: "sue", age: 26, status: "A" } )  db.users.update( { age: { $gt: 18 } }, { $set: { status: "A" } }, { multi: true } )  db.inventory.save( { type: "book", item: "notebook", qty: 40 } )
What's about functions ? var myCursor = db.inventory.find( { type: 'food' } ); myCursor.forEach(printjson); var myCursor = db.inventory.find( { type: 'food' } ); var documentArray = myCursor.toArray(); var myDocument = documentArray[3]; Query Analysis db.inventory.find( { type: 'food' } ).explain() Output Here
Summary NoSQL :  Handle huge data.  High availability with small cost.  More data redundancy.  High performance.  Less administration time.  Less standards. SQL :  Good to solve ACID problems.  Expensive.  Less data redundancy.  Increasing availability mean increasing cost.  More standards.  More administration. Pick the right tool for your job !
Thanks for your attention  Questions ?

Introduction to NoSQL Database

  • 1.
    Introduction to NoSQLDatabase Mohammad Al Ghanem Senior Software Engineer
  • 2.
    Outline  Introduction ToNoSQL.  Web Application Data growth.  Characteristic of NoSQL.  ACID.  BASE.  CAP Theory.  Major NoSQL Types.  Developers Viewpoint.  Look at Queries syntax.  NoSQL Shells.  Summary.  Questions.
  • 3.
    Introduction to NoSQL Stands for Not Only SQL.  The idea of NoSQL founded in 1998 with term lightweightSchemaLess by Carlo Strozzi.  Open source database.  NoSQL will be the future database.  Very compatible with distributed systems.  Lower cost.  High performance database.  Founded to handle huge data space.  Used by Facebook , Google , Wikipedia …
  • 4.
  • 5.
    Characteristic of NoSQL Large data volumes.  Scalable replication and distribution (Horizontal scaling).  Queries need to return answers quickly.  Asynchronous Inserts & Updates.  Schema-less.  Designed to support Caching without 3-rd party tools.  ACID transaction properties are not needed.  BASE here.  CAP Theorem.  No Joins statement.  No complicated Relationships  Less administration time(less cost).
  • 6.
    ACID  Atomic –All transaction completes (commit) or none of it completes.  Consistent – Consistency is defined in terms of constraints.  Isolated – The transaction will behave as if it is the only operation being performed upon the database  Durable – Upon completion of the transaction, the operation will not be reversed.
  • 7.
    BASE  Basically Available. Soft state(expiration of information).  Eventually Consistent.  Weak consistency.  Availability first.  Simpler and faster.
  • 8.
  • 9.
    Major NoSQL Types Key-Value Store.  Hashing.  Basic get/put/delete.  Crazy fast because there is key to get set of values.  Document Store.  JSON,XML … document structured.  No Join.(handle it in your code).  Column Database.  Each storage block contains data from only one column.  Reduce access and scanning time.  Still use tables without joins statements.  Better for data analytics.
  • 10.
    Developers Viewpoint ! SQLis better ?  Natural reaction.  Everyone's experience.  Fear of change. NoSQL Will :  Simplify your data model.  Easy to install.  your bugs will be fewer and easier to find.  Lower administration / less DBAs.  performance is going to be awesome.  Scale will be much simpler.  Rapid Development.  Large binary objects.  Graphs/relationships.
  • 11.
    Look at Queriessyntax  db.inventory.find( { type: "snacks" } );  db.inventory.find( { type: 'food', price: { $lt: 9.95 } } );  db.inventory.find( { producer: { company: 'ABC123', address: '123 Street' } } );  db.inventory.find( { memos: { $elemMatch: { memo : 'on time', by: 'shipping' } } } );  db.inventory.insert( { _id: 10, type: "misc", item: "card", qty: 15 } );  db.users.remove( { status: "D" } )  db.users.insert( { name: "sue", age: 26, status: "A" } )  db.users.update( { age: { $gt: 18 } }, { $set: { status: "A" } }, { multi: true } )  db.inventory.save( { type: "book", item: "notebook", qty: 40 } )
  • 12.
    What's about functions? var myCursor = db.inventory.find( { type: 'food' } ); myCursor.forEach(printjson); var myCursor = db.inventory.find( { type: 'food' } ); var documentArray = myCursor.toArray(); var myDocument = documentArray[3]; Query Analysis db.inventory.find( { type: 'food' } ).explain() Output Here
  • 13.
    Summary NoSQL :  Handlehuge data.  High availability with small cost.  More data redundancy.  High performance.  Less administration time.  Less standards. SQL :  Good to solve ACID problems.  Expensive.  Less data redundancy.  Increasing availability mean increasing cost.  More standards.  More administration. Pick the right tool for your job !
  • 14.
    Thanks for yourattention  Questions ?

Editor's Notes

  • #8 Soft state : Data may be time-dependent on user interaction with possible expiration after a period of time. The data must be updated or accessed to remain relevant in the system.