目录
多模数据库定义
多模数据库是能够支持处理多种数据模式混合的数据库(例如关系、KV、文档、关系、 图、时序等)。多模型(Multi-Model)一词于2012年被 Luca Garulli 第一次提出,是一种可以在多个模型中存储和查询数据的数据库,为异构数据提供了较好的解决方案。
多模数据库拓展路径
数据库扩展原有模型的路径主要有四种:新存储方式+新数据模型、原存储方式+新数据模型、新接口+原存储模型、原存储模型。
第一种的典型代表是支持XML的数据库,它们使用原生XML方法来高效地存储和查询;
第二种的典型代表是文档数据库,通过采用特殊的边集合来扩展图结构中的边信息,例如Arango DB和MongoDB;
第三种在原关系型存储层上搭建了新的一层,采用相同的方式存储不同类型数据,但是增加了对新数据类型的增删查改支持;
第四种即将所有的数据结构简化为Key-Value形式存储。多模数据库的发展时间较短,当今市场上数据库对多模的支持程度不同,在数据模型、索引、多模查询优化策略等方面的能力参差不齐。
多模数据库(典型)扩展路径

多模数据库劣势
首先,对于混合了多种数据库的多模数据库,缺 乏一个统一的访问接口。比如微软基于Azure云的Cosmos DB,包含了关系型的SQL Server,文 档型的MongoDB,列簇式的Cassandra等各种模型的存储,但它们都只能用各自对应的API进 行访问,不能够利用统一查询语言进行查询,这造成“数据孤岛”现象。
其次,对于基于扩展的 多模数据库,虽然能够支持统一查询接口,但往往查询性能不够理想。比如基于文档型的多模 数据库ArangoDB,虽然能够利用统一查询语言AQL同时查询文档和遍历图数据,但性能往往 不理想。 这是因为利用文档的形式实现图模型需要通过多文档进行连接,当图遍历的深度加 大,查询将非常耗时。 基于上述两个缺陷,我们认为未来的多模数据库应该是一种原生支持各 种数据模型,有着统一访问接口,能自动化管理各模型的数据转化,模式进化且避免数据冗余 的新型数据库系统。
多模数据库评测
对于多模数据库,可以处理多种数据类型,则需要综合不同数据类型对应的基准测试结果,甚至需要设计同时访问多种数据类型的混合查询,进行评测。




