非关系型数据库有哪些:分类型选型参考
非关系型数据库有哪些,主流分为键值型、文档型、列存储型、图数据库四类,键值型适合高频简单读写,文档型适配半结构化JSON数据,列存储型偏向海量数据分析,图数据库处理节点关联查询;你做缓存、商品快照、日志存储、社交关系链时可以优先对应挑选,该体系不适合强事务、多表复杂关联查询的财务核心记账场景,这类场景更偏向关系型数据库。
非关系型数据库主流品类
键值数据库以简单键值对存储数据,查询速度较快,数据结构简单,没有复杂的表关联设计。Redis是这类里使用范围较广的产品,支持字符串、哈希、集合等多种数据结构,除基础存储外还能承担缓存、分布式锁、延时队列等工作,单机可以支撑较高的并发请求。Riak和Memcached也属于键值数据库,Memcached功能精简,只支持基础字符串,持久化能力偏弱,多用于纯缓存场景。
文档数据库把数据以文档单元存放,文档常用JSON、BSON格式,单条文档内部字段可以灵活增减,不需要提前定义固定表结构。MongoDB是文档数据库的代表,大量用于小程序后端、用户行为记录、内容管理系统,查询语法贴近对象操作,开发迭代速度更快。CouchDB同样属于文档数据库,内置版本控制能力,适合多终端离线同步数据的业务。
列存储数据库按列组织数据,同一列的数据连续存放,聚合统计、批量扫描的效率优于行式存储。Cassandra支持多节点横向扩展,容错能力较强,适合跨地域部署的海量时序数据写入。HBase依托Hadoop生态搭建,适合超大规模稀疏数据表存储,常配合大数据离线分析任务使用,写入吞吐表现稳定,随机查询的延迟会高于Redis。
图数据库专门存储实体与实体之间的关联关系,数据模型由节点、边、属性组成,擅长深度关联遍历。Neo4j是商用和开源领域普及率较高的图数据库,多用于知识图谱、风控链路、好友推荐计算。JanusGraph支持分布式集群,能承载更大规模的图数据,适合企业级复杂关系挖掘场景。
| 类型 | 代表产品 | 适合场景 | 短板 |
|---|---|---|---|
| 键值型 | Redis、Memcached | 缓存、计数、会话存储 | 复杂条件查询能力弱 |
| 文档型 | MongoDB、CouchDB | 内容存储、动态表单 | 跨文档事务支持有限 |
| 列存储型 | Cassandra、HBase | 时序日志、海量统计 | 单条查询延迟偏高 |
| 图数据库 | Neo4j、JanusGraph | 关系链路、知识图谱 | 数据扩容成本偏高 |
时序数据库属于非关系型数据库的细分分支,专门针对带时间戳的指标数据优化,InfluxDB、TDengine都归为此类,采集服务器指标、物联网传感数据时选择这类产品,压缩率和查询效率会优于通用数据库。
选型看访问模式。
读多写少、查询逻辑简单,优先Redis;业务字段经常变动、不需要统一表结构,优先MongoDB;持续不断写入海量时序指标,优先时序数据库;需要反复追溯多层关联关系,优先Neo4j。你不要单纯为了追求新技术就选用非关系型数据库,订单转账这类要求ACID强事务保障的业务,MySQL这类关系型数据库的稳定性会更稳妥。
CAP理论是分布式数据库选型的基础参考依据,分布式系统无法同时满足一致性、可用性、分区容错性三个特性,不同非关系型数据库在设计时会做出取舍,Cassandra偏向可用性与分区容错,Neo4j单机版本更侧重一致性,集群部署方案会改变它的特性倾向,你搭建集群前要确认业务能够接受的不一致窗口时长。
部署成本也要纳入判断。Redis单机部署上手门槛很低,小型项目直接可用;HBase、JanusGraph依赖配套组件,运维复杂度更高,需要配备熟悉大数据组件的人员维护,小型团队没有专职运维人员时,尽量避开重集群方案。
