SlideShare a Scribd company logo
1 of 43
Download to read offline
Azure Cosmos DB で
始める Java + NoSQL
開発
JJUG CCC 2020 Fall
@mappie_kochi
⾃⼰紹介
• Yuji Masaoka (まっぴぃ⊿)
• Twitter: @mappie_kochi
• GitHub: @ymasaoka
• ⻘い R の中の⼈
• 情シス担当
• 普段は SharePoint や SQL Server をメインで担当
• コミュニティ
• JSSUG (Japan SQL Server User Group) Organizer
• JCDUG (Japan Azure Cosmos DB User Group) Organizer
2
Agenda
• Azure Cosmos DB 概要
• Azure Cosmos DB Java SDK
• Azure Cosmos DB を使⽤した Java アプリ開発
• 環境作成
• Azure Cosmos DB への接続
• Azure Cosmos DB へのクエリ実⾏
• Azure Cosmos DB 変更フィードの取得
3
Azure Cosmos DB とは
Azure Cosmos DB 概要
Azure Cosmos DB
• あらゆる規模に対応するオープン API を備えた⾼速な NoSQL
データベース
• 読み取りと書き込みのレイテンシーが 1 桁ミリ秒を要求される運⽤
/分析ワークロード向けに特化
• 99.9 % 以上の⾼可⽤性 (SLA)、スループットと⼀貫性を保証
5
サポートしている API
6
サービス体系
• プロビジョニング or サーバレス
• プロビジョニングの場合、Free Tier (無償枠) が存在
• プロビジョニングの場合、スループットは無制限でスケールアウト可能
• 既存のドライバーを使⽤することが可能
• MongoDB、Cassandra、Gremlin に対応
• 既存のコードを Cosmos DB 向けに改修する必要なし
• 簡単ワンクリックでグローバル分散が可能
7
Free Tier (無償枠)
• 毎⽉最初の 400 RU/s と 5GB のストレージが無料
• 超過した分から課⾦が⾏われる
• 1 Azure サブスクリプションあたり、1 つのみ設定可能
• Azure Cosmos DB アカウント単位で設定
8
要求ユニット (RU/s)
• スループットの単位
• 1 RU = シングルパーティションから 1 KB のドキュメントを 1 回読み取り
• 設定できる最⼩値は 400 RU/s (1 秒あたり 400 RU)
• RU は 100 RU/s 刻みでスケーリング可能
• ⼿動構成やオートスケールの設定が可能
• 書き込み (PUT) は 2 倍の RU が必要
9
データベース / コンテナー / アイテム
10
https://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items
データベース / コンテナー / アイテム
• データベース
• 名前空間 (package/namespace) のようなもの
• コンテナーを管理する単位
• コンテナー
• いわゆる RDB でいうところのテーブルや NoSQL のコレクションに相当
• パーティションキー (≒シャードキー) に基づいてデータを分散
• 同じパーティションのデータは 20 GB まで登録可能
• アイテム
• コンテナー内に格納されるデータ
• 1 アイテム 2 MB まで
11
Azure Cosmos DB の強み
Azure Cosmos DB 概要
12
スキーマレスと⾃動インデックス作成
• すべてのデータのインデックス付けを⾃動で⾏い、⾼速クエリを提供
• すべてのコンテナーに対して、コンテナーのアイテムのインデックスを作成する⽅
法を指⽰
• 「同期」と「なし」の 2 つのインデックス作成モードをサポート
• 既定のインデックス作成ポリシーは⾃動で有効 (automatic = true)
• カスタムインデックス作成ポリシーも設定可能
• 複合インデックス
• 空間インデックス
• プロパティパスの包含・除外の指定
13
包括的な SLA と
99 パーセンタイルの低待機時間
• SLA (Service Level Agreement)
• 99.9 %
• Azure Cosmos DB サーバレス利⽤時
• 99.99 %
• 単⼀リージョン、または複数リージョンにプロビジョニングしているが書き込
みは 1 リージョンのみに限定している時
• 99.999 %
• 複数リージョンにプロビジョニング、かつ複数のリージョンで書き込み可能
にしている時
• 99 パーセンタイル
• 世界中で読み取り (インデックス付き) と書き込みの両⽅に対して適⽤
• 10 ミリ秒未満の待機時間を保証
14
⼈気のある OSS API をそのまま利⽤
• 既存のクライアントドライバー(ツール)の利⽤が可能
• Gremlin、Cassandra、MongoDB
• 移⾏が簡単
• 少ない労⼒で、業界最⾼レベルの SLA が提供されるフルマネージドのサー
ビスが利⽤可能
• ニーズに応じて、スケーリングが容易に可能に
• アプリケーションの移植性を保持したまま、クラウドベンダーに⾮依存な状態を
維持可能
15
Azure Synapse Link
16
Azure Synapse Link
• HTAP (Hybrid Transaction Analytical Processing)
• クラウドネイティブのハイブリットトランザクションおよび分析処理
• グローバルに分散された⼤規模運⽤データを ETL 対応なしで、ほぼリアルタ
イムに分析することが可能
• Azure Synapse Analytics (SQL DW の進化版) と接続し、Spark
や SQL を使⽤
• Cosmos DB のトランザクションワークロードのパフォーマンスに影響を与えず、
BI や分析、機械学習パイプラインを実⾏可能
17
Azure Synapse Link
18
トランザクションストア 分析ストア
トランザクションの読み
取りおよび書き込み用に
最適化された行ストア
分析クエリ用に最適化された
列ストア
運用データ
機械学習
ビックデータ分析
BI ダッシュボード
自動で同期自動で同期
SDK について
Azure Cosmos DB Java SDK 概要
SQL API を利⽤する場合
• Core (SQL) API ⽤ Azure Cosmos DB Java SDK v4 を
利⽤
• maven
• https://mvnrepository.com/artifact/com.azure/azure-
cosmos
• GitHub
• https://github.com/Azure/azure-sdk-for-
java/tree/master/sdk/cosmos/azure-cosmos
• API Docs
• https://docs.microsoft.com/ja-
jp/java/api/overview/azure/cosmos-readme?view=azure-
java-stable
SQL API 以外を利⽤する場合
• Java MongoDB Driver
• https://docs.mongodb.com/drivers/java
• Ver. 3.2 endpoint: *.documents.azure.com
• Ver. 3.6 endpoint: *.mongo.cosmos.azure.com
• DataStax Java Driver for Apache Cassandra
• https://docs.datastax.com/en/developer/java-driver/4.9/
• 3.5 以上
• gremlin-java Driver
• http://tinkerpop.apache.org/javadocs/current/full/
• 3.2.0 以上
21
Core (SQL) API ⽤ Azure
Cosmos DB Java SDK v4
• GA (General Availability) – Jun 15th, 2020
• JDK 8 以上
• 負荷時のリクエストのスループットと安定性を⼤幅に最適化
• 古い Java SDK (v2 および v3) よりも 20% パフォーマンスが向上
• 機能追加
• プログラムによる Autoscale のスループットのプロビジョニングを完全サポート
• DISTINCT クエリに対応
• Analytical Time-to-Live (TTL) に対応
22
環境作成
Azure Cosmos DB を使⽤した Java アプリ開発
開発環境準備
• JDK 8+
• IDE (今回は Eclipse を使⽤)
• 有効な Azure Cosmos DB アカウント
24
Azure Cosmos DB アカウント作成
• Azure ポータルや Azure CLI などから作成
• アカウント作成時、どの API を使⽤するか選択が必須
• Core (SQL)、MongoDB、Cassandra、Table、Gremlin
• アカウント作成にはお⾦はかからない
• データベースやコンテナーを作成すると課⾦が発⽣し始める
• 以降のスライドでは、SQL API を選択した過程で進めます
25
Azure Cosmos DB への接続
Azure Cosmos DB を使⽤した Java アプリ開発
26
接続情報を取得
• Azure ポータル上などで、接続に必要な情報を取得
接続クライアントを⽣成
• CosmosClient (同期) / CosmosAsyncClient (⾮同期)
• CosmosClientBuilder を使⽤したクライアント⽣成
• .endpoint :ホスト名指定
• .key :キーを指定
• .preferredRegions :接続先リージョンを指定(任意)
• .consistencyLevel :整合性を指定(任意)
• .buildClient :CosmosClient を⽣成
• .buildAsyncClient :CosmosAsyncClient を⽣成
例: CosmosClient を⽣成
29
private CosmosClient client;
private final String HOST = “<Cosmos DB のホスト>”;
private final String MASTER_KEY = “プライマリまたはセカンダリのパスワード”;
client = new CosmosClientBuilder()
.endpoint(HOST)
.key(MASTER_KEY)
.preferredRegions(Collection.singletonList(“Japan East”))
.consistencyLevel(ConsistencyLevel.SESSION)
.buildClient();
データベースを作成・取得
• CosmosDatabase
• CosmosClient を使⽤してデータベースを作成
• createDatabase :DB を新規作成
• createDatabaseIfNotExists :指定した DB がなければ新規作成
• getDatabase : 指定した id に紐づくデータベースクライアントを取得
例: CosmosDatabase を⽣成
31
private CosmosClient client;
private CosmosDatabase database;
private final String DATABASE_ID = “<任意のデータベース(id)名>”;
// CosmosClient ⽣成後
CosmosDatabaseResponse databaseResponse
= client.createDatabaseIfNotExists(DATABASE_ID);
database = client.getDatabase(databaseResponse.getProperties().getId());
コンテナーを作成・取得
• CosmosContainer
• CosmosDatabase を使⽤してコンテナーを作成
• createContainer :コンテナーを新規作成
• createContainerIfNotExists :指定したコンテナーがなければ新規作成
• getContainer :指定した id に紐づくコンテナークライアントを取得
32
例: CosmosClient を⽣成
33
private CosmosClient client;
private CosmosDatabase database;
private CosmosContainer container;
private final String CONTAINER_ID = “<任意のデータベース(id)名>”;
private final String PARTITION_KEY = “<任意のパーティションキー>”;
// CosmosClient、CosmosDatabase ⽣成後
CosmosContainerProperties properties = new CosmosContainerProperties(
CONTAINER_ID,
PARTITION_KEY
);
CosmosContainerResponse containerResponse
= database.createContainerIfNotExists(properties);
container = database.getContainer(containerResponse.getProperties().getId());
Demo
34
クエリ実⾏
Azure Cosmos DB を使⽤した Java アプリ開発
35
CRUD 実⾏
• ActiveRecord のようにすることも、クエリを作成して実⾏することも
可能
• CosmosContainer を使⽤して操作
36
Demo
37
変更フィードの取得
Azure Cosmos DB を使⽤した Java アプリ開発
38
変更フィードとは
• コンテナーに対して⾏われたアイテムの更新内容を取得
• アイテムの挿⼊や更新の最終更新内容を取得
• 今後、更新に加えて削除も対応される予定
• 今後、プルモデルも登場する予定
• 下記の API で作成した Cosmos DB アカウントで有効
• Core (SQL)、MongoDB、Cassandra、Gremlin
Demo
• セッション時間の都合上、詳しくは Web で
• GitHub
• Azure-Samples / azure-cosmos-java-sql-app-example
40
まとめ
41
Java + Cosmos DB (NoSQL)
• Cosmos DB は Azure のフルマネージドな NoSQL のサービス
• データベース
• コンテナー
• アイテム
• Free Tier (無償枠) もある
• 業界最⾼レベルの SLA を利⽤可能
• 99.9 % 以上
• 99 パーセンタイルで 10 ミリ秒未満の待機時間を保証
• 好きな API を選択し、対応する Java SDK を利⽤して開発
Thank you !!
Any Questions?
@mappie_kochi
43

