大数跨境
0
0

JSON 漫谈: 从文档数据库过渡到融合数据库的必然性

JSON 漫谈: 从文档数据库过渡到融合数据库的必然性 甲骨文中国
2025-10-09
14
导读:全面支持 JSON 的融合数据库才是未来的发展方向,了解为何许多团队正从 MongoDB 迁至 Oracle。

JSON,全名 JavaScript Object Notation,简直是数据交换界的“轻量级潮牌”。它不仅长得简洁优雅(就像程序员梦寐以求的那种“代码即艺术”),还能让不同系统、语言之间无缝“聊天”,从前端到后端,简直无往不利。那么,JSON到底是个啥?让我们娓娓道来。


JSON作为一种轻量级的数据交换格式,凭借其简洁清晰的层次结构,深受开发人员的喜爱,不仅成为文档型数据的主要存储格式,还在各类网络应用间的数据传输中扮演着关键角色。它基于 ECMAScript 的子集,采用独立于编程语言的文本格式,无论是对于人类阅读编写,还是机器解析生成,都展现出了极高的友好度,有效提升了网络传输效率。


简单的来说,JSON以键值对和层次结构为核心,具有以下特点:

基于文本格式,独立于编程语言,易读易写

支持字符串、数字、布尔值、数组、对象等基础结构

是文档型数据的主流存储格式,广泛用于 API 交互、配置文件等场景


我们来看看一个JSON的实际例子(没错,眼尖的人已经看出来这是SQLcl工具支持MCP Server的一个配置文件):

JSON 和数据库


JSON格式除了被用于做数据交换和配置等用途,也被作为文档数据库(Document Database)的一种存储格式。文档数据库是一类 NoSQL 数据库,以文档形式存储半结构化数据,通常使用 JSON、BSON(Binary JSON) 或类似格式。常见的文档数据库包括MongoDB、Amazon DocumentDB、Couchbase 和 FerretDB 等等。这几种数据库都采用了JSON作为其存储方式,而 MongoDB 是其中的杰出代表。


MongoDB 选择以 JSON 的方式存储文档数据库,这种方式具有显著的优势。从开发角度来看,JSON 格式直观易懂,与 Web 开发中常用的格式一致,大大降低了开发者的学习成本。同时,MongoDB 无需预定义模式,每个文档可以有不同的字段和结构,这使得在开发过程中修改数据结构变得极为容易,非常契合敏捷开发以及需求频繁变动的场景,并且其文档模型与面向对象编程中的对象模型高度契合,能让应用程序代码的编写和维护更加轻松。


然而,MongoDB 通过 JSON 方式存储也存在一些弊端。由于 JSON 仅支持有限的基本数据类型,缺乏对日期时间和二进制数据的原生支持,在处理这类数据时往往需要额外的转换操作。并且,JSON 对象和属性没有固定长度,这会导致数据遍历速度变慢,检索文档所需的时间变长。此外,文档数据库中 JSON 文档的重复数据问题较为突出,这不仅会造成存储资源的浪费,导致低效的存储,还使得数据更新变得困难重重,难以维持数据的一致性,在并发访问控制方面也面临挑战。


MongoDB通过JSON存储文档的优缺点对比: 


能否做到既要又要?


看到 MongoDB 的这些问题,对于一个做数据库的人来说会不会觉得不可思议?这些问题不就是关系型数据库原生的内置能力吗?那我们能否有一个数据库能同时将文档型数据库和关系型数据库的优点结合起来呢?

 

为了解决这些问题,Oracle 数据库创新性地提出了 JSON Relational Duality View(JSON关系二元性视图) 思路,通过JSON关系二元性,化解了长期以来对象与关系两个世界的争议。对象文档型方式虽然与应用结合紧密,开发便捷,但存在存储冗余、更新成本高以及数据一致性和并发访问控制难等问题;而关系型模式存储简约无冗余,拥有强大的 ACID 支持和访问控制能力,具备高可用性、安全性和可扩展性,只是对开发者的关系型对象理解技能有一定要求。

 

