Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Oracle Database 21c JSON - New Feature
Search
oracle4engineer
PRO
April 09, 2021
1
650
Oracle Database 21c JSON - New Feature
Oracle Database 21cのJSON向け新機能をまとめた資料です。
oracle4engineer
PRO
April 09, 2021
Tweet
Share
More Decks by oracle4engineer
See All by oracle4engineer
[Oracle TechNight#85] Oracle Autonomous Databaseを使ったAI活用入門
oracle4engineer
PRO
0
68
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
210
【Oracle Cloud ウェビナー】OCIを活用!エンタープライズ企業でのアプリのモダナイズ最新動向
oracle4engineer
PRO
1
64
【Oracle Cloud ウェビナー】リアルタイム・データ活用と自律型データベースの最新潮流:100の実例から学ぶ
oracle4engineer
PRO
2
44
Kubernetesトラフィックルーティング徹底解説/Kubernetes-traffic-deep-dive
oracle4engineer
PRO
5
1.1k
OCI Oracle Database Services新機能アップデート(2024/09-2024/11)
oracle4engineer
PRO
0
150
OCI GoldenGate サービス・アップデート(FY25)
oracle4engineer
PRO
0
49
Oracle Cloud Infrastructure IaaS 新機能アップデート 2024/9 - 2024/11
oracle4engineer
PRO
1
140
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
53k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Building Adaptive Systems
keathley
38
2.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
A Philosophy of Restraint
colly
203
16k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
The Invisible Side of Design
smashingmag
298
50k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Practical Orchestrator
shlominoach
186
10k
Transcript
Oracle Database 21c JSON新機能 日本オラクル株式会社 2021年4月 Copyright © 2021, Oracle
and/or its affiliates 1
Safe harbor statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、 情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以 下の事項は、マテリアルやコード、機能を提供することを確約するものではないため、購買 決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリース、時期及び価格については、弊 社の裁量により決定され、変更される可能性があります。 2
Copyright © 2021 Oracle and/or its affiliates
SQLによるアクセスとスキーマレス開発の柔軟性を両立 Oracle DatabaseをJSONドキュメント・ストアに Copyright © 2021, Oracle and/or its affiliates
3 JSON SODA APIを使用して 開発されたアプリケーション Oracle Database使用した JSONドキュメントの保存と管理 SQL JSONに対するSQLベースの レポート作成と分析操作 SODA API • NoSQLスタイルのAPI Java, JavaScript/Node.js, Python, REST, PL/SQL, C… • JSONデータの管理に利用 Database In-Memory • インメモリ列ストアの活用で 高速検索 JSONクエリー • Oracle独自のシンプル構文 • SQL/JSONのサポート SQL> select JSON_VALUE(PO_DOCUMENT, ‘$.LineItems[0].Part.UnitPrice’ 2 returning NUMBER(5,3)) 3 from J_PURCHASEORDER p 4 where JSON_VALUE(PO_DOCUMENT, ‘$.PONumber’ 5 returning NUMBER(10)) = 1600 SQL/JSONの構文例
4 Copyright © 2021, Oracle and/or its affiliates | SODA
(Simple Oracle Document Access) SODA APIs • NoSQLスタイルのAPI • Java, JavaScript/Node.js, Python, REST, PL/SQL, C… • JSONデータの管理に利用 • create collections • store documents in collections • retrieve documents • query documents
MongoDB や AWS DocumentDB より 2倍高速 Oracle DatabaseにおけるJSONのパフォーマンス 8 OCPUの
Autonomous JSON DatabaseとM60上のMongoDB Atlas, AWS DocumentDB on R4.4xlarge との比較 業界標準のYahoo Cloud Serving Benchmark (YCSB) MongoDBの結果の出典 : https://www.mongodb.com/atlas-vs-amazon-documentdb/performance 2020/8/12時点 秒間操作数 秒間操作数 0 10000 20000 30000 40000 50000 60000 70000 80000 YCSB-4M Documents Oracle MongoDB AWS 50% reads / 75% reads / 95% reads / 50% writes 25% writes 5% writes 0 10000 20000 30000 40000 50000 60000 70000 80000 YCSB-81M Documents 50% reads / 75% reads / 95% reads / 50% writes 25% writes 5% writes Oracle MongoDB AWS 5 Copyright © 2021 Oracle and/or its affiliates
CREATE TABLE J_PURCHASEORDER ( id INTEGER PRIMARY KEY, po_document JSON
); Copyright © 2021, Oracle and/or its affiliates 6 Oracle Databaseプラットフォームと統合 • Parallel Query • RAC • GoldenGate • … • 高度なセキュリティ機能を利用可能 • VPD、暗号化など • JSONと他のデータを一度に管理可能 • Converged Databaseによる運用の簡素化 バイナリJSON型 • SQL、PL/SQLで利用可能な新しいデータ型 • OCI, JDBCでネイティブ・サポート • OSONをベース – 最適化されたバイナリ表現 • 自己完結型フォーマット • 高速フィールド・ルックアップ • 部分更新可能 • スキャンはテキストより最大10倍高速 • 更新はテキストより最大10倍高速 JSON型 JSONを最適化して保存する新しいデータ型 21c
従来の課題と背景 JSONドキュメント例 { "title":"mybook", "author":"ROGER" } ファンクション・インデックスとして、索引を作ることができます。 create index authindex1
on mytable m (m.jsontext.author.string()) しかし、もしJSONに複数の著者が配列として含まれていたら? { "title":"mybook", "author": [ "ROGER", "JOHN" ] } そこで配列エレメントに対して、複数値インデックスが作成可能になりました。 JSON用複数値インデックス スカラー配列値のインデックス 7 Copyright © 2021, Oracle and/or its affiliates 21c
create table mytable (jsoncol json); insert into mytable values (
'{ "title":"mybook", "author": [ "ROGER", "JOHN" ] }'); create multivalue index authindex2 on mytable m(m.jsoncol.author.string()); select * from mytable m where json_exists(jsoncol, '$?(@.author == "JOHN")'); 複数値インデックス – 例 8 Copyright © 2021, Oracle and/or its affiliates 21c
-------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows |
Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 6104 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID BATCHED| MYTABLE | 1 | 6104 | 2 (0)| 00:00:01 | | 2 | HASH UNIQUE | | 1 | 6104 | | | |* 3 | INDEX RANGE SCAN (MULTI VALUE) | AUTHINDEX2 | 1 | | 1 (0)| 00:00:01 | -------------------------------------------------------------------------------------------------- • インデックスはデータ型が一致するときのみ使用されます。 • インデックスとしてstring(), number(), stringOnly()またはnumberOnly()を利 用できます。 • 最初の2つは型変換を自動的に行います。続く2つはされません。 複数値インデックス– 実行計画の出力例 9 Copyright © 2021, Oracle and/or its affiliates 21c
{ "empno" : 7839, "name" : "KING", "salary" : 5000,
"department" : { "name" : "ACCOUNTING", "loc" : "NEW YORK" } } SELECT JSON { 'empno' : empno, 'name' : ename, 'salary' : sal, 'department' : ( SELECT JSON { 'name' : dname, 'loc' : loc } FROM dept d WHERE d.deptno = e.deptno ) } FROM emp e WHERE e.empno = 7839; Copyright © 2021, Oracle and/or its affiliates 10 JSONテキストに似た構文を使用してSQLにてJSON型の値を作成 SQLでJSON-likeな構築構文 SQL/JSON 機能拡張 21c
JSON_Transform • 既存の構文とセマンティクス(述語など)に従った新たな SQL/JSON演算子 • 一度の処理に複数の演算子の使用可能 (SET, APPEND, REMOVEなど) •
部分的な更新をサポート • JSON型 でのJSON_Transformはログサイズを削減することに最適化(ディスク上で部分的なアップ デート) • SELECT内でのJSON_Transformはクライアントに送信前にデータを変更 (プライベート・データを 削除) SQL/JSON 機能拡張 新しいJSON_TRANSFORM演算子 11 Confidential – © 2020 Oracle Internal 21c
Copyright © 2021, Oracle and/or its affiliates 12 JSON_TRANSFORM サンプル
SQL/JSON 機能拡張 UPDATE employees e SET e.jcol = JSON_TRANSFORM (e.jcol, SET '$.job' = 'Surfing Instructor', SET '$.salary' = (e.jcol.salary / 3), REMOVE '$.phones[*]?(@.type == "work")', APPEND '$.children' = 'Fiona’) WHERE e.jcol.id = 123; { "id” : 123, ”name” : "John Smith", "age” : 25, "job” : "Programmer", "salary” : 60000, "phones” : [ {"type” : "mobile", "number” : "555-123-4567"}, {"type” : "work", "number” : "555-999-1111"} ], "children” :["Sydney","Sierra"] } { "id” :123, "name" : "John Smith", "age " : 25, "job " : "Surfing Instructor", "salary” : 20000, "phones” : [ {"type” : "mobile", "number” : "555-123-4567"} ], "children” : ["Sydney","Sierra","Fiona"] }
JSON in Oracle Database ケース・スタディ ケース1: 大手保険会社(北米) メリット: シンプル、迅速な開発、より高度 な分析
• 各保険のポリシーがJSONドキュメントに なっていた • 様々なポリシーの形式を取ることが可能 • すべてのポリシーが1つのドキュメント • 分解や結合なし • データの入出力が低レイテンシ • Webアプリケーションに最適で顧客の体 験も向上 リレーショナル・ビュー • レポーティング • 毎日のリスク分析 ケース2: グローバルな証券取引所 メリット: 新たなデータ・ドリブン・アプリケーショ ン構築が劇的にシンプルに • 金融商品のメタデータ • 最大1600の属性 • 平均で100使用 • 必要に応じてアプリケーションはデータベース 操作なしで新しい属性を追加 • 属性はJSONカラム内に SQLでより高度なレポーティング • 銀行向けのカスタムレポート • SQL/JSON 操作 ケース3: グローバル展開の小売り業、 店舗およびオンラインショップ メリット: 開発の柔軟性向上、統一されたセキュ リティ、レポーティング セールス・アプリケーションの一部 • 注文状況のトラッキング • 支払いのトラッキング • ギフト・カード処理 • 開発者がドキュメント・ストアのモデルが使いや すかった • アジャイル、生産性向上、使いやすさ • DBAやIT運用管理の観点でも統一されたセ キュリティやデータ保護が実現でき望ましかった • SQLによるレポーティングと機械学習 Copyright © 2021, Oracle and/or its affiliates 13
Thank you JSON : https://www.oracle.com/jp/database/technologies/appdev/json.html 14 Copyright © 2021, Oracle
and/or its affiliates
None