甲骨文于 8 月 13 日宣布推出了自主JSON数据库(Autonomous JSON Database,AJD)。这是一款全新的云服务,专为寻求简单易用、经济高效的 JSON 数据库和 NoSQL API 的开发人员而打造。AJD 在 MongoDB 的核心功能的基础上,还提供了更高的性能、简单的弹性、全面的 ACID 支持以及完整的 SQL 功能。
JSON 是潮流:从最初的 JavaScript 对象的序列化格式,到现在 Web 应用中信息传递的格式,JSON 俨然已成为许多新兴应用(包括数据库层)的主要数据模型。
JSON
开发人员对 JSON 的 热爱 是因为其对 动态模式 的支持,从而更容易进行 模式变更 。开发人员在进行应用变更时,可以使用 JSON 文档获得灵活的数据库层,而不必将数据规范化到固定的关系型模式中的表和列。
甲骨文很早便发现了 JSON 的好处和需求:2014 年,甲骨文数据库交付了第一个 SQL/JSON 的企业级实现——这是由甲骨文发起的一个开放标准,在此之后又被许多其他的商业和开源数据库产品采用。
虽然在数据分析或复杂的报告上,SQL 做的不错,但许多开发人员更喜欢与简便灵活的 JSON 数据交互。因此,甲骨文为主流编程语言(包括 Java,JavaScript 与 Python)添加了 本地开源文档存储 API ,称之为 SODA(Simple Oracle Document Access,简单的甲骨文文档访问)。结束甲骨文使用 JSON 和 SODA 开发应用,就像是用 NoSQL 数据库 MongoDB 一样容易。
甲骨文一直在提供 JSON 数据库提供创新,而随着 AJD 的出现,JSON 为应用开发人员带来了所有的自主优势。
有趣的是,甲骨文的 JSON 云服务并不是从零开始的。AJD 是站在甲骨文自主数据库的肩膀上开发的。自主数据库服务可以在短短数分钟内配置新的数据库,可以不停机扩展或缩减应用程序,在线修补数据库,通过时间点恢复进行自动备份,提供灾难恢复功能,并且具有高级安全功能。自主数据库的目标是 零管理 ,这样开发人员就可以减少在建立和管理数据库上花费的时间,将更多的时间投入在其他应用程序上。
提供自主云服务
自主JSON数据库以原生树状二进制的格式存储 JSON 文档。这种 原生 JSON 格式 经过高度优化,可以实现快速读取(避免线性扫描)和部分更新(减少重做/回滚日志大小)。其最终是一个文档数据库,可提供低延迟 CRUD 操作以及包括多文档在内的 完整 ACID 一致性 ;用于应用开发的原生文档 API 以及针对应用的完整 SQL 支持;原生 JSON 存储以及可扩展的、并行的、在内存中的查询优化。
自主 JSON 数据库提供丰富的应用功能,这些在不成熟的 NoSQL 数据库中尚不具备:
内置 机器学习 算法、 空间 查询
先进的安全功能 ,诸如精细的访问控制
成熟的 服务器端程序语言
完整的 低代码开发 环境
ACID 事务无时间或事务大小限制
简单快捷的跨集合 join 和/或 aggregations
对 JSON 文档进行全文智能搜索索引
等等一系列优势。
低成本
AJD 的成本出乎意料的低。AJD 让应用开发人员能在甲骨文上搭建新的 JSON 应用,而甲骨文则让开发人员能够以极具竞争力的价格使用自主数据库的所有功能。在相同配置(M60 的专用集群与 8 OCPU)下,AJD 的成本比其竞争者 MongoDB 云数据库要低 30%,两者分别为3.95/小时。实际上,AJD 可能要比 MongoDB 云数据库花销更低,因为 AJD 是弹性的,不依赖于固定的硬件,这意味着你可以为 AJD 选择任何数量的 CPU。AJD 的成本包括了备份和简单 BI 工具连接,这两项在 MongoDB 云数据库中都属于额外成本。
可扩展
AJD 的新功能不会带来性能上的损失,相反,与同样价格配置下的 MongoDB 云数据库相比,AJD 可以在不同的工作负载类型和集合大小下,持续提供两倍的吞吐量。MongoDB 云数据库的结果是由 MongoDB 运行,根据行业标准YCSB发布于此。
8 OCPU 自主 JSON 数据库对比 M60 上 MongoDB 云服务
工业标准雅虎云服务标准(YCSB)
MongoDB 数据来源:https://www.mongodb.com/atlas-vs-amazon-documentdb/performance,于 2020/8/12 获取
自主 JSON 数据库和甲骨文云免费套餐的简短说明:
AJD 是甲骨文自主数据库家族的一部分。AJD 拥有其他自主数据库服务的所有核心功能,包括生命周期管理、安全性、可用性、可伸缩性,以及弹性。
如果你想要通过甲骨文免费套餐尝试下自主 JSON 数据库,那么建议你从自主事务处理(Autonomous Transaction Processing)开始。当你准备扩展系统或投入生产时,你可以直接将免费套餐中的自主事务处理直接转移到付费版本的自主 JSON 数据库。
如果你担心免费版的自主事务处理中某些功能是否会影响到你迁移到自主 JSON 数据库的话,答案是否定的。免费版中的数据大小的限制是 20G,而 AJD 同样支持 20G 的非 JSON 数据。
自主 JSON 和 MongoDB 云数据库的对比
AJD 不仅在价格和速度上优于 MongoDB,在其他方面也具有优势:
AJD 的新手教程
登录到甲骨文云后,在左侧菜单栏选择“Autonomous JSON Database”:
然后在下面这个页面,点击蓝色按钮创建数据库:
为数据库命名(包括显示名称),确认选中了“JSON”。
在同一个界面,填写“admin”密码,后面会用到。
点击“Create Autonomous Database’”,然后就能看到正在配置一个新的数据库实例。
这个过程应该不过几分钟,等到页面刷新后你会看到一个绿色的图标,告诉你服务已经可用了。
点击“Tools”,选择“SQL Developer Web”。
输入刚才设置的“admin”密码。
然后会出现一个 Web 控制台,可以在其中输入 SQL 和 SODA 命令。SODA 全称是 Simple Oracle Document Access(甲骨文简单文档访问),提供简单的 JSON 文档储存界面。输入“soda help”可以查看 soda 命令概述。
输入下列命令创建‘cities’集合,并插入两个 JSON 文档。注意这两者之间的区别:前者默认 city 属于一个 country,但后者 city 可以属于多个 country,这也是为什么后者会使用数组表示。
SQL
现在,我们可以使用查询搜索符合筛选条件的文档,这一步叫“Query By Example”,或简称 QBE。首先用 QBE 查找 country 为“Fulton”的 city:
SQL
然后用 QBE 选择两个文档中所有人口大于 250,000 的 city。
SQL
这里我们都是使用控制台输入 SODA 命令,但一般情况下我们都会直接用编程语言直接运行 SODA 命令。甲骨文为 Java,JavaScript(nodeJS),Python,REST,PI/Sql 以及 ODPI-C 提供 SODA 驱动。
我们还可以通过 SQL 来访问存储在甲骨文数据库的 JSON 数据。首先,创建如下 city 的集合:
可以看到,JSON 集合是由常规表支持, 而 JSON 数据则是以二进制的表现形式存储,这种优化是为了快速的读取和分段更新。如果想将其转换为 JSON 字符串,那么可以用 JSON_SERIALIZE。
SQL
JSON_Table 可以拆开嵌套 JSON 数据,并将其映射到关系列和行。注意,这里两个 JSON 文档会生成三行数据,这是因为其中一个 city 有两个 country。
SQL
从关系表转换回 JSON 也很容易。只需要将 JSON 生成函数添加到查询。下面的代码生成一个包含所有 city 名称的数组。
SQL
原文链接:
评论