腾讯亿级用户规模自研业务的上云实践解读,立即报名 了解详情
写点什么

甲骨文发布 JSON Database,对标 MongoDB

  • 2020-09-15
  • 本文字数:3415 字

    阅读完需:约 11 分钟

甲骨文发布 JSON Database,对标MongoDB

甲骨文于 8 月 13 日宣布推出了自主JSON数据库(Autonomous JSON Database,AJD)。这是一款全新的云服务,专为寻求简单易用、经济高效的 JSON 数据库和 NoSQL API 的开发人员而打造。AJD 在 MongoDB 的核心功能的基础上,还提供了更高的性能、简单的弹性、全面的 ACID 支持以及完整的 SQL 功能。


JSON 是潮流:从最初的 JavaScript 对象的序列化格式,到现在 Web 应用中信息传递的格式,JSON 俨然已成为许多新兴应用(包括数据库层)的主要数据模型。


JSON


{   "name":"San Jose",  "population":1021795,  "county":"Santa Clara"} {  "name":"Atlanta",  "population":506811,  "county":["Fulton","DeKalb"]}
复制代码


开发人员对 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,在其他方面也具有优势:


自主JSON数据库(AJD)MongoDB云数据库
最大文件大小32 MB16 MB
文件最大嵌套深度1024 层100 层
每个集合的索引无限制64
复合索引字段无限制32
全文档索引JSON搜索索引×
服务器端功能函数、过程、触发器不推荐*
多文档事务ACID仅通过指定API调用请求才有ACID
事务时长无限制默认60秒
事务大小无限制最大1000个文档*
聚合数据大小无限制100 MB RAM + 指定allowDiskUse参数
无服务器自动缩放×
通过SQL访问JSON文档×
综合安全性(例如:虚拟专用数据库,数据编辑,自定义数据库角色)×
最低价格$2.74/小时$3.95/小时


*MongoDB 文档建议:链接1链接2


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


soda create cities;soda insert cities {"name":"San Jose","population":1021795,"county":"Santa Clara"}soda insert cities {"name":"Atlanta","population":506811,"county":["Fulton", "DeKalb"]}
复制代码


现在,我们可以使用查询搜索符合筛选条件的文档,这一步叫“Query By Example”,或简称 QBE。首先用 QBE 查找 country 为“Fulton”的 city:


SQL


soda get cities -f {"county":"Fulton"}   
复制代码



然后用 QBE 选择两个文档中所有人口大于 250,000 的 city。


SQL


soda get cities -f {"population":{"$gt":250000}}
复制代码



这里我们都是使用控制台输入 SODA 命令,但一般情况下我们都会直接用编程语言直接运行 SODA 命令。甲骨文为 Java,JavaScript(nodeJS),Python,REST,PI/Sql 以及 ODPI-C 提供 SODA 驱动。


我们还可以通过 SQL 来访问存储在甲骨文数据库的 JSON 数据。首先,创建如下 city 的集合:



可以看到,JSON 集合是由常规表支持, 而 JSON 数据则是以二进制的表现形式存储,这种优化是为了快速的读取和分段更新。如果想将其转换为 JSON 字符串,那么可以用 JSON_SERIALIZE。


SQL


select JSON_Serialize(JSON_Document) from cities;
复制代码



JSON_Table 可以拆开嵌套 JSON 数据,并将其映射到关系列和行。注意,这里两个 JSON 文档会生成三行数据,这是因为其中一个 city 有两个 country。


SQL


select j.* from cities NESTED json_document     COLUMNS (name, population number,     NESTED county[*]     COLUMNS(countyName PATH '$')) j; 
复制代码



从关系表转换回 JSON 也很容易。只需要将 JSON 生成函数添加到查询。下面的代码生成一个包含所有 city 名称的数组。


SQL


select JSON_ArrayAgg(c.json_document.name) from cities c;
复制代码



原文链接


https://blogs.oracle.com/jsondb/autonomous-json-database/comment-submitted?cid=82843da7-d065-45df-acfd-dea5656634e3


2020-09-15 14:002686

评论

发布
暂无评论
发现更多内容

使用 HTML、CSS 和 JavaScript 定制私人版的刮刮乐【一看就会】

孤寒者

canvas 6月月更 自制刮刮乐

1.4 宏观/中观/微观架构(连载)

凌晞

架构 架构设计 架构设计实战

python偏函数

红毛丹

Python 6月月更

关于并发和并行,Go和Erlang之父都弄错了?

OneFlow

并发 并行

数字化时代做知识管理的最佳实践方式

小炮

观测云产品更新|观测云计费更新;新增 Jenkins CI 可观测;新增自定义查看器图表同步搜索等

观测云

行泊一体方案「换道超车」,百度担当汽车智能化风向标

百度开发者中心

软件、硬件、生态齐发力,英特尔夯实云计算基石

科技之家

API 网关 Apache APISIX 在 Amazon Graviton3 上的安装与性能测试

亚马逊云科技 (Amazon Web Services)

apisix;Tech 专栏

AQUANEE尚处初期,已获币安等顶尖机构青睐

石头财经

DevEco Studio的这些预览能力你都知道吗?

OpenHarmony开发者社区

Open Harmony

由SeekTiger谈谈熊市里的投资布局

威廉META

AQUANEE尚处初期,已或币安等顶尖机构青睐

西柚子

InfoQ 极客传媒 15 周年庆征文|国产自研数据库GaussDB(DWS)架构详解【高斯数据库】

黎燃

架构 InfoQ极客传媒15周年庆 GaussDB架构

【前端之路】react框架学习

黎燃

React 6月月更

百度APP视频播放中的解码优化

百度开发者中心

leetcode 126. Word Ladder II 单词接龙 II(困难)

okokabcd

LeetCode 搜索 算法与数据结构

InfoQ 极客传媒 15 周年庆征文|纯 CSS 画一张生日贺卡祝 InfoQ 生日快乐

1_bit

前端 热门活动 InfoQ极客传媒15周年庆

应用实践 | 物易云通基于 Apache Doris 的实时数据仓库建设

SelectDB

数据库 架构 最佳实践 Doris MySQL 数据库

AQUANEE尚处初期,已获币安等顶尖机构青睐

BlockChain先知

DevEco Studio强大的预览功能让开发效率大大提升!

HarmonyOS开发者社区

HarmonyOS

投稿开奖丨轻量应用服务器征文活动(4月)奖励公布

阿里云弹性计算

Hexo 防火墙 SSL证书 CDN加速 安全组

程序猿必备的数电知识,快来看看你掌握多少!(建议收藏)

孤寒者

进制转换 数电 常见进制

优酷弹幕穿人「渲染技术」揭秘

阿里巴巴文娱技术

工程能力 音视频开发 渲染

如何保证设计出合理架构 - 作业

阿拉阿拉幽幽

华为云AppCube零门槛搭建5G消息服务号

乌龟哥哥

6月月更

Hoo研究院 | OlympusDao调研报告

区块链前沿News

DAO Hoo 算法稳定

Vue 组件如何在设置 Props

devpoint

Vue Vue3 InfoQ极客传媒15周年庆

HarmonyOS Connect FAQ 第三期

HarmonyOS开发者社区

HarmonyOS

一文搞懂│http 和 https 的通信过程及区别

程序员亮仔

https 安全 HTTP 通信 6月月更

InfluxDB 时间线简析

观测云

甲骨文发布 JSON Database,对标MongoDB_数据库_Beda Hammerschmidt_InfoQ精选文章