More Related Content

What's hot

SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)Naohiro Fujie
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15OpenID Foundation Japan
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介Tetsutaro Watanabe
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンKentaro Yoshida
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いota42y
 
Azure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれAzure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれDevTakas
 
ブロックチェーン間のインターオペラビリティ概論
ブロックチェーン間のインターオペラビリティ概論ブロックチェーン間のインターオペラビリティ概論
ブロックチェーン間のインターオペラビリティ概論Hyperleger Tokyo Meetup
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることShingo Fukui
 
現場からみた Azure リファレンスアーキテクチャ答え合わせ
現場からみた Azure リファレンスアーキテクチャ答え合わせ現場からみた Azure リファレンスアーキテクチャ答え合わせ
現場からみた Azure リファレンスアーキテクチャ答え合わせKuniteru Asami
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified IDNaohiro Fujie
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門土岐 孝平
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについてKumazaki Hiroki
 

What's hot (20)

SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
統合ID管理入門
統合ID管理入門統合ID管理入門
統合ID管理入門
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
Azure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれAzure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれ
 
ブロックチェーン間のインターオペラビリティ概論
ブロックチェーン間のインターオペラビリティ概論ブロックチェーン間のインターオペラビリティ概論
ブロックチェーン間のインターオペラビリティ概論
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
 
