每日数据库知识-多模数据库是什么?

257 阅读6分钟

每日数据库知识-多模数据库是什么?

多模数据库,让人容易联想到多模态大模型,所以我的第一印象是?多模数据库就是支持,图片,声音,视频等二进制的数据库。

实际上多模还没有这么先进,多模数据库指的是,支持如关系、KV、文档、关系、 图、时序等模式的数据库,可能支持多种存储引擎等。

为什么会有多模数据库的出现?有一句老话叫,天下大势,分久必合合久必分,技术领域也一样。曾经的关系数据库是通用的数据库,后来又出现了文档数据库,键值对数据库,图数据库,时序数据库等某一类的数据库,现在多模数据库的意图应该是把他们揉起来,尽量统一起来。

参考

多模数据库 - 墨天轮百科 (modb.pro)

摘要

多模数据库劣势

首先,对于混合了多种数据库的多模数据库,缺 乏一个统一的访问接口。比如微软基于Azure云的Cosmos DB,包含了关系型的SQL Server,文 档型的MongoDB,列簇式的Cassandra等各种模型的存储,但它们都只能用各自对应的API进 行访问,不能够利用统一查询语言进行查询,这造成“数据孤岛”现象。

其次,对于基于扩展的 多模数据库,虽然能够支持统一查询接口,但往往查询性能不够理想。比如基于文档型的多模 数据库ArangoDB,虽然能够利用统一查询语言AQL同时查询文档和遍历图数据,但性能往往 不理想。 这是因为利用文档的形式实现图模型需要通过多文档进行连接,当图遍历的深度加 大,查询将非常耗时。 基于上述两个缺陷,我们认为未来的多模数据库应该是一种原生支持各 种数据模型,有着统一访问接口,能自动化管理各模型的数据转化,模式进化且避免数据冗余的新型数据库系统。

多模数据库评测

对于多模数据库,可以处理多种数据类型,则需要综合不同数据类型对应的基准测试结果,甚至需要设计同时访问多种数据类型的混合查询,进行评测。

2 PolygonStore,一款“业务驱动”而生的 NoSQL 多模数据库产品蚂蚁具有丰富的业务生态,产生了海量的多样化的 - 掘金 (juejin.cn)

【摘要】

有些数据存到关系型数据库里很不方便,或者没法存到关系型数据库里,所以就有了支持多种模型的多模数据库

NOSQL的一般特点:

  • 不使用关系模型
  • 运行于多台服务器组成的集群上
  • 开源
  • 首先服务于 21 世纪早期的互联网产业
  • 无需预先定义表结构

关系型数据库诞生于上世纪 70 年代,ACID 和 SQL 是其最显著的特性,ACID 支持完整的事务语义,SQL 具有复杂的语义表达能力,适合 business-critical 的业务场景,例如 ERP、CRM、交易、记账 等。

NoSQL 数据库诞生于 2000 年后,BASE 和 schema-free 是其最显著的特性,具备极好的水平扩展性( 此时的关系型数据库还不具备水平扩展性,后来出现的 NewSQL 改变了这点,例如 Spanner、OceanBase,使得关系型数据库也具备了水平扩展性 )、及放松的一致性语义,其最大优点是灵活性,可以不用预先定义表结构(关系型数据库先定义表结构再写入数据),对应用开发友好。

应用开发者需要在“事务”和“易用性”之间纠结,或者基于“多边形架构”来满足各种数据的存储需求。例如开发一个电子商务应用,使用关系型数据库存放客户信息;使用文档数据库保存半结构化数据,例如商品历史信息;使用 KV 数据库存放购物车;图数据库存放高关联数据,例如商品推荐功能。

多边形架构带来了数据冗余、数据一致性问题、应用架构复杂性,及对应用开发者不直接感知的运维成本、存储成本、稳定性等问题。

2017 年,Gartner 对数据库未来的发展趋势做了预测,其中很重要的一项就是多模数据库,多模数据库是指在单个数据库产品中同时支持结构化和非结构化在内的多种数据模型。多模数据库能够简化应用存储架构,显著降低运维成本和存储成本。

业界多款多模数据库产品,架构实现上分为三类:

  • 多种接口访问一份数据:底层依赖同一个存储引擎,支持事务、二级索引、多级一致性 等特性,上层适配多种数据模型。本质是一份数据多种数据模型。
  • 多种存储港,内置数据的异步流动以支持多种应用需求,应用写入一份数据,异步生成其他存储格式,例如列存用于 AP,例如倒排索引用于全文检索。本质是多份存储格式的数据以支持多种应用场景,难点在于实时性和稳定性之间的权衡,数据存储成本也会大大增加。
  • 同时支持结构化、半结构化、非结构化的统一管理,适用于内容管理场景,例如金融影像平台。本质是多种存储引擎的统一管理,难点在于数据的一致性。

PolygonStore 基于 OBKV 构建存储能力。OBKV 基于 OceanBase 的存储引擎提供了存储能力和事务能力,并通过 API 的方式对外提供数据访问能力,无需通过 OceanBase 的 SQL 层。

文档模型,通过 JSON/BSON 格式存储数据,每个文档都由键值对组成。其中的值可以是简单的值,也可以是复杂的元素,例如列表和子文档。文档可以通过主键进行检索,也可以通过在内部健值上创建的索引进行检索,以提升检索的性能。

PolygonStore 基于 OBKV 的 JSON 数据类型支持文档模型,可以方便的使用文档模型对业务数据建模。PolygonStore 支持多种协议访问,包括 HTTP、HTTPS、MongoDB 原生协议,从而可以复用生态,减少应用接入成本。

PolygonStore 提供多语言 SDK,包括 Java、Python、Golang、PHP、Node.js,从而更好的服务于主站业务和小程序云业务。

Serverless

Serverless 正在成为一个新的基础设施,其提供了一种全新的计算模式——“来了就用,功能齐全,用完即走”,让开发人员关注代码运行而不需要管理任何基础设施。正如 《Serverless Architectures》中所述:基于 Serverless 技术,移动应用可以直接使用云端数据库 (e.g., Parse, Firebase),鉴权服务 (e.g., Auth0, AWS Cognito),从而避免自己开发这些功能,能够更加专注于业务本身。