zoukankan      html  css  js  c++  java
  • Oracle 20c 新特性:原生的 JSON 数据类型(Native JSON Datatype)

    墨墨导读:Oracle 在 12c(12.1.0.2)版本中引入了对JSON的支持,允许将JSON存储在数据库中的varchar2或LOB(CLOB或BLOB)中。这意味着,我们可以利用无模式设计模型所提供的灵活性来构建应用程序,但又能从Oracle数据库的强大功能中受益。

    Oracle 在 12c(12.1.0.2)版本中引入了对JSON的支持,允许将JSON存储在数据库中的varchar2或LOB(CLOB或BLOB)中。这意味着,我们可以利用无模式设计模型所提供的灵活性来构建应用程序,但又能从Oracle数据库的强大功能中受益。

    早期版本中创建包含 JSON 对象的表,类似:

    CREATE TABLE theater (   theater_id    VARCHAR2(255),   json_document BLOB
     );
    

    对于 BLOB 类型的插入,需要对数据进行转换:

    INSERT INTO theaters (theater_name, json_document) VALUES ('Century_16_Redwood',  utl_raw.cast_to_raw('{"id":1,             "name":"Century 16",             "location":{"street":"Main St",                     "city":"Redwood",                     "zipCode":"94607",                     "state":"CA",                    "phoneNumber":null                       }                 }'));
    
    
    

    Oracle 的 JSON 支持,使得我们可以使用标准SQL查询JSON文档,也可以利用高级分析功能,对单个属性或整个文档进行索引,并行处理数十亿个JSON文档,云和恩墨的部分客户已经在 12.1 版本时采用了这个特性,使得数据库支持 NoSQL 上更加丰富灵活。

    Oracle 还提供了一些工具来发现JSON文档是由哪些属性组成的,并在集合之上创建关系视图。开发人员还可以通过使用Java、Node.js、Python、C语言和REST的SODA API来访问Oracle数据库,你甚至可以将Oracle 数据库视为一个 NoSQL数据库。

    JSON 是 Oracle 多模化支持的一个重要演进。

    在Oracle数据库20c中,通过提供一个 Native 数据类型 "JSON ",继续加强和改进了 Oracle 对JSON的支持。


    使用原生的数据类型,在读取或更新操作时不必对JSON进行解析,而只在插入时才进行解析,然后JSON以内部二进制格式保存,这使得访问速度更快。这可以使读取和更新操作的速度提高4到5倍,更新到非常大的JSON文档的速度提高20到30倍。

    现在创建一个包含 JSON 类型的数据表类似:

    CREATE TABLE j_order (   id INTEGER PRIMARY KEY,   po_doc JSON )
    
    
    

    新的数据类型并不是Oracle数据库20c中为JSON引入的唯一变化,Oracle还增加了一个新的JSON函数JSON_TRANSFORM,它使得在一次操作中更新和删除文档中的多个属性变得更加简单。

    参考:https://docs.oracle.com/en/database/oracle/oracle-database/20/adjsn/oracle-sql-function-json_transform.html#GUID-7BED994B-EAA3-4FF0-824D-C12ADAB862C1

    墨天轮原文链接:https://www.modb.pro/db/24543(复制到浏览器中打开或者点击“阅读原文”可查看)

    推荐阅读:144页!分享珍藏已久的数据库技术年刊

    数据和云

    ID:OraNews

    如有收获,请划至底部,点击“在看”,谢谢!

    点击下图查看更多 ↓

    云和恩墨大讲堂 | 一个分享交流的地方

    长按,识别二维码,加入万人交流社群

    请备注:云和恩墨大讲堂

      点个“在看”

    你的喜欢会被看到❤

  • 相关阅读:
    Android Intent 教程
    ios 获取手机信息(UIDevice、NSBundle、NSLocale)
    [实时渲染] 2.3 几何处理阶段
    腾讯2016实习生面试经验(已经拿到offer)
    Swift编程语言学习6—— 闭包
    head first c<11>初探网络编程上
    APM2.8 Rover 自己主动巡航车设计(固件安装和设置)
    关于java中String的一点理解
    又一次认识java(一) ---- 万物皆对象
    Linux启动Oracle监听和服务
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13311698.html
Copyright © 2011-2022 走看看