現場からみた Azure リファレンスアーキテクチャ答え合わせ
現場からみた Azure リファレンスアーキテクチャ答え合わせ現場からみた Azure リファレンスアーキテクチャ答え合わせ
現場からみた Azure リファレンスアーキテクチャ答え合わせ
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについて
 
CQRS+ES on GCP
CQRS+ES on GCPCQRS+ES on GCP
CQRS+ES on GCP
 

Similar to Azure Cosmos DB で始める Java + NoSQL 開発

Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンKazuyuki Miyake
 
Start learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse LinkStart learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse LinkOshitari_kochi
 
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...Naoki (Neo) SATO
 
オープンソーステクノロジー対応の App Service と Azure Database Servicesを活用した Webシステムデザイン
オープンソーステクノロジー対応の App Service と Azure Database Servicesを活用した Webシステムデザインオープンソーステクノロジー対応の App Service と Azure Database Servicesを活用した Webシステムデザイン
オープンソーステクノロジー対応の App Service と Azure Database Servicesを活用した WebシステムデザインDaisuke Masubuchi
 
Introduction to DocumentDB
Introduction to DocumentDBIntroduction to DocumentDB
Introduction to DocumentDBTakekazu Omi
 
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめYasuhiro Araki, Ph.D
 
Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary Hirano Kazunori
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理Oshitari_kochi
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたGoAzure
 
