本文写于 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?

  1. 丰富的数据模型
    • K-V
    • Document
    • Table
    • Graph
    • Object
    • Time Series
  2. schema-less
    • 不需要提前定义
    • 不需要严格一致(宽表/稀疏)
  3. 分布式
    • auto sharding and replication
    • Scale out
    • HA
  4. 高性能
    • 索引结构
      • LSM
      • Hash
    • 放弃强一致性

本文由 arganzheng 创作,采用 CC BY 4.0 许可协议。在保留原文作者、署名以及完整原文链接(https://arganzheng.life/data-models.html)的前提下,欢迎各种形式的转载、翻译或商业引用。


COMMENTS

评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。

×