- Polyglot Persistence is a “Design Pattern” that allows different functional components of an Integrated System to be present in different kinds of data-stores, each with
- Different CAP (Consistency, Availability and Partitioning) characteristics
- Different Scalability requirements
- Different Read and Write Performance characteristics
- Different Administrative characteristics
- The following is a sample of how different databases may be used for different applications in an E-retailers application
|User Session||Redis||In memory database
Used for moderate amounts of fast changing data
|Financial Data||RDBMS||Reliability, Transactions, Interoperability, Explainable Procedures|
|Shopping Cart||Riak||Emphasis on availability. Even seconds of downtime count.
Must support distributed access
|Recommendations||Neo4J||A Graph database|
|Product Catalog||MongoDB||Very good for Indexing
Can tolerate moderate amount of writes as well
|Reporting||RDBMS||Infrastructure is very good, Sophisticated data model,
|Cassandra||User Activity Logs||Allows a large amount of writes at the same time.
HBase is a good alternative
|Cassandra||Web Analytics||Must read huge amounts of data one-by-one.
Hive is a good alternative