本文写于 9 年前(2017 年 3 月),部分内容可能已经过时。
数据模型维度
- Key-Value Stores
- Redis
- Riak(Bitcask)
- LevelDB
- RocksDB
- LMDB
- Aerospike(个人感觉这个更像是RDB)
- HyperLevelDB
- HyperDex: (Sorted)
- Column-family Stores
- HBase
- Cassandra
- Document-oriented Databases
- MongoDB
- ElasticSearch
- Tabular databases(RDB)
- MySQL
- Aerospike
- DynamoDB
- Graph Databases
- Neo4j
- Graph Engine (Microsoft)
- Titan => JanusGraph
- Cayley
- ArangoDB
- OrientDB
- Time Series Database(TSDB)
- Object-Oriented Databases
- ObjectivityDB
- Multi-Model Databases
- ArangoDB
- OrientDB
事实上,KV是所有模型的基础,其他的数据模型基本都是基于KV实现。
其他维度
- 底层数据结构
- LSM Tree
- B+ Tree
- Hash Tree
- 存储介质
- 内存
- 磁盘
- 部署方式
- 嵌入式
- 单机
- 分布式
- 事务
- CAP
- ACID
- 分布式方式
- master-slave
- peer-to-peer
Why NoSQL?
- 丰富的数据模型
- K-V
- Document
- Table
- Graph
- Object
- Time Series
- schema-less
- 不需要提前定义
- 不需要严格一致(宽表/稀疏)
- 分布式
- auto sharding and replication
- Scale out
- HA
- 高性能
- 索引结构
- LSM
- Hash
- 放弃强一致性
- 索引结构
本文由 arganzheng 创作,采用 CC BY 4.0 许可协议。在保留原文作者、署名以及完整原文链接(https://arganzheng.life/data-models.html)的前提下,欢迎各种形式的转载、翻译或商业引用。
COMMENTS
评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。