Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Autonomous JSON Database 技術概要 / ajd_technical_d...

Autonomous JSON Database 技術概要 / ajd_technical_detail_jp

Autonomous Databaseのインスタンスタイプの一つである、
Oracle Autonomous JSON Database (AJD) に関するサービス概要です。

その他、参考資料)
■マニュアル
https://docs.oracle.com/en/cloud/paas/autonomous-json-database/index.html

■Autonomous Database技術詳細(全般)
https://speakerdeck.com/oracle4engineer/adb-s-technical-detail-jp

oracle4engineer

January 11, 2022
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. 6 Copyright © 2022, Oracle and/or its affiliates| はじめに 最新情報や詳細情報は以下もご参照ください

    マニュアル • AJD : https://docs.oracle.com/en/cloud/paas/autonomous-json-database/index.html その他、 Autonomous Database に関する技術情報全般 • Autonomous Database 技術詳細 • 「Autonomous Database 技術詳細」で検索ください。Speaker Deckにアップしています。 本資料の内容については、クラウド・エンジニアリング統括、Autonomousソリューション部にお問い合わせください AJDはAutonomous Database – Shared(ADB-S)と共通する部分が多いため、 Autonomous Database に関する技術情報全般を記載したこちらの資料も合わせてご確認ください
  2. 8 Copyright © 2022, Oracle and/or its affiliates| Autonomous JSON

    Database JSONストレージのためのマネージド・サービス JSONをベースとした開発のための新サービス • ネイティブJSONストレージ • シンプルなドキュメントAPI • 各種⾔語・ドライバに対応 • SQLは必ずしも不要 NoSQL ドキュメントストアと同様のベネフィットを提供 • 柔軟性が⾼く、迅速にスケール(Compute/Storage) • Read / Write時の低レイテンシ • ⾼可⽤性 • 低価格 低価格 ⾼可⽤性 低レイテンシ 柔軟性 $ 24 7
  3. 9 Copyright © 2022, Oracle and/or its affiliates| Autonomous JSON

    Database JSONストレージのためのマネージド・サービス さらに優れたポイント • Autonomous Database 上で稼働 • ⾼い性能、可⽤性、セキュリティ、柔軟性 • エンタープライズ・データベース • ACID トランザクションに対応 • SQLを完全サポート • APEX に対応 • One-click でATPインスタンスにアップグレード可能 SQL REST
  4. 10 Copyright © 2022, Oracle and/or its affiliates | Autonomous

    JSON Database NoSQL および SQL からのアクセスをサポート API Oracle Database / Exadataに JSONドキュメントを保管 JSONに対するSQLベースの レポート作成と分析操作 SQL Autonomous Database SODA API を利⽤した アプリケーションからの操作 * * MongoDB互換のAPIも利⽤可能
  5. 12 Copyright © 2022, Oracle and/or its affiliates| Autonomous JSON

    Database NoSQLを利⽤したシンプルな開発 SQL JSON Autonomous Database SODA APIを使⽤して 開発されたアプリケーション Oracle Database / Exadataを使⽤した JSONドキュメントの保存と管理 JSONに対するSQLベースの レポート作成と分析操作
  6. 13 Copyright © 2022, 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
  7. 14 Copyright © 2022, Oracle and/or its affiliates| SODA (Simple

    Oracle Document Access) 様々な⾔語に対応 Java OracleClient client = new OracleRDBMSClient(); db = client.getDatabase(jdbcConn); OracleCollection col = db.admin.createCollection("purchase_orders"); col.admin().drop(); Node.js conn = await oracledb.getConnection(…); db = conn.getSodaDatabase(); col = await db.createCollection("purchase_orders"); await col.drop(); PL/SQL (and Oracle Application Express) col := dbms_soda.create_collection('purchase_orders'); select dbms_soda.drop_collection('purchase_orders') from dual; Python conn =cx_Oracle.connect(…); db = conn.getSodaDatabase(); col = db.createCollection("purchase_orders"); col.drop();
  8. 15 Copyright © 2022, Oracle and/or its affiliates| SODA (Simple

    Oracle Document Access) 対応ツール SQLcl • Oracleデータベース⽤のコマンドラインインターフェイス • SQLおよびPL/SQLを実⾏・操作 • SODAコマンドの発⾏が可能 SQL Developer Web • Autonomous Databaseに同梱された 開発ツール • SQLおよびPL/SQLを実⾏・操作 • SODAコマンドの発⾏が可能 SQL Developer Web
  9. MongoClient mongoClient = new MongoClient(); DB database = mongoClient.getDB("procurement"); DBCollection

    coll = database.getCollection("purchase_orders"); BasicDBObject po = new BasicDBObject(JSON.parse(json1)); coll.insert(po); DBObject query = new BasicDBObject("Requestor", "Alexis Bull"); DBCursor cursor = coll.find(query); DBObject doc = cursor.one(); OracleDatabase db = new OracleRDBMSClient().getDatabase(jdbcConnection); OracleCollection coll = db.admin().createCollection("purchase_orders"); OracleDocument po = db.createDocumentFromString(json1)); coll.insert(po); OracleDocument qbe = db.createDocumentFromString("""{"Requestor":"Alexis Bull"}"""); OracleCursor cursor = coll.find().filter(qbe).getCursor(); OracleDocument doc = cursor.next(); MongoDB と Oracle SODA との⽐較 Copyright © 2022, Oracle and/or its affiliates| 16
  10. 17 Copyright © 2022, Oracle and/or its affiliates| MongoDB と

    Oracle SODA との制限⽐較 2020/08時点 Autonomous JSON Database MongoDB Atlas ドキュメント最⼤サイズ 32 MB 16 MB ドキュメントの最⼤ネスト深度 1024レベル 100レベル コレクション毎の索引数 制限なし 64 複合索引のフィールド数 制限なし 32 ドキュメント全体への索引 JSON SEARCH Index なし サーバー側での関数の実装 Functions, Procedures, Triggers お勧めしない*1 トランザクション管理 常にACIDが有効 ACIDは明⽰的なAPI呼び出しによるリクエスト時のみ トランザクションの持続期間 制限なし デフォルト60秒。超えた場合はクエリが破棄される トランザクションサイズ 制限なし 1000 documents 以下が推奨 集計データサイズ 制限なし 100 MBのRAM制限 (超える場合は、allowDiskUse パラメータを利⽤) 複数ドキュメントにわたるSQL 可能 なし Source : https://blogs.oracle.com/jsondb/autonomous-json-database *1 : https://docs.mongodb.com/manual/tutorial/store-javascript-function-on-server/
  11. 18 Copyright © 2022, Oracle and/or its affiliates| MongoDB と

    Oracle SODA との制限⽐較 Autonomous JSON Database MongoDB Atlas auto-scaling ✓ X SQLアクセス ✓ X コレクション間の分析 ✓ X セキュリティ ✓ X コスト $2.74 / hour $3.95 / hour 2020/08時点
  12. 19 Copyright © 2022, Oracle and/or its affiliates| Autonomous JSON

    Database MongoDB よりも低コストで利⽤可能 Autonomous JSON Database Pricing: • $0.3226 OCPU per hour ($240/month) • $0.1591 TB per hour ($118.40/month) Autonomous JSON DB MongoDB Atlas Configuration 8 OCPU 1 TB storage M60 on AWS 16 vCPU (= 8 OCPU) 320 GB storage Price (on-demand) $2.74 / hour $3.95 / hour PLUS: Autonomous JSON Database は auto-scalingに対応 2020/09時点
  13. 21 Copyright © 2022, Oracle and/or its affiliates | Oracle

    Database API for MongoDB MongoDB⽤のAPIを提供 NEW︕ 既存のMongoDBからの移⾏が容易に • MongoDB⽤に作成されたアプリケーションでAutonomous Databaseにアクセス可能 注意点 • AJDまたはATPで利⽤可能 • アクセス制御リスト(ACL)で保護されたネットワークアクセスを使⽤する必要がある (許可されたIPおよびVCNアクセスタイプからの安全なアクセスを使⽤する) • プライベートエンドポイントおよびACLで保護されていないパブリックエンドポイント(すべての場所からのセキュアアク セスを許可)は⾮サポート 2021/12 $ mongosh --tls --tlsAllowInvalidCertificates 'mongodb://TESTUSER:<PASSWORD>@<database URL>.<OCI region>.oraclecloudapps.com:27017/admin?authMechanism=PLA IN&authSource=$external&ssl=true&loadBalanced=false' testuser> db.createCollection('fruit'); testuser> db.fruit.insertOne( {name:"orange", count:42} ) testuser> db.fruit.insertOne( {name:"apple", count:12, color: "red"} ) JSON MongoDB アプリケーション サービスコンソールの[開発]でMongoDB接続⽂字列を確認 →LoadBalancedプロパティをサポートしているドライバの場合 →LoadBalancedプロパティをサポートしていないドライバの場合 AJD or ATP
  14. 23 Copyright © 2022, Oracle and/or its affiliates| Autonomous JSON

    Database SQLを利⽤した柔軟な開発 JSON Autonomous Database SQL SODA APIを使⽤して 開発されたアプリケーション Oracle Database / Exadataを使⽤した JSONドキュメントの保存と管理 JSONに対するSQLベースの レポート作成と分析操作
  15. 24 Copyright © 2022, Oracle and/or its affiliates| シンプルな構⽂ SQL>

    select j.PO_DOCUMENT 2 from J_PURCHASEORDER j 3 where j.PO_DOCUMENT.PONumber = 1600; SQL> select * 2 from CUSTOMER NESTED jcol.orders.lineitems[*] 3 COLUMNS (lineid, quantity, prodid, upc, comments); SQL> select JSON_OBJECT(c.jcol.orders.lineitems FORMAT JSON) 2 from CUSTOMERS c; Field Access Collection unnesting JSON Generation
  16. 25 Copyright © 2022, Oracle and/or its affiliates JSONデータのための充実したSQL機能 空間分析(Spatial)

    • GeoJSON上で実⾏できる何百もの組み込み空間分析機能 機械学習(Machine Learning) • 30以上の内蔵MLアルゴリズムによるモデルの構築とスコア化 ⼿続き型⾔語 • JSON拡張機能、SODAをサポートを備えたPL/SQLを利⽤可能 プライベートデータベース • ドキュメントベースのきめ細かなセキュリティポリシー さらに Autonomous JSON Database はリレーショナルデータ⽤に20GBの領域を利⽤可能
  17. 27 Copyright © 2022, Oracle and/or its affiliates まとめ ドキュメントサービスに特化した3つ⽬のAutonomous

    Database JSONを中⼼とした開発のためのサービス • JSONを利⽤したNoSQL型アプリケーションの開発に特化 • JSONコレクションベースのデータモデル • 各種⾔語,ドライバにAPIを提供 開発を加速するための実績あるエンタープライズ・データベース機能 • ACID トランザクション • JSONデータに対するSQLによるレポーティング処理、分析処理が可能 Autonomous Database の特徴はそのまま • ⾼い可⽤性、セキュリティ、柔軟性 AJD
  18. 28 Copyright © 2022, Oracle and/or its affiliates| Autonomous JSON

    Database その他、特記事項 • Sharedでのみ利⽤可能(Dedicatedには現時点で未対応) • BYOLは選択不可(Liscence Includeのみ選択可能) • Always Free は選択不可 • アップグレードパス • Free ATPからのAJDへの変更が可能(Free ADWからは不可) • AJDからATPへの変更が可能(ATPからAJDへのダウングレードは不可、ADWへの変更は不可) • APEX, OML, SQL Developer Webに対応 • Auto Scaling、Autonomous Data Guard、クローンによる複製、Data Safeに対応 • その他機能制限については以下マニュアルを参照ください • https://docs.oracle.com/en/cloud/paas/autonomous-json-database/ajdug/experienced- database-users.html
  19. 29 Copyright © 2022, Oracle and/or its affiliates 良くある質問 ATPとAJDとの違いは何ですか︖

    ATPとAJDの技術的な違いは何ですか︖ ATPとAJDの技術的な違いは、AJDは20GBの⾮JSONデータの制限があることだけです。 他のすべての機能、機能、パフォーマンスは同じです。 AJDは、これまでコスト観点でOracle Databaseを検討できていなかったお客様・開発 者の⽅々に、⾮常にお得な価格でOracle Database をお使いいただけるサービスです。
  20. 30 Copyright © 2022, Oracle and/or its affiliates 良くある質問 ATPとAJDとの違いは何ですか︖

    MongoDBからのデータ移⾏はどうすれば良いですか︖ MongoDBのエクスポートユーティリティを利⽤し、JSON形式のファイルに出⼒、AJDに ロードします。