Resident good: NoSQL

Lyubomir Filipov  *  TarnovoConf 2015  *  @FilipovG

Who am I?

Lyubomir Filipov
 

PHP Dev
 

Enthusiast

NoSQL

History

1998

2009

Strozzi NoSQL

Johan Oskarsson

NoSQL

This all happened

  • Not using relational model
     
  • Well-clustered
     
  • Open source
     
  • Schemaless
     

Too many relations

Main types

  • Key-Value databases
     
  • Document databases
     
  • Graph databases
     
  • Column-Family databases

Key-Value databases

  • Based on “key-value”
  • Well-clustered
  • Speed
  • Indexes
  • Examples: Riak, Redis, Berkeley DB, Hamster DB

Key-Value databases

Oracle Riak
Database instance Riak cluster
table bucket
row Key-value
rowid key

Key-Value databases

Key-Value databases

                     Suitable Use Cases:

  • Sessions
  • User settings
  • E-commerce shopping carts

Key-Value databases

                      When Not to Use:

  • Relations among data
  • Multioperation Transactions
  • Query by data

Key-Value databases

Document databases

  • Document-based
  • Large amount of data per document
  • No transactions
  • Examples: MongoDB, CouchDB, Terrastore, OrientDB, RavenDB

Document databases

Oracle MongoDB
Database instance MongoDB instance
schema database
table collection
row document
rowid _id
join DBRef

Document databases

Document databases

                               Suitable Use Cases:

  • Logs
  • Comments, CMS
  • Data analysis
  • E-commerce

Document databases

       When Not to Use:

  • Operations between aggregates
  • Queries against Varying Aggregate Structure

Document databases

Column-Family databases

  • Key and family of values
  • Indexes
  • No transactions
  • Examples: Cassandra, Hbase, Amazon Simple DB

Column-Family databases

RDBMS Cassandra
Database instance cluster
database keyspace
table Column family
row row
column(same for all rows) column(can be different per row)

Column-Family databases

Column-Family databases

                                Suitable Use Cases:

  • Logs
  • CMS
  • Counters
  • Expiring usage

Column-Family databases

                             When Not to Use:

  • Aggregate functions
  • Prototypes

Column-Family databases

Graph databases

  • Complicated relations
  • Indexes
  • Transactions
  • Examples: Neo4j, OrientDB, FlockDB

Graph databases

                        Suitable Use Cases:

  • Connected Data
  • Marketing
  • Location-Based Services

Graph databases

                 When Not to Use:

  • Update all or a subset of entities

Graph databases

Polyglot Persistence

Polyglot Persistence

Question

Brewer's theorem

Brewer's theorem

DB-Engines Ranking

More..

Thanks for watching

Resident good: NoSQL

By Lyubomir Filipov

Resident good: NoSQL

TarnovoConf 2015

  • 2,201