Designing Data-Intensive Applications The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
目录
可靠性、可伸展性、可维护性
数据模型与查询语言
- schema更新:
- 关系SQL:~ 静态语言
- NoSQL:动态类型语言
- Document型:MongoDB的BSON --> 整个重写替换/部分更新?--> 增量快照?
- grouping related data --> locality
- Spanner的“嵌套表”
- Oracle的“多表索引聚类表”
- 文档型与关系型的融合:RethinkDB(列向)--> 关系-like joins?
- MongoDB 2.2+ 聚集管道,声明式的map-reduce
- 图
- 属性图:Neo4j、titan、InfiniteGraph
- triple-store:Datomic、AllegroGraph
- 3' 声明式语言:Cypher,SPARQL(基于RDF),Datalog(Prolog/LISP的变体,学术型)
- vs CODASYL(网络模型)
存储与检索
- log --> segments with hash index --> compact去重
- Range查询不够高效
- SSTable --> memtable(key-