Designing Data-Intensive Applications – Chapter 2: Data Models and Query Languages

Relational DB:  MS SQL, MySQL, IBM DB2, PostgreSQL, SQLite etc.  Document DB:  Cassandra, HBase, Google Spanner, RethinkDB, MongoDB etc.  Graph DB: Neo4j,Titan,InfiniteGraph,AllegroGraph,Cypher,SPARQL,Gremlin,Pregel Data Models:  Not only on how the software is written, but also on how we think about the problem that we are solving. Each layer hides the complexity of the layers below it…

Designing Data-Intensive Applications – Chapter 1: Reliable, Scalable, and Maintainable Applications

Reliability: continuing to work correctly, even when things go wrong. Aka. fault-tolerant or resilient. Fault vs. failure (fault means one component failed), design system that able tolerance the fault to prevent failure;  Hardware Faults: Redundancy is  the key;  Software Errors: could be more troublesome; make assumptions and interactions carefully.  Human Errors: Design to minimize chances…

Designing Data Intensive Applications – Chapter 3: Storage and Retrieval

(If you keep things tidily ordered, you’re just too lazy to go searching.) —German proverb DB needs to do two things:  when you give it some data, it should store the data, and; when you ask it again later, it should give the data back to you. How we can store the data that we’re…