Oracle Database 23ai 引入的JSON关系二元性是一项突破性的数据建模功能,它允许开发者在同一数据库中同时以 JSON 文档和关系表的形式访问和操作数据,解决了传统对象-关系不匹配的问题。这种功能将 JSON 文档模型的简洁性与关系模型的高效性和复杂性结合,提供了灵活的数据访问方式,开发者可根据用例选择 JSON 或关系模型操作数据,而无需在两者之间做取舍。

 

JSON关系二元性的核心特点:

二元表示:数据存储在关系表中,但可以通过 JSON 二元性视图(Duality Views)访问,生成的 JSON 文档是按需动态生成的,而不是物理存储。

一致性:通过无锁(乐观锁)并发控制机制,确保 JSON 文档和关系表的数据始终一致,无需传统 ORM(对象-关系映射)的复杂性。

多接口支持:支持 SQL、MongoDB 兼容 API、REST API 和 GraphQL 语法,开发者可根据需要选择合适的访问方式。

灵活性:允许基于相同或重叠的关系表创建多个二元性视图,生成不同的 JSON 层次结构,适应多样化用例。

无数据冗余:数据以规范化的关系表存储,避免文档数据库中常见的重复数据问题。


一个创建JSON关系二元性视图的例子:

JSON关系二元性的优势 (对比传统方式): 


Oracle对JSON的支持不仅限于

JSON关系二元性视图


一提到Oracle的JSON支持,大家都会想当然的想到JSON关系二元性,但是Oracle对JSON的支持是全方位的,来看看Oracle Databse 23ai 中的JSON 相关的功能全景图吧。


Oracle Database 23ai 中的 JSON 相关功能:

那么,Oracle 是如何全面支持 JSON 的呢?在 Oracle Database 23ai 中,它为用户提供了更出色的文档数据库体验。如果已经拥有 JSON 文档数据,可直接将其存入 Oracle 数据库,即刻便能得到支持。对于现有的针对 MongoDB 的应用,通过MongoDB兼容性API也能够直接连接到 Oracle 数据库,无需进行大量代码改动。倘若在 Oracle 上已经建立了关系型表,同样可以直接利用 JSON 二元性视图进行基于JSON格式的开发和数据访问。


在不同应用场景下 Oracle 对 JSON 的全面支持:


具体来说,Oracle 数据库全面支持基于 JSON 数据模型的无模式应用开发,允许混合开发方式,兼具 NoSQL 文档存储的模式灵活性与快速应用开发能力,以及 Oracle 数据库自身的企业级特性。它能够对 JSON 文档进行存储、管理和索引,应用开发者可通过文档存储 API 访问这些 JSON 文档。并且,Oracle 数据库还为 JSON 文档提供了复杂的 SQL 查询和报告功能,便于开发者将 JSON 文档相互关联,以及实现 JSON 与关系数据的集成。


例如,Oracle 的自治 JSON 数据库与 MongoDB 兼容,它属于自治数据库云服务的一部分,既支持通过简单的 NoSQL 风格 API(包括 Oracle 的 SODA 和 MongoDB API)进行操作,又能让开发者通过 SQL 全面访问数据库中的关系数据和 JSON 文档数据。


同时,Oracle 数据库针对 MongoDB 的 API,使得与 MongoDB 兼容的程序和驱动能够直接连接到 Oracle 数据库,程序只需更改连接字符串,几乎无需对代码进行其他修改,就能像连接到 MongoDB 数据库一样正常运行,与此同时,还能通过完整的 SQL 访问通过 MongoDB 程序或驱动创建的文档和集合。

 

总的来说,Oracle 对 JSON 的支持方式主要有以下几种:

原生 JSON 数据类型支持:Oracle 数据库提供了原生的JSON数据类型,使用优化的二进制格式OSON,可避免对文本 JSON 数据进行昂贵的解析和重新解析操作,从而提供更好的查询性能。开发人员可以使用JSON类型构造函数将其他 SQL 数据类型转换为JSON类型,也可以使用JSON_SERIALIZE函数将JSON类型数据转换为文本 JSON 数据。

