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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
oracle4engineer
PRO
August 25, 2023
Technology
810
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 Databaseデータベース・サービスのメンテナンス(BaseDB/ExaDB-D/ExaDB-XS)
oracle4engineer
PRO
4
1.4k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.9k
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
CrossplaneによるCloud Native Control Plane
oracle4engineer
PRO
0
92
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
360
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
250
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
Oracle Database Gold Image
oracle4engineer
PRO
1
160
Other Decks in Technology
See All in Technology
LLMにもCAP定理があるという話
harukasakihara
0
280
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
200
Chainlitで作るお手軽チャットUI
ynt0485
0
170
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
200
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
710
失敗を経て、Harness Engineering で 大切にしたいことを考える / Learning from Failure: What Matters in Harness Engineering
bitkey
PRO
1
290
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
520
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
260
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
710
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.1k
地球に⽣きるAI —GeoAIと「中間領域」— / AI Living on Earth — GeoAI and the “Intermediate Layer” —
ykiyota
0
260
Microsoft Build Keynoteふりかえり
tomokusaba
0
120
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Claude Code のすすめ
schroneko
67
230k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
How to Talk to Developers About Accessibility
jct
2
230
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The browser strikes back
jonoalderson
0
1.2k
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