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 NoSQL Database Cloud Service 技術詳細
Search
oracle4engineer
PRO
August 25, 2023
Technology
850
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Oracle NoSQL Database Cloud Service 技術詳細
oracle4engineer
PRO
August 25, 2023
More Decks by oracle4engineer
See All by oracle4engineer
【Oracle AI Spotlight ウェビナー】クラウド移行の成否を分けるデータ基盤の配置戦略 ― マルチクラウドやソブリンクラウドで広がるデータ基盤の選択肢
oracle4engineer
PRO
1
13
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
100
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
2
220
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
2
1.1k
もうプロンプトは書かない!? ループエンジニアリング入門
oracle4engineer
PRO
2
440
[ OracleTechnologyNight#102]SQL性能改善の武器としてのパラレル実行詳細
oracle4engineer
PRO
1
240
OracleTechnologyNight101_Oracle_Backup_Recovery_Strategy_from_REDO_UNDO
oracle4engineer
PRO
1
540
Oracle Cloud Infrastructure:2026年7月度サービス・アップデート
oracle4engineer
PRO
1
900
Lakehouseの要!Open Table Format深掘り(OCHaCafe Season 11 #6)
oracle4engineer
PRO
2
170
Other Decks in Technology
See All in Technology
Does an AI Watermark Survive Translation?
machinetranslation
0
520
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
280
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.5k
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
140
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
3
750
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
230
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
130
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
250
【試作】IoT x AIエージェント
happysamurai294
0
120
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
340
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
190
APIセキュリティを組織で実現するには~注力する点と設計・実装に入れたい対策~
riiimparm
3
930
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Prompt Engineering for Job Search
mfonobong
0
430
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
590
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
How to make the Groovebox
asonas
2
2.4k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Facilitating Awesome Meetings
lara
57
7.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Fireside Chat
paigeccino
42
4k
Transcript
Oracle NoSQL Database Cloud Service 技術詳細 日本オラクル株式会社 May. 2023
テーブル • KeyとColumnを持つRowを保持する • スキーマをあらかじめ定義する データの型 • STRING, LONG, BINARY,
ARRAY, MAPなど多種 • JSON型の保持が可能 • JSONの一部変更やJSONフィールド内にインデックスの付与など、 柔軟な管理/操作が可能 キャパシティ • 読込み容量(RU)/書込み容量(WU)/ストレージ容量 • テーブル毎にモードを設定 • Provisioned: キャパシティを手動で設定 • On-Demand: キャパシティが動的にスケール Oracle NoSQL Database Cloud Serviceのコンセプト Copyright © 2023, Oracle and/or its affiliates 2 Integer (key) String (data) String (data) Json (data) num1 string1 string1 json1 num2 string2 string2 json2 num3 string3 string3 json3 num4 string4 string4 json4 DATA CAPACITY PROVISIONED STORAGE READ WRITE NoSQL Table
データの分散配置とシャーディング • NoSQL CSでは、データのレプリケーションとシャーディングが内部的に行われている • どのように分散されているかはユーザからは見えない • 効果的にデータを分散/データにアクセスするためには以下の概念の理解が必要 Primary Key
• テーブル内のデータを一意にするための1つまたは複数の(複合)キーのこと Shard Key • Primary Keyの中から(複数)選択する • データを効率的に分散するためのキーとなる • Shard Keyが同様のデータは物理的に同様の場所に保管されることになる Oracle NoSQL Database Cloud Serviceのコンセプト Copyright © 2023, Oracle and/or its affiliates 3
Shard Keyによってデータは物理的に単一のShardに保管される • 物理的にデータをまとめることで、効率的なデータ操作が可能 • データの配置場所に偏りができるとパフォーマンスに悪影響 効果的に分散をするための、Shard Keyを選択する際の考慮すべき要素 • Cardinality
• user_countryのようにCardinalityの低いフィールドでは、データ分散の偏りができてしま う恐れがある • user_idのように、各Shard Keyが高いCardinalityを持つことで、効率的にデータを分 散配置することが可能 • Atomicity • Shard Keyを共有するデータのみがトランザクション処理の対象となる 設計時は、これら「効率的な分散」と「トランザクション処理の必要性」を考慮して行う Shard Keyの設計 Copyright © 2023, Oracle and/or its affiliates 4 Client Shard Shard データの偏りによるアクセスの集中 をHot shard問題という
整合性優先/スループット 優先の選択 API/SDKを用いてデータを 読み込む際に、整合性を 優先するオプションがある その際に消費するRUは通 常の2倍となる Time-To-Live テーブル作成時、テーブル 内のデータ残存期間を指
定できる 残存期間を過ぎたデータは ディスク上から削除される SQLクエリの実行 OnP製品と同様にSQLクエ リの実行が可能 子テーブル(子表)機能によ るJOINのサポート インデックス SQLクエリで利用可能な、 インデックスの付与が可能 JSON内のフィールドにも付 与できる Oracle NoSQL Database Cloud Serviceの機能 Copyright © 2023, Oracle and/or its affiliates 5 Client NoSQL 最新の結果を取得 Table created_at : 2020/11/11 created_at : 2020/11/12 TTL: 1DAY, 2020/11/12 SELECT id, firstname, lastname FROM Users WHERE firstname = "Taylor"; SELECT * FROM nosql where nosql.json.name = "Test"
Copyright © 2023, Oracle and/or its affiliates 6 テーブルには階層構造を持たせることが可能 •
LEFT OUTER JOINが可能になり、より柔軟にデータモデルの設計が可能 • テーブル同士のデータ結合のためにアプリケーションで操作を行う必要がなく、NoSQLデータベース上で完結 • 子テーブルは、親テーブルの主キーを継承 • 子テーブルにさらに子テーブルを持たせることが可能 • 親テーブル/子テーブルはそれぞれ独立してクエリ/APIの実行が可能 SQLクエリの実行 –子テーブル(子表) CREATE TABLE A ( ida INTEGER, a1 STRING, a2 INTEGER, PRIMARY KEY(ida)); -- ida が主キー CREATE TABLE A.B ( idb INTEGER, b1 STRING, a2 STRING, PRIMARY KEY(idb)); -- ida,idb が主キー CREATE TABLE A.B.C ( idc INTEGER, b1 STRING, c2 STRING, PRIMARY KEY(idc)); -- ida,idb,idc が主キー CREATE TABLE A.G ( idg INTEGER, g1 STRING, g2 DOUBLE, PRIMARY KEY(idg)); ▪子テーブルによるテーブル階層の構成
Copyright © 2023, Oracle and/or its affiliates 7 Indexを利用しない場合にも、WHERE句、ORDER BY句、GROUP
BY句などの利用は可能 • Indexを利用することで、SQLクエリのチューニングが可能 • query plan (問合せ実行計画の表示)によってチューニングを行う ※既存のレコードが変更(追加、更新または削除)されると、Indexの更新が走るので、追加で書込みユニットを消費 Index(索引)の利用 – query plan query planを表示し、検索実行時の 検索アルゴリズムを表示 https://docs.oracle.com/en/database/other-databases/nosql- database/22.2/sqlreferencefornosql/overview-query-plan.html
OCI SDKとNoSQL Driverの2パターン OCI SDKで接続 • OCI IAMやポリシーを用いた接続 • 他のOCIリソースやサービスとの相互運用
NoSQL Driverを用いた接続 • Config(APIキー)を用いた接続 • シミュレータやオンプレミス版との相互運用 アプリケーションとの接続 Copyright © 2023, Oracle and/or its affiliates 8
9 Copyright © 2023, Oracle and/or its affiliates データ追加時のサンプルコード (注)OCI
SDKの場合 • 既存のRowはすべて上書きする(デフォルトの動作) • Rowが存在しないときのみデータを追加する場合 • Rowが存在するときのみデータを更新する場合 • Rowが存在し、指定したバージョンと一致するときのみデータを更 新する場合* *なぜバージョンの概念が必要か? • 更新や削除を行う場合、Rowの値が変更され ていない場合にのみ操作を行うことが必要に なる場面がある • 同時にRowを操作するスレッドやプロセスが 複数存在し得るアプリでは特に有用 • OCI SDKの場合はetagでバージョンを表現す る • Rowが最初に追加された際に一意のバージョ ンが割り当てられ、そのRowに更新があった 際にはバージョンも更新される • Key, Valueの指定の仕方
10 Copyright © 2023, Oracle and/or its affiliates データ読出し時のサンプルコード (注)OCI
SDKの場合 • APIを利用したデータの読出し • SQLを利用したデータの読出し
NoSQL CSは、シミュレータを用いて開発環境を構築することが可能 1. https://www.oracle.com/downloads/cloud/nosql-cloud-sdk-downloads.htmlよりダウンロード 2. unzipして起動 3. オプションは以下のようになる シミュレータを用いた開発 Copyright
© 2023, Oracle and/or its affiliates 11 -host (default: localhost): allows control over the database host used -storePort (default: 5000): allows control over the database port used -httpPort (default: 8080): allows control over the HTTP port used -throttle (default: false): enables throttling based on declared throughput -verbose (default: false): adds verbosity to output. If set to true throttling exceptions will be thrown if throughput is exceeded.
NoSQLのSDKをダウンロード(https://www.oracle.com/downloads/cloud/nosql-cloud-java-driver- downloads.html)して、サンプルアプリをシミュレータの上で動かしてみる • localhost:8080で動作していることが分かる シミュレータを用いた開発 Copyright © 2023, Oracle and/or
its affiliates 12
None