Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Oracle NoSQL Database Cloud Service 技術詳細
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
oracle4engineer
PRO
August 25, 2023
Technology
860
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 Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
Oracle Cloud Infrastructure:2026年9月度サービス・アップデート
oracle4engineer
PRO
1
23
[2026 Oracle Technical Deep Dive] Apache Iceberg × Oracle AI Database -Oracle Autonomous AI Lakehouseが実現するAI時代のデータ基盤- (2026年9月17日開催)
oracle4engineer
PRO
0
4
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
4
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
3
[2026 Oracle Technical Deep Dive] オンプレミスDBのCloud移行アプローチ:移行計画に基づくメソッドとツールの選択 (2026年9月17日開催)
oracle4engineer
PRO
0
4
[2026 Oracle Technical Deep Dive] VMwareワークロードのOCI移行実践ガイド - OCVSでの継続利用からOCIコンピュートへの移行まで (2026年9月17日開催)
oracle4engineer
PRO
0
4
[2026 Oracle Technical Deep Dive] OCI AI Resilience -OCIのセキュリティ対策機能をきちんと使いこなす- (2026年9月17日開催)
oracle4engineer
PRO
0
4
[2026 Oracle Technical Deep Dive] AI時代のアプリケーションを支えるCloud NativeとJava EEモダナイゼーション (2026年9月17日開催)
oracle4engineer
PRO
0
5
Other Decks in Technology
See All in Technology
「大丈夫そう?」をObservabilityで確かめる
mrmtsu
0
200
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
120
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
310
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
780
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
0
860
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
150
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
250
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
1
490
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
210
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
100
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
450
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
1
650
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
Writing Fast Ruby
sferik
630
63k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Facilitating Awesome Meetings
lara
57
7.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Speed Design
sergeychernyshev
33
2.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
720
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.9k
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