What is NoSQL?
NoSQL is a non-relational DB that allows for horizontal scaling. Distributed system, must understand CAP therom.
Used at Google, Facebook, Mozillia
Big Data Applications
Horizontal Scale - Add Nodes
NoSQL was coined by Carlo Strozzi in the year 1998
Classical RDBMS Rules
Atomic: All or Nothing
Consistent: Only Valid Data
Isolated: Transactions Don't Affect Each Other
Durable: Data is Written on Submission
CAP Theorem
Consistency - This means that the data in the database remains consistent after the execution of an operation. For example after an update operation all clients see the same data.
Availability - This means that the system is always on (service guarantee availability), no downtime.
Partition Tolerance - This means that the system continues to function even the communication among the servers is unreliable, i.e. the servers may be partitioned into multiple groups that cannot communicate with one another.
You can only have 2!
BASE
Basically Available
Soft state
Eventual consistency
A BASE system gives up on consistency.
Basically Available indicates that the system does guarantee availability, in terms of the CAP theorem.
Soft state indicates that the state of the system may change over time, even without input. This is because of the eventual consistency model
Eventual consistency indicates that the system will become consistent over time, given that the system doesn't receive input during that time.
NoSQL Pro v. Con
Pros
Cons
High Scalability
No Standardization
Distributed Computing
Limited Query Capabilities
Lower Cost
Eventually Consistent
Schema Flexibility
No Complicated Relationships
Column (Family) Database
Apache HBase, Hypertable, Cassandra
Document Based
MongoDB, CouchDB
Graph
AllegroGraph, DEX, Neo4j
Key-Value Stores
Riak, memcached, BigTable
NoSQL Security?
Security is not the Goal