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