nosql数据库有哪些:按类型快速选型
nosql数据库有哪些,主流分为文档型、键值型、列族型、图数据库四类,文档型适合存储结构灵活的业务数据,键值型主打高并发读写缓存场景,列族型适配海量时序、日志数据,图数据库专门处理节点关联查询;你做后台管理、用户资料存储优先选文档型,做商品缓存、会话存储优先选键值型,运维日志、监控指标用列族型,社交关系、知识图谱选图数据库,这套选型逻辑不适用于强事务、多表关联复杂查询的金融核心记账场景,这类场景更偏向关系型数据库。
nosql数据库:文档型
文档型nosql以JSON、BSON格式存储单条文档,单文档内部字段可以自由增减,不需要提前定义固定表结构,查询时可以直接读取整条文档,适合内容管理、用户画像、订单附属信息这类字段经常变动的业务。MongoDB是该类别里使用较多的产品,支持二级索引、分片集群,能够横向扩容承载大量数据;CouchDB支持多版本文档和离线同步,移动端、本地离线协同场景会用到它。
文档型数据库的查询能力介于键值库和关系库之间,单文档内查询效率较高,跨文档的联表查询性能会明显下降,设计数据模型时尽量把关联数据内嵌到同一个文档中。
nosql数据库:键值型
键值型nosql依靠唯一key读取value,value可以是字符串、二进制、序列化对象,读写链路很短,吞吐能力强,延迟偏低。Redis是典型代表,除基础键值读写外,自带哈希、集合、有序集合等多种数据结构,还支持持久化,大量项目用来做分布式缓存、分布式锁、限流计数;DynamoDB为云原生设计,自动分片,适合云上无运维的高并发业务。
只支持key精准查找,大范围过滤查询成本很高,不要用它做模糊检索、多条件筛选的主存储。
nosql数据库:列族型
列族型nosql把数据按行、列族组织,同一行下不同列族可以分开存储,读取时只加载需要的列,适合海量时序数据、日志、埋点数据的写入。Cassandra支持多数据中心部署,写入吞吐稳定;HBase依托Hadoop生态,适合离线大数据平台里的海量明细存储。
它的查询大多依赖行键,没有通用的二级索引,业务建模阶段就要提前规划好查询维度,后期调整查询路径成本很高。
nosql数据库:图数据库
图nosql以节点、边、属性存储数据,擅长遍历节点之间的关联关系,多层关联查询相比其他nosql和关系库优势明显。Neo4j是社区使用广泛的图数据库,支持Cypher查询语言,适合社交好友、推荐链路、风控团伙识别;JanusGraph面向大规模分布式场景,可以对接不同存储后端,支撑更大体量的图数据。
| 类型 | 代表产品 | 核心优势 | 典型业务 |
|---|---|---|---|
| 文档型 | MongoDB、CouchDB | 结构灵活,贴近JSON | 内容、用户资料 |
| 键值型 | Redis、DynamoDB | 读写快,延迟低 | 缓存、会话、计数 |
| 列族型 | HBase、Cassandra | 海量写入,横向扩展 | 日志、监控时序 |
| 图数据库 | Neo4j、JanusGraph | 关联遍历高效 | 关系图谱、风控 |
选型优先匹配查询模式,而不是优先看知名度。
你在业务里同时存在多种查询需求时,可以组合使用,比如Redis做缓存加速,MongoDB做主业务存储,Neo4j单独处理关系分析,不要试图只用一款nosql承载全部业务逻辑。
nosql普遍弱化跨记录事务,多数只支持单行或单文档事务,跨多条记录的强一致性事务实现难度更高,业务设计时尽量避免强事务依赖。
