NoSQL is not about performance, scaling, dropping ACID or hating sQL, it is about choice.
Categories of NoSQL:
- key-value
- column oriented
- document based
- tabular
- graph
- xml/object db
New challenges
- cloud
- replication
- data explosion (big data)
- globally distributed systems
- specialised requirements
For this we need new solutions (nosql)
CAP Theorem
- Consistency
- Availabilty
- Partition tolerance
Choose two (or less)
My personal hunt for a multi purpose nosql db
- Should fit most mid size projects
- document store
- arbitrary queries
- cross table relationships
- Transactional integrity, ACID, optional
- replication/clustering
FoundationDB
Got bought by Apple and killed
MarkLogic
Highend expensive solution. higly professional, feature complete, saved Oama Care
ArangoDB
A multi model database:
- JSON
- Key Value
- Graph database
- models can be combined
Foxx framework
- implement you own rest micro services directly in javascript inside arango db
- batteries included, job queue
AQL
- declarative human readable DSL for queries
- Query both documents and graphs
- ACID Suppport
- Easy to understand if you know sql. (Now a code sample)
Clustering, replication, sharding
- Agency (cluster control via raft consensus protocol)
- synchronous/async replication with automatic failover
Benchmarks
Lots of hard to read images showing that Arango is quite fast
Python bindings
Hard to read again, but apparently you can treat a Arango document a bit like a dict.
Misc
- Current version 3.0
- good documentation
- regular updates
- good community support.
- supported by ArangoDB Gmbh in Cologne (\o/)