In light of the CAP theorem, this talk will cover how to analyze your application’s data storage needs and choose a datastore that suits the needs of the application and handles the load on the system.
it is hard to decouple from it • The assumptions become littered throughout the system without you knowing • Don't make the assumption ◦ Choose later ◦ Isolate all code that talks to a datastore ◦ Expose hidden dependencies
absolutely must a. Demos ▪ Who cares? - Put the data anywhere b. Production deploy - need to store the data somewhere c. Use case that begs for a feature of one a database
basis • Do you need a specific feature? ◦ Transactions? • Read operations ◦ Do you need to read your writes? ◦ Do you need to perform some crazy INNER JOIN. • Write Operations ◦ Do you need ACID? ◦ Does it need to happen right now?
of the following use cases, choose which type of database(s) infrastructure would suit best. Remember to take into account lots of scenarios like: 1. Consistency 2. Speed 3. Availability 4. Failure
Auto parts. In this system there are Cars and Parts. A car has many parts and part can belong to many cars. I would like a web page that shows me a table of the different parts in a given car.
to write a payment processing API. At first, this API only needs to support transactions between two Chase customers, but someday they would like to support transactions between users of other banks as well.
a new web application. The main feature of the site is the user's dashboard, where they go to see news that is location aware and age demographic aware.
dependencies/assumptions are more clear • Choose based on absolute necessity ◦ Databases are not Javascript Frameworks - don't pick the newest/hottest one