3. Why so relational ?
• Store / Load interface
• Simple , beautiful , flexible (efficiently enough
supports many usecases - almost)
• 5 comammandments to make life easier (5NF)
– Ayende - compression
• Integration vs Application database (SOA)
– agreed (relational) model makes DB easy target to
misuse by other apps
4. The ugly
• Impedance mismatch (well …)
• “Don’t scale” (well …) –
Google, Facebook, Linkedin,..
– Vertical / horizontal
vs
– Shared disk (in cluster)
• Don’t capture the way data are accessed (UI, BL
analogy)
5. Welcome to the world of
Polyglot persistence
• Document stores
CouchDB, MongoDB, RavenDB, …
• Key-value stores
• Column Family stores
• Graph stores
Neo4J, Infinite Graph, OrientDB, FlockDB,…
8. Object graphs that respect rules
of concurrent access
• Objects can often be edited as a group
– Coarse-Grained Lock [PoEAA]
(Fowler 2002)
Consistency aplied to groups Object graph = intent
Impedance mismatch !!
9. Aggregate [DDD]
• Consistency boundaries (ACID)
• Relational databases are aggregate-ignorant
• Document database to RESCUE!
• 1 IO OP = Sharding (sharding function ie. geoloc,
• vip customers,)
Effective Aggregate Design [http://dddcommunity.org/library/vernon_2011]