| |
| |
Preface | |
| |
| |
| |
Understand | |
| |
| |
| |
Why NoSQL? | |
| |
| |
| |
The Value of Relational Databases | |
| |
| |
| |
Getting at Persistent Data | |
| |
| |
| |
Concurrency | |
| |
| |
| |
Integration | |
| |
| |
| |
A (Mostly) Standard Model | |
| |
| |
| |
Impedance Mismatch | |
| |
| |
| |
Application and Integration Databases | |
| |
| |
| |
Attack of the Clusters | |
| |
| |
| |
The Emergence of NoSQL | |
| |
| |
| |
Key Points | |
| |
| |
| |
Aggregate Data Models | |
| |
| |
| |
Aggregates | |
| |
| |
| |
Example of Relations and Aggregates | |
| |
| |
| |
Consequences of Aggregate Orientation | |
| |
| |
| |
Key-Value and Document Data Models | |
| |
| |
| |
Column-Family Stores | |
| |
| |
| |
Summarizing Aggregate-Oriented Databases | |
| |
| |
| |
Further Reading | |
| |
| |
| |
Key Points | |
| |
| |
| |
More Details on Data Models | |
| |
| |
| |
Relationships | |
| |
| |
| |
Graph Databases | |
| |
| |
| |
Schemaless Databases | |
| |
| |
| |
Materialized Views | |
| |
| |
| |
Modeling for Data Access | |
| |
| |
| |
Key Points | |
| |
| |
| |
Distribution Models | |
| |
| |
| |
Single Server | |
| |
| |
| |
Sharding | |
| |
| |
| |
Master-Slave Replication | |
| |
| |
| |
Peer-to-Peer Replication | |
| |
| |
| |
Combining Sharding and Replication | |
| |
| |
| |
Key Points | |
| |
| |
| |
Consistency | |
| |
| |
| |
Update Consistency | |
| |
| |
| |
Read Consistency | |
| |
| |
| |
Relaxing Consistency | |
| |
| |
| |
The CAP Theorem | |
| |
| |
| |
Relaxing Durability | |
| |
| |
| |
Quorums | |
| |
| |
| |
Further Reading | |
| |
| |
| |
Key Points | |
| |
| |
| |
Version Stamps | |
| |
| |
| |
Business and System Transactions | |
| |
| |
| |
Version Stamps on Multiple Nodes | |
| |
| |
| |
Key Points | |
| |
| |
| |
Map-Reduce | |
| |
| |
| |
Basic Map-Reduce | |
| |
| |
| |
Partitioning and Combining | |
| |
| |
| |
Composing Map-Reduce Calculations | |
| |
| |
| |
A Two Stage Map-Reduce Example | |
| |
| |
| |
Incremental Map-Reduce | |
| |
| |
| |
Further Reading | |
| |
| |
| |
Key Points | |
| |
| |
| |
Implement | |
| |
| |
| |
Key-Value Databases | |
| |
| |
| |
What Is a Key-Value Store | |
| |
| |
| |
Key-Value Store Features | |
| |
| |
| |
Consistency | |
| |
| |
| |
Transactions | |
| |
| |
| |
Query Features | |
| |
| |
| |
Structure of Data | |
| |
| |
| |
Scaling | |
| |
| |
| |
Suitable Use Cases | |
| |
| |
| |
Storing Session Information | |
| |
| |
| |
User Profiles, Preferences | |
| |
| |
| |
Shopping Cart Data | |
| |
| |
| |
When Not to Use | |
| |
| |
| |
Relationships among Data | |
| |
| |
| |
Multioperation Transactions | |
| |
| |
| |
Query by Data | |
| |
| |
| |
Operations by Sets | |
| |
| |
| |
Document Databases | |
| |
| |
| |
What Is a Document Database? | |
| |
| |
| |
Features | |
| |
| |
| |
Consistency | |
| |
| |
| |
Transactions | |
| |
| |
| |
Availability | |
| |
| |
| |
Query Features | |
| |
| |
| |
Scaling | |
| |
| |
| |
Suitable Use Cases | |
| |
| |
| |
Event Logging | |
| |
| |
| |
Content Management Systems, Blogging Platforms | |
| |
| |
| |
Web Analytics or Real-Time Analytics | |
| |
| |
| |
E-Commerce Applications | |
| |
| |
| |
When Not to Use | |
| |
| |
| |
Complex Transactions Spanning Different Operations | |
| |
| |
| |
Queries against Varying Aggregate Structure | |
| |
| |
| |
Column-Family Stores | |
| |
| |
| |
What Is a Column-Family Data Store? | |
| |
| |
| |
Features | |
| |
| |
| |
Consistency | |
| |
| |
| |
Transactions | |
| |
| |
| |
Availability | |
| |
| |
| |
Query Features | |
| |
| |
| |
Scaling | |
| |
| |
| |
Suitable Use Cases | |
| |
| |
| |
Event Logging | |
| |
| |
| |
Content Management Systems, Blogging Platforms | |
| |
| |
| |
Counters | |
| |
| |
| |
Expiring Usage | |
| |
| |
| |
When Not to Use | |
| |
| |
| |
Graph Databases | |
| |
| |
| |
What Is a Graph Database? | |
| |
| |
| |
Features | |
| |
| |
| |
Consistency | |
| |
| |
| |
Transactions | |
| |
| |
| |
Availability | |
| |
| |
| |
Query Features | |
| |
| |
| |
Scaling | |
| |
| |
| |
Suitable Use Cases | |
| |
| |
| |
Connected Data | |
| |
| |
| |
Routing, Dispatch, and Location-Based Services | |
| |
| |
| |
Recommendation Engines | |
| |
| |
| |
When Not to Use | |
| |
| |
| |
Schema Migrations | |
| |
| |
| |
Schema Changes | |
| |
| |
| |
Schema Changes in RDBMS | |
| |
| |
| |
Migrations for Green Field Projects | |
| |
| |
| |
Migrations in Legacy Projects | |
| |
| |
| |
Schema Changes in a NoSQL Data Store | |
| |
| |
| |
Incremental Migration | |
| |
| |
| |
Migrations in Graph Databases | |
| |
| |
| |
Changing Aggregate Structure | |
| |
| |
| |
Further Reading | |
| |
| |
| |
Key Points | |
| |
| |
| |
Polyglot Persistence | |
| |
| |
| |
Disparate Data Storage Needs | |
| |
| |
| |
Polyglot Data Store Usage | |
| |
| |
| |
Service Usage over Direct Data Store Usage | |
| |
| |
| |
Expanding for Better Functionality | |
| |
| |
| |
Choosing the Right Technology | |
| |
| |
| |
Enterprise Concerns with Polyglot Persistence | |
| |
| |
| |
Deployment Complexity | |
| |
| |
| |
Key Points | |
| |
| |
| |
Beyond NoSQL | |
| |
| |
| |
File Systems | |
| |
| |
| |
Event Sourcing | |
| |
| |
| |
Memory Image | |
| |
| |
| |
Version Control | |
| |
| |
| |
XML Databases | |
| |
| |
| |
Object Databases | |
| |
| |
| |
Key Points | |
| |
| |
| |
Choosing Your Database | |
| |
| |
| |
Programmer Productivity | |
| |
| |
| |
Data-Access Performance | |
| |
| |
| |
Sticking with the Default | |
| |
| |
| |
Hedging Your Bets | |
| |
| |
| |
Key Points | |
| |
| |
| |
Final Thoughts | |
| |
| |
Bibliography | |
| |
| |
Index | |