2011/12/3 わんくま同盟
2011/12/3 わんくま同盟2011/12/3 わんくま同盟
2011/12/3 わんくま同盟貴仁 大和屋
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 
Cosmos DB 入門 multi model multi API編
Cosmos DB 入門 multi model multi API編Cosmos DB 入門 multi model multi API編
Cosmos DB 入門 multi model multi API編Takekazu Omi
 
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Service
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Serviceモバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Service
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a ServiceYuta Matsumura
 
[DI04] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
[DI04] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう[DI04] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
[DI04] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそうde:code 2017
 
[de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
[de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう[de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
[de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそうNaoki (Neo) SATO
 
AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...
AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...
AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...Norio Sashizaki
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたSunao Tomita
 
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~貴志 上坂
 

Similar to Azure Cosmos DB で始める Java + NoSQL 開発 (20)

Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 
Start learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse LinkStart learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse Link
 
Sql azure入門
Sql azure入門Sql azure入門
Sql azure入門
 
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
 
オープンソーステクノロジー対応の App Service と Azure Database Servicesを活用した Webシステムデザイン
オープンソーステクノロジー対応の App Service と Azure Database Servicesを活用した Webシステムデザインオープンソーステクノロジー対応の App Service と Azure Database Servicesを活用した Webシステムデザイン
オープンソーステクノロジー対応の App Service と Azure Database Servicesを活用した Webシステムデザイン
 
Introduction to DocumentDB
Introduction to DocumentDBIntroduction to DocumentDB
Introduction to DocumentDB
 
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
 
Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
 
2011/11/26 Dot netlab
2011/11/26 Dot netlab2011/11/26 Dot netlab
2011/11/26 Dot netlab
 
2011/12/3 わんくま同盟
2011/12/3 わんくま同盟2011/12/3 わんくま同盟
2011/12/3 わんくま同盟
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
Cosmos DB 入門 multi model multi API編
Cosmos DB 入門 multi model multi API編Cosmos DB 入門 multi model multi API編
Cosmos DB 入門 multi model multi API編
 
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Service
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Serviceモバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Service
モバイルアプリ開発者にも知ってほしい Microsoft AzureのDatabase as a Service
 
[DI04] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
[DI04] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう[DI04] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
[DI04] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
 
[de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
[de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう[de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
[de:code 2017] 使わないのはもったいない! プラネット スケールの NoSQL サービス「Azure Cosmos DB」を使いこなそう
 
AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...
AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...
AKS on Azure Stack HCI/Windows Serverのデプロイ _ Deploying AKS on Azure Stack HCI...
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
 
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
 

More from Oshitari_kochi

Azure SQL MI Link で移行も DR もポチッとな、の時代へ
Azure SQL MI Link で移行も DR もポチッとな、の時代へAzure SQL MI Link で移行も DR もポチッとな、の時代へ
Azure SQL MI Link で移行も DR もポチッとな、の時代へOshitari_kochi
 
Azure Policy + Azure RBAC の導入に際して得たアレコレ
Azure Policy + Azure RBAC の導入に際して得たアレコレAzure Policy + Azure RBAC の導入に際して得たアレコレ
Azure Policy + Azure RBAC の導入に際して得たアレコレOshitari_kochi
 
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選Oshitari_kochi
 
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Oshitari_kochi
 
試験スキルのアウトラインから得たMCP試験受験のコツ
試験スキルのアウトラインから得たMCP試験受験のコツ試験スキルのアウトラインから得たMCP試験受験のコツ
試験スキルのアウトラインから得たMCP試験受験のコツOshitari_kochi
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphOshitari_kochi
 
ここから始めましょう、イチからーーいいえ、Cosmosから!
ここから始めましょう、イチからーーいいえ、Cosmosから!ここから始めましょう、イチからーーいいえ、Cosmosから!
ここから始めましょう、イチからーーいいえ、Cosmosから!Oshitari_kochi
 
Azure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてAzure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてOshitari_kochi
 
Azure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについてAzure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについてOshitari_kochi
 
About entities of Azure Cosmos DB
About entities of Azure Cosmos DBAbout entities of Azure Cosmos DB
About entities of Azure Cosmos DBOshitari_kochi
 
Azure Synapse Link for Azure Cosmos DB
Azure Synapse Link for Azure Cosmos DBAzure Synapse Link for Azure Cosmos DB
Azure Synapse Link for Azure Cosmos DBOshitari_kochi
 
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recapOshitari_kochi
 
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話Oshitari_kochi
 
Get started with future C# .Net development with Docker
Get started with future C# .Net development with DockerGet started with future C# .Net development with Docker
Get started with future C# .Net development with DockerOshitari_kochi
 
Start Cosmos DB with VSCode Extension
Start Cosmos DB with VSCode ExtensionStart Cosmos DB with VSCode Extension
Start Cosmos DB with VSCode ExtensionOshitari_kochi
 
Summary of SQL Database Updates
Summary of SQL Database UpdatesSummary of SQL Database Updates
Summary of SQL Database UpdatesOshitari_kochi
 
Summary of SQL Server 2019 new features
Summary of SQL Server 2019 new featuresSummary of SQL Server 2019 new features
Summary of SQL Server 2019 new featuresOshitari_kochi
 
Start SQL Server with Docker
Start SQL Server with DockerStart SQL Server with Docker
Start SQL Server with DockerOshitari_kochi
 
Explains Microsoft Extensibility SDK for Java for SQL Server
Explains Microsoft Extensibility SDK for Java for SQL ServerExplains Microsoft Extensibility SDK for Java for SQL Server
Explains Microsoft Extensibility SDK for Java for SQL ServerOshitari_kochi
 
Tips for passing AZ-103 once
Tips for passing AZ-103 onceTips for passing AZ-103 once
Tips for passing AZ-103 onceOshitari_kochi
 

More from Oshitari_kochi (20)

Azure SQL MI Link で移行も DR もポチッとな、の時代へ
Azure SQL MI Link で移行も DR もポチッとな、の時代へAzure SQL MI Link で移行も DR もポチッとな、の時代へ
Azure SQL MI Link で移行も DR もポチッとな、の時代へ
 
Azure Policy + Azure RBAC の導入に際して得たアレコレ
Azure Policy + Azure RBAC の導入に際して得たアレコレAzure Policy + Azure RBAC の導入に際して得たアレコレ
Azure Policy + Azure RBAC の導入に際して得たアレコレ
 
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
 
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
 
試験スキルのアウトラインから得たMCP試験受験のコツ
試験スキルのアウトラインから得たMCP試験受験のコツ試験スキルのアウトラインから得たMCP試験受験のコツ
試験スキルのアウトラインから得たMCP試験受験のコツ
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL Graph
 
ここから始めましょう、イチからーーいいえ、Cosmosから!
ここから始めましょう、イチからーーいいえ、Cosmosから!ここから始めましょう、イチからーーいいえ、Cosmosから!
ここから始めましょう、イチからーーいいえ、Cosmosから!
 
Azure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてAzure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについて
 
Azure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについてAzure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについて
 
About entities of Azure Cosmos DB
About entities of Azure Cosmos DBAbout entities of Azure Cosmos DB
About entities of Azure Cosmos DB
 
Azure Synapse Link for Azure Cosmos DB
Azure Synapse Link for Azure Cosmos DBAzure Synapse Link for Azure Cosmos DB
Azure Synapse Link for Azure Cosmos DB
 
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
 
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
 
Get started with future C# .Net development with Docker
Get started with future C# .Net development with DockerGet started with future C# .Net development with Docker
Get started with future C# .Net development with Docker
 
Start Cosmos DB with VSCode Extension
Start Cosmos DB with VSCode ExtensionStart Cosmos DB with VSCode Extension
Start Cosmos DB with VSCode Extension
 
Summary of SQL Database Updates
Summary of SQL Database UpdatesSummary of SQL Database Updates
Summary of SQL Database Updates
 
Summary of SQL Server 2019 new features
Summary of SQL Server 2019 new featuresSummary of SQL Server 2019 new features
Summary of SQL Server 2019 new features
 
Start SQL Server with Docker
Start SQL Server with DockerStart SQL Server with Docker
Start SQL Server with Docker
 
Explains Microsoft Extensibility SDK for Java for SQL Server
Explains Microsoft Extensibility SDK for Java for SQL ServerExplains Microsoft Extensibility SDK for Java for SQL Server
Explains Microsoft Extensibility SDK for Java for SQL Server
 
Tips for passing AZ-103 once
Tips for passing AZ-103 onceTips for passing AZ-103 once
Tips for passing AZ-103 once
 

Recently uploaded

TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 

Recently uploaded (11)

What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 

Azure Cosmos DB で始める Java + NoSQL 開発

  • 1. Azure Cosmos DB で 始める Java + NoSQL 開発 JJUG CCC 2020 Fall @mappie_kochi
  • 2. ⾃⼰紹介 • Yuji Masaoka (まっぴぃ⊿) • Twitter: @mappie_kochi • GitHub: @ymasaoka • ⻘い R の中の⼈ • 情シス担当 • 普段は SharePoint や SQL Server をメインで担当 • コミュニティ • JSSUG (Japan SQL Server User Group) Organizer • JCDUG (Japan Azure Cosmos DB User Group) Organizer 2
  • 3. Agenda • Azure Cosmos DB 概要 • Azure Cosmos DB Java SDK • Azure Cosmos DB を使⽤した Java アプリ開発 • 環境作成 • Azure Cosmos DB への接続 • Azure Cosmos DB へのクエリ実⾏ • Azure Cosmos DB 変更フィードの取得 3
  • 4. Azure Cosmos DB とは Azure Cosmos DB 概要
  • 5. Azure Cosmos DB • あらゆる規模に対応するオープン API を備えた⾼速な NoSQL データベース • 読み取りと書き込みのレイテンシーが 1 桁ミリ秒を要求される運⽤ /分析ワークロード向けに特化 • 99.9 % 以上の⾼可⽤性 (SLA)、スループットと⼀貫性を保証 5
  • 7. サービス体系 • プロビジョニング or サーバレス • プロビジョニングの場合、Free Tier (無償枠) が存在 • プロビジョニングの場合、スループットは無制限でスケールアウト可能 • 既存のドライバーを使⽤することが可能 • MongoDB、Cassandra、Gremlin に対応 • 既存のコードを Cosmos DB 向けに改修する必要なし • 簡単ワンクリックでグローバル分散が可能 7
  • 8. Free Tier (無償枠) • 毎⽉最初の 400 RU/s と 5GB のストレージが無料 • 超過した分から課⾦が⾏われる • 1 Azure サブスクリプションあたり、1 つのみ設定可能 • Azure Cosmos DB アカウント単位で設定 8
  • 9. 要求ユニット (RU/s) • スループットの単位 • 1 RU = シングルパーティションから 1 KB のドキュメントを 1 回読み取り • 設定できる最⼩値は 400 RU/s (1 秒あたり 400 RU) • RU は 100 RU/s 刻みでスケーリング可能 • ⼿動構成やオートスケールの設定が可能 • 書き込み (PUT) は 2 倍の RU が必要 9
  • 10. データベース / コンテナー / アイテム 10 https://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items
  • 11. データベース / コンテナー / アイテム • データベース • 名前空間 (package/namespace) のようなもの • コンテナーを管理する単位 • コンテナー • いわゆる RDB でいうところのテーブルや NoSQL のコレクションに相当 • パーティションキー (≒シャードキー) に基づいてデータを分散 • 同じパーティションのデータは 20 GB まで登録可能 • アイテム • コンテナー内に格納されるデータ • 1 アイテム 2 MB まで 11
  • 12. Azure Cosmos DB の強み Azure Cosmos DB 概要 12
  • 13. スキーマレスと⾃動インデックス作成 • すべてのデータのインデックス付けを⾃動で⾏い、⾼速クエリを提供 • すべてのコンテナーに対して、コンテナーのアイテムのインデックスを作成する⽅ 法を指⽰ • 「同期」と「なし」の 2 つのインデックス作成モードをサポート • 既定のインデックス作成ポリシーは⾃動で有効 (automatic = true) • カスタムインデックス作成ポリシーも設定可能 • 複合インデックス • 空間インデックス • プロパティパスの包含・除外の指定 13
  • 14. 包括的な SLA と 99 パーセンタイルの低待機時間 • SLA (Service Level Agreement) • 99.9 % • Azure Cosmos DB サーバレス利⽤時 • 99.99 % • 単⼀リージョン、または複数リージョンにプロビジョニングしているが書き込 みは 1 リージョンのみに限定している時 • 99.999 % • 複数リージョンにプロビジョニング、かつ複数のリージョンで書き込み可能 にしている時 • 99 パーセンタイル • 世界中で読み取り (インデックス付き) と書き込みの両⽅に対して適⽤ • 10 ミリ秒未満の待機時間を保証 14
  • 15. ⼈気のある OSS API をそのまま利⽤ • 既存のクライアントドライバー(ツール)の利⽤が可能 • Gremlin、Cassandra、MongoDB • 移⾏が簡単 • 少ない労⼒で、業界最⾼レベルの SLA が提供されるフルマネージドのサー ビスが利⽤可能 • ニーズに応じて、スケーリングが容易に可能に • アプリケーションの移植性を保持したまま、クラウドベンダーに⾮依存な状態を 維持可能 15
  • 17. Azure Synapse Link • HTAP (Hybrid Transaction Analytical Processing) • クラウドネイティブのハイブリットトランザクションおよび分析処理 • グローバルに分散された⼤規模運⽤データを ETL 対応なしで、ほぼリアルタ イムに分析することが可能 • Azure Synapse Analytics (SQL DW の進化版) と接続し、Spark や SQL を使⽤ • Cosmos DB のトランザクションワークロードのパフォーマンスに影響を与えず、 BI や分析、機械学習パイプラインを実⾏可能 17
  • 18. Azure Synapse Link 18 トランザクションストア 分析ストア トランザクションの読み 取りおよび書き込み用に 最適化された行ストア 分析クエリ用に最適化された 列ストア 運用データ 機械学習 ビックデータ分析 BI ダッシュボード 自動で同期自動で同期
  • 19. SDK について Azure Cosmos DB Java SDK 概要
  • 20. SQL API を利⽤する場合 • Core (SQL) API ⽤ Azure Cosmos DB Java SDK v4 を 利⽤ • maven • https://mvnrepository.com/artifact/com.azure/azure- cosmos • GitHub • https://github.com/Azure/azure-sdk-for- java/tree/master/sdk/cosmos/azure-cosmos • API Docs • https://docs.microsoft.com/ja- jp/java/api/overview/azure/cosmos-readme?view=azure- java-stable
  • 21. SQL API 以外を利⽤する場合 • Java MongoDB Driver • https://docs.mongodb.com/drivers/java • Ver. 3.2 endpoint: *.documents.azure.com • Ver. 3.6 endpoint: *.mongo.cosmos.azure.com • DataStax Java Driver for Apache Cassandra • https://docs.datastax.com/en/developer/java-driver/4.9/ • 3.5 以上 • gremlin-java Driver • http://tinkerpop.apache.org/javadocs/current/full/ • 3.2.0 以上 21
  • 22. Core (SQL) API ⽤ Azure Cosmos DB Java SDK v4 • GA (General Availability) – Jun 15th, 2020 • JDK 8 以上 • 負荷時のリクエストのスループットと安定性を⼤幅に最適化 • 古い Java SDK (v2 および v3) よりも 20% パフォーマンスが向上 • 機能追加 • プログラムによる Autoscale のスループットのプロビジョニングを完全サポート • DISTINCT クエリに対応 • Analytical Time-to-Live (TTL) に対応 22
  • 23. 環境作成 Azure Cosmos DB を使⽤した Java アプリ開発
  • 24. 開発環境準備 • JDK 8+ • IDE (今回は Eclipse を使⽤) • 有効な Azure Cosmos DB アカウント 24
  • 25. Azure Cosmos DB アカウント作成 • Azure ポータルや Azure CLI などから作成 • アカウント作成時、どの API を使⽤するか選択が必須 • Core (SQL)、MongoDB、Cassandra、Table、Gremlin • アカウント作成にはお⾦はかからない • データベースやコンテナーを作成すると課⾦が発⽣し始める • 以降のスライドでは、SQL API を選択した過程で進めます 25
  • 26. Azure Cosmos DB への接続 Azure Cosmos DB を使⽤した Java アプリ開発 26
  • 28. 接続クライアントを⽣成 • CosmosClient (同期) / CosmosAsyncClient (⾮同期) • CosmosClientBuilder を使⽤したクライアント⽣成 • .endpoint :ホスト名指定 • .key :キーを指定 • .preferredRegions :接続先リージョンを指定(任意) • .consistencyLevel :整合性を指定(任意) • .buildClient :CosmosClient を⽣成 • .buildAsyncClient :CosmosAsyncClient を⽣成
  • 29. 例: CosmosClient を⽣成 29 private CosmosClient client; private final String HOST = “<Cosmos DB のホスト>”; private final String MASTER_KEY = “プライマリまたはセカンダリのパスワード”; client = new CosmosClientBuilder() .endpoint(HOST) .key(MASTER_KEY) .preferredRegions(Collection.singletonList(“Japan East”)) .consistencyLevel(ConsistencyLevel.SESSION) .buildClient();
  • 30. データベースを作成・取得 • CosmosDatabase • CosmosClient を使⽤してデータベースを作成 • createDatabase :DB を新規作成 • createDatabaseIfNotExists :指定した DB がなければ新規作成 • getDatabase : 指定した id に紐づくデータベースクライアントを取得
  • 31. 例: CosmosDatabase を⽣成 31 private CosmosClient client; private CosmosDatabase database; private final String DATABASE_ID = “<任意のデータベース(id)名>”; // CosmosClient ⽣成後 CosmosDatabaseResponse databaseResponse = client.createDatabaseIfNotExists(DATABASE_ID); database = client.getDatabase(databaseResponse.getProperties().getId());
  • 32. コンテナーを作成・取得 • CosmosContainer • CosmosDatabase を使⽤してコンテナーを作成 • createContainer :コンテナーを新規作成 • createContainerIfNotExists :指定したコンテナーがなければ新規作成 • getContainer :指定した id に紐づくコンテナークライアントを取得 32
  • 33. 例: CosmosClient を⽣成 33 private CosmosClient client; private CosmosDatabase database; private CosmosContainer container; private final String CONTAINER_ID = “<任意のデータベース(id)名>”; private final String PARTITION_KEY = “<任意のパーティションキー>”; // CosmosClient、CosmosDatabase ⽣成後 CosmosContainerProperties properties = new CosmosContainerProperties( CONTAINER_ID, PARTITION_KEY ); CosmosContainerResponse containerResponse = database.createContainerIfNotExists(properties); container = database.getContainer(containerResponse.getProperties().getId());
  • 35. クエリ実⾏ Azure Cosmos DB を使⽤した Java アプリ開発 35
  • 36. CRUD 実⾏ • ActiveRecord のようにすることも、クエリを作成して実⾏することも 可能 • CosmosContainer を使⽤して操作 36
  • 38. 変更フィードの取得 Azure Cosmos DB を使⽤した Java アプリ開発 38
  • 39. 変更フィードとは • コンテナーに対して⾏われたアイテムの更新内容を取得 • アイテムの挿⼊や更新の最終更新内容を取得 • 今後、更新に加えて削除も対応される予定 • 今後、プルモデルも登場する予定 • 下記の API で作成した Cosmos DB アカウントで有効 • Core (SQL)、MongoDB、Cassandra、Gremlin
  • 40. Demo • セッション時間の都合上、詳しくは Web で • GitHub • Azure-Samples / azure-cosmos-java-sql-app-example 40
  • 42. Java + Cosmos DB (NoSQL) • Cosmos DB は Azure のフルマネージドな NoSQL のサービス • データベース • コンテナー • アイテム • Free Tier (無償枠) もある • 業界最⾼レベルの SLA を利⽤可能 • 99.9 % 以上 • 99 パーセンタイルで 10 ミリ秒未満の待機時間を保証 • 好きな API を選択し、対応する Java SDK を利⽤して開発
  • 43. Thank you !! Any Questions? @mappie_kochi 43