➤ Database Administrator
➤ Oracle ACE Director (2016)
➤ 10g/11g and R12 OCP
➤ Founding Member and Vice President of TROUG
➤ Co-author of Expert Oracle Enterprise Manager 12c
➤ Blogger (since 2008) gokhanatil.com
➤ Twitter: @gokhanatil
WHAT IS NOSQL DATABASE?
➤ non Relational databases
➤ Not Only SQL (SQL is not mandatory)
➤ Existed before relational databases!
➤ NoSQL name is obtained after the web 2.0 wave
(Amazon, Facebook, Google)
➤ Schema-less or Flexible schema
➤ Easy sharding (Horizontally Scalable)
➤ Simple API (for developers)
➤ BASE instead of ACID
➤ Atomicity: All or Nothing
➤ Consistency: The
constraints won't be
➤ Isolation: No dirty reads
➤ Durability: Survive system
➤ Basically Available: The
servers are available but
the data may be stale
➤ Soft state: State of the
system may change over
time, even without input
➤ Eventual Consistency: The
system will become
consistent over time
➤ Key/Value (KV) Store
➤ Document Store
➤ (Wide) Column Family
➤ Graph Databases
KEY/VALUE (KV) STORE
➤ Collection of Key/Value pairs
➤ Inspired by Amazon's DynamoDB (now supports documents)
➤ Redis, Oracle's Berkeley DB * check my blog post
➤ Designed to handle high load
➤ In memory (cache systems)
➤ Similar to Key/Value store but value is a JSON or BSON
➤ Inspired by Lotus Notes
➤ MongoDB, CouchDB
➤ Rows do not need to contain the same columns
➤ Inspired by Google BigTable
➤ Cassandra, HBase
➤ Nodes are the main data elements
➤ Nodes are connected to other nodes via relationships
➤ Neo4j, InﬁniteGraph
➤ Supports ACID
SHOULD I USE SQL (RDBMS)
OR NOSQL DATABASE?
1. Do you want to use dummy databases? No constraints, No stored
procedures, and all business rules on application layer?
2. Don't you really need ACID support?
3. Do you prefer schema-less structures? What about data modelling,
normalization, ETL processes, BI reports?
4. Are you sure that the feature you need is only available on NoSQL
5. Scalability is important but are you ready for complex and distributed
6. Do you have required DBA resources to manage NoSQL?
7. Did you do performance tests on your NoSQL solution and compare
with other solutions?