SQL 查询支持:Oracle 数据库提供了全面的 SQL 实现,可通过 SQL 直接访问存储在数据库中的 JSON 数据,无需将其转换成中间形式。开发人员可以使用标准 SQL 查询将 JSON 集合联接到其他 JSON 集合或关系表。

文档存储 API 支持:Oracle 数据库提供了一系列 SODA(Simple Oracle Document Access)API,旨在支持无模式应用开发。使用这些 API,开发人员无需使用 SQL 即可操作 Oracle 数据库管理的 JSON 文档。SODA API 包括Java、REST、Python、C、Node.js和PL/SQL 等实现方式。

JSON 关系二元性视图支持:开发人员可以根据使用场景,同时将相同的底层数据作为 JSON 文档或关系表来处理,并且可以使用与 MongoDB 兼容的 API、REST 和 SQL 等多种方式访问这些视图。


数据库不仅仅只需要支持 JSON


在 AI 时代,数据处理需求已发生深刻变化。单纯支持 JSON 的文档数据库因其灵活性曾广受欢迎,但面对AI驱动的多模态数据(如文本、图像、向量、时间序列、图结构等),其局限性日益凸显。JSON 数据库在处理复杂查询、向量搜索或实时分析时,往往需要额外的索引或外部系统支持,导致性能瓶颈和开发复杂性。


相比之下,融合数据库通过原生支持多种数据类型,集成向量搜索、图计算、时间序列分析等功能,提供统一的查询接口和优化的存储结构。这种多模态支持不仅提升了 AI 应用的性能,如加速语义搜索、支持关系推理和实时预测,还简化了开发流程,降低了系统复杂性。因此,融合数据库以其全面性和高效性,成为 AI 时代更符合需求的数据库选择。

 

现如今,融合数据库如 Oracle Databse 23ai 取代传统文档数据库的重要性日益凸显。MongoDB 以其灵活的 JSON 文档存储适用于快速开发和非结构化数据管理,但在AI驱动的复杂场景下,其单一数据模型和有限的分析能力难以满足需求。Oracle Database 23ai 作为融合数据库,支持多模态数据(JSON、向量、关系、图、空间等),并通过 AI Vector Search、JSON 关系二元性和SQL图查询等功能,显著提升AI应用的性能和效率。例如,AI Vector Search支持语义搜索和RAG(检索增强生成),无需数据迁移即可运行实时AI算法,而MongoDB 需依赖外部系统实现类似功能,增加复杂性和延迟。


此外,Oracle Database 23ai 通过 MongoDB API 兼容现有应用,简化从 MongoDB 迁移的流程,同时提供更强的交易一致性、分析能力和安全性。借助Oracle GoldenGate 23ai 的无停机迁移工具,企业可无缝过渡,充分利用 Oracle Database 23ai 的多模型支持和AI原生特性,满足生成式AI、机器学习和实时分析的复杂需求,从而在AI时代占据技术优势。


总结


JSON是一种简单有效且深受开发者喜爱的数据类型,但是单纯的使用 JSON 数据的文档数据库并不能满足现代应用开发的真实需求,全面支持 JSON 的融合数据库才是未来的发展方向,而 Oracle 就是这个融合数据库的代表,所以从 MongoDB 迁移至 Oracle Database 23ai 是上佳选择。


有关将 MongoDB 迁移到 Oracle 的更多说明,敬请参考 Oracle 博客文章:https://blogs.oracle.com/dataintegration/post/why-a-migration-from-mongodb-to-oracle-database-makes-sense


*注:为免疑义,本文所用以下术语专指以下含义:

1. Oracle 专指 Oracle 境外公司而非甲骨文中国。

2. 相关 Cloud 或云术语均指代 Oracle 境外公司提供的云技术或其解决方案。

【声明】内容源于网络
0
0
甲骨文中国
1234
内容 530
粉丝 0
甲骨文中国 1234
总阅读1.6k
粉丝0
内容530