作者
朱建平,TEG/云架构平台部/块与表格存储中心副总监。08年加入腾讯后,承担过对象存储、键值存储,先后负责过KV存储-TSSD、对象存储-TFS等多个存储平台。
NoSQL 技术和行业背景
NoSQL 是对不同于传统关系型数据库的一个统称,提出 NoSQL 的初衷是针对某些场景简化关系型数据库的设计,更容易水平扩展存储和计算,更侧重于实现高并发、高可用和高伸缩性。
NoSQL vs 关系型数据库
其实早几年大家看两者的区别是清晰的,关系型数据库就是用 SQL 语句操作,具有行列结构和预定义 scheme 的二维表;NoSQL 是 Key-Value 存储,它是一个分布式的 Hash Map 的存储。但最近几年却有些不清晰了?主要是出现 NoSQL 的部分产品也开始增强在SQL的接口和事务等方面的能力,比如 Cassandra 支持 CQL,DynamoDB 支持 PartiQL,InfluxDB 也支持 InfuxQL 等。这里我的看法是,NoSQL vs 关系型数据库的关键差异:关系型数据库具有强大的 ACID 事务、复杂 SQL 检索、数据完整性约束等能力,这给它带来很好的易用性,但同时也是它实现高并发、高可用和高伸缩性的束缚;NoSQL 在工程实现上做了个取舍平衡,弱化甚至舍弃了在跨分区事务、分布式JOIN等维度的能力,增强其在高并发、高可用和高伸缩性方面的能力。
多模型 NoSQL 的数据模型
多模型 NoSQL 中的多模型是指这里包括多个数据模型:键值模型 Key-Value、宽表模型 Wide-column、文档模型 Document、时序模型 Time-series、图模型 Graph 和内存模型 in-memory 等。我们可以简单理解,Key-Value 是个哈希表,Wide-column 是个多维的哈希表即 Key-Key-Value 结构,文档 Document 是类似于 Json 结构的一个嵌套树结构,Graph 是以顶点和边组成的复杂图结构,Time-series 是按时间有序的一个检索表。
数据模型使用和发展可以从受欢迎程度和增长速度两个指标来看。受欢迎程度反映着应用推广的累积效应,排名前三的依次为 文档>键值>宽表;增长速度代表着未来需求的反应,排名前三依次 时序>键值>图,其中时序和图得益于物联网LoT以及实时计算等方面需求目前增长较为迅速,国外 NoSQL 的一些创业公司,近期较多集中在时序和图存储相关领域。
NoSQL 存储领域的业界玩家
主要分为三类:垂直领域的开源社区、多模型 NoSQL 公司 和公有云厂商。
垂直领域的开源社区,包括键值存储领域的 Redis,文档存储的 MongoDB,时序存储领域的 InfluxDB、图存储的 Neo4j 等,这些公司都是从垂直开源社区多年的竞争中突围出来的赢家,掌握了垂直领域的生态和接口的标准,基于公有云开展支持多云的企业服务。
多模型NoSQL公司,如YugabyteDB、Aerospike等,虽然也是开源,也是基于公有云开展支持多云的企业服务,但并不掌握垂直领域生态和接口标准,更多地兼容Redis、Cassandra、PG(PostgreSQL)等接口标准去融入已有的生态。
公有云厂商,如微软 Azure CosmosDB、亚马逊 AWS DynamoDB 等,提供了云原生的托管存储服务,在接口上采用自定义或者直接兼容开源社区的 Redis 和 Cassandra 等垂直领域的接口。
而我们的 NoSQL 属于这里的第三类玩家。
据市场公开数据显示,最近几年这三类厂商都有比较好的市场增速,但也存在着垂直领