Más contenido relacionado La actualidad más candente (20) Similar a 20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap (20) Más de Oshitari_kochi (20) 20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap3. Agenda
Azure Cosmos DB 入門 with Azure Synapse Link
▸ Azure Cosmos DB について
▸ Azure Cosmos DB 概要
▸ Azure Cosmos DB を利用するメリット
▸ MS Build 2020 (+α) のアップデート情報
▸ Azure Cosmos DB で開発を始める
▸ Azure Cosmos DB に接続する
▸ Visual Studio Code 拡張機能
▸ JavaScript SDK (SQL API) を使ってみる
▸ 既存のアプリから Cosmos DB を利用する
▸ Azure Synapse Link を使ってみる
▸ Azure Synapse Link 概要
▸ Azure Synapse Link を使うメリット
▸ Azure Synapse Link の設定方法
▸ さいごに
5. Azure Cosmos DB 概要
Azure Cosmos DB とは
▸ あらゆる規模に対応するオープン API を備えた高速な NoSQL データベース
▸ Microsoft 社によってグローバルに配布されるマルチモデルデータベースサービスとし
て、2017 年に一般公開
▸ 読み取りと書き込みのレイテンシーが 1桁ミリ秒 を要求される運用/分析ワークロード
向けに最適化
▸ 99.99 % 以上の高可用性 (SLA)、スループットと一貫性を保証
6. Azure Cosmos DB 概要
Cosmos DB がサポートする API
▸ Core (SQL) / MongoDB / Cassandra / Azure Table / Gremlin
7. Azure Cosmos DB 概要
課金の仕組み
▸ 以下の内容を踏まえて課金が行われる
▸ プロビジョニング済みコンテナー数(コンテナーはテーブルのイメージ)
▸ コンテナがオンラインであった時間数
▸ 各コンテナーのプロビジョニングスループット
▸ プロビジョニングスループット
▸ 1RU = シングルパーティションから1KBのドキュメントを1回読み取りに相当 (書き込み:PUTは2倍)
▸ 最小のプロビジョニングスループットは、400 RU/s (1ヶ月あたり 10 億回の読み取りに相当)
▸ スループットは 100 RU/s 刻みでスケーリング可能 (1ヶ月あたり 2 億 6780 万回の読み取りに相当)
▸ 手動構成による設定、およびオートパイロットによる自動構成が選択可能
9. Azure Cosmos DB を利用するメリット
ターンキー グローバル分散
▸ 応答性と可用性が高いアプリケーション
を世界的な規模で構築できる
▸ どこにいてもデータが透過的にレプリ
ケートされ、ユーザーは最も近い場所に
あるデータのレプリカと対話できる
▸ 1クリックで、レプリケート先のAzure
リージョンを追加したり、削除できる
▸ グローバル分散についての詳細
▸ Microsoft Docs
▸ レイテンシ考慮の場合に強い
10. Azure Cosmos DB を利用するメリット
スキーマやインデックスの管理が不要
▸ すべてのデータのインデックス付けを自動で行い、高速クエリを提供
▸ すべてのコンテナーにコンテナーの項目のインデックスを作成する方法を指示
▸ 「同期」と「なし」の2つのインデックス作成モードをサポート
▸ 既定では、インデックス作成ポリシーは automatic = true(自動で有効)に設定
▸ カスタムインデックス作成ポリシーも設定可能
▸ 複合インデックス、空間インデックス、プロパティパスの包含・除外の指定が可能
▸ インデックス作成ポリシーについての詳細
▸ Microsoft Docs
11. Azure Cosmos DB を利用するメリット
明確に定義された複数の整合性の選択肢
▸ Cosmos DB のマルチマスター レプリケーション プロトコルは5つの整合性を重視
▸ 強固
▸ 有界整合性制約
▸ セッション
▸ 一貫性のあるプレフィックス
▸ 最終的
▸ 極端な整合性、可用性、待ち時間、スループットのトレードオフを行うことが不要になる
▸ 整合性の詳細については、以下サイトを参照
▸ Azure Cosmos DB の整合性レベル
▸ azure/azure-cosmos-tla ‒ GitHub
強固 有界整合性制約 セッション 一貫性のあるプレフィックス 最終的
強力な一貫性 弱い一貫性
12. Azure Cosmos DB を利用するメリット
包括的な SLA と 99 パーセンタイルの低待機時間
▸ 99.99 % (スループット、一貫性、可用性、レイテンシの保証)
▸ 5 つの一貫性レベルのいずれかで構成された、単一 Azure リージョンにスコープされている Azure
Cosmos DB データベースアカウント
▸ 4つの緩やかな一貫性レベルのいずれかで構成されている、複数の Azure リージョンにまたがる Azure
Cosmos DB データベースアカウント
▸ 書き込み可能なエンドポイントとして複数の Azure リージョンの構成を可能にしている場合、読み取り
と書き込みの両方で 99.999 % SLA の可用性が提供される
▸ SLA については、以下サイトを参照
▸ Azure Cosmos DB のSLA
▸ 世界中で読み取り (インデックス付き) と書き込みの両方に対して 99 パーセンタイルで
の 10 ミリ秒未満の待機時間を保証
13. Azure Cosmos DB を利用するメリット
人気のある OSS API を使用したアプリケーション開発
▸ 既存のクライアントドライバー(ツール)を使って参照が可能
▸ Gremlin、Cassandra、MongoDB
▸ アプリケーションロジックの重要な部分を保持しながら Cosmos DB に移行が可能
▸ 少ない労力で、業界最高レベル、SLA が提供されるフルマネージドサービスが利用可能
▸ ニーズに応じて、プロビジョニングスループットや容量を弾力的にスケーリング可能
▸ アプリケーションの移植性を保持したまま、クラウドベンダーに非依存な状態を維持可能
15. MS Build 2020 でのアップデート情報
オフィシャルな説明は de:code 2020 の動画にて
▸ https://www.youtube.com/watch?v=rB-wioomITo
16. MS Build 2020 でのアップデート情報
Azure Synapse Link
▸ 抽出
▸ 変換
▸ ロード
→処理負荷0に
17. MS Build 2020 でのアップデート情報
Azure Synapse Link (Azure Synapse Analytics の拡張機能)
▸ クラウドネイティブのハイブリッドトランザクションおよび分析処理(HTAP)機能
▸ グローバルに分散された大規模運用データをETL対応無しでほぼリアルタイムに分析
▸ Synapse Spark または Synapse SQL を使用し、Azure Cosmos DB でのトランザク
ションワークロードのパフォーマンスに影響を与えず、ほぼリアルタイムのビジネスイ
ンテリジェンス、分析、機械学習パイプラインを実行可能
18. MS Build 2020 でのアップデート情報
Azure Synapse Link
▸ Azure Cosmos DB分析ストアは、2020年8月30日まで、消費ストレージGBまたはス
トレージトランザクションに対して無料でパブリックプレビューで利用可能
▸ SynapseSpark と Synapse SQL の使用量は、Azure Synapse Services の消費を通
じて請求
▸ 詳細については、Azure Cosmos DB の Azure Synapse Link のブログ投稿を参照
19. MS Build 2020 でのアップデート情報
オートパイロット機能が GA (オートスケール)
▸ 自動スケールプロビジョニングされたスループットの Azure Cosmos DB の
新料金モデル
▸ 無償枠適用内
20. MS Build 2020 でのアップデート情報
顧客管理キーを使用した保存時の暗号化の強化
▸ カスタマーマネージドキー
▸ 顧客 (エンドユーザー) が制御できる暗号化キーを使用した暗号化が可能
▸ キーストアとしてAzure Key Vaultにてキーをセキュアに管理可能
▸ データの二重暗号化を実現
顧客管理のキーを利用した
暗号化
あなたの
データ
サービス管理のキーを利用
した暗号化
21. MS Build 2020 でのアップデート情報
Jupyter Notebook の新機能
▸ C# Notebooks
▸ データエクスプローラーに組み込まれている Jupyter Notebook で C# を実行可能
▸ Azure Cosmos DB .NET SDK の組み込みインスタンスを含む
▸ 必要に応じて独自の NuGet パッケージをインポート可能
▸ GitHub 連携
▸ Notebook workspaces を GitHub リポジトリに接続
▸ GitHub Notebook がワークスペースで表示、実行、編集でき、変更を GitHub に直接保存可能
▸ すべて Azure Data Explorer から簡単に保存可能
22. MS Build 2020 でのアップデート情報
Python SDK 4.0 for SQL API
▸ https://pypi.org/project/azure-cosmos/4.0.0/
▸ 新しい API 設計 (CosmosClient / Database / Container / User にスコープ)
▸ Cosmos DB データベースを作成して設定を変更
▸ JSONドキュメントのコレクションを格納するコンテナーを作成および変更
▸ コンテナー内のアイテム(JSONドキュメント)の作成、読み取り、更新、削除
▸ SQLに似た構文を使用してデータベース内のドキュメントをクエリ
▸ クライアント接続は azure.core.pipeline で定義されたHTTPパイプラインを使用する
ように適合
23. MS Build 2020 でのアップデート情報
Java SDK 4.0 for SQL API
▸ https://mvnrepository.com/artifact/com.azure/azure-cosmos
▸ 負荷時のリクエストのスループットと安定性が大幅に最適化された
▸ 古いJava SDK(v3およびv2)よりも20%パフォーマンスが向上
▸ 最高のパフォーマンスを得るための (ヒント)についてもブログで紹介
▸ Azure Cosmos DB Java SDK v4 ‒ General Availability
▸ プログラムによるオートスケールのスループットのプロビジョニングを完全サポート
▸ ThroughputPropertiesクラス
▸ DISTINCTクエリの追加
▸ サーバ側のAzure Cosmos DBの処理だけでなく、クライアント側の機能としても実装(サンプル)
▸ Analytical Time-to-Live (TTL)が追加
24. MS Build 2020 でのアップデート情報
Azure Private Link
▸ 仮想ネットワークから Azure Platform as a Service サービスへのプライベート接続を
提供
▸ パブリックインターネットへのデータ公開を排除
▸ ネットワークアーキテクチャを簡素化し、Azure のエンドポイント間の接続を保護
▸ 制限付きネットワークセキュリティグループ (NSG) ポリシーと組み合わせてデータ漏洩リスクを軽減
25. MS Build 2020 でのアップデート情報
変更フィードの削除と保持プレビューの更新
▸ 現在は、書き込みと各ドキュメントの最新バージョンのみ
▸ 削除とすべての更新のサポートを追加
▸ 変更フィードを利用してリアルタイムのデータ移動を実行したり、マテリアライズドビューを構築したり
することがさらに簡単に
▸ プッシュモデルに加えてプルモデルも登場
26. MS Build 2020 でのアップデート情報
サーバレス
▸ プロビジョニングされたスループットの概念を排除
▸ オペレーションごとに消費されたリソース (RU/s) に対して顧客に請求
▸ 安定したスループットを必要とせず、プロビジョニング状態を維持する必要がないテス
トや開発環境などでの利用に効果的
27. MS Build 2020 でのアップデート情報
ポイントインタイムリストア(PITR)
▸ 有効にしてから最大35日間の任意の時点で、継続的バックアップからコンテナーを回復
29. Azure Cosmos DB に接続する
SDK / REST API 、既存のドライバーなど経由で接続
▸ Azure Cosmos DB SDK を利用
▸ .NET / Java / JavaScript / Python
▸ Azure Cosmos DB REST API を利用
▸ REST を介した SQL API を使用して Azure Cosmos DB を操作できる
▸ Azure Cosmos DB: REST API リファレンス
▸ 既存のクライアントSDK、ドライバー、ツール などを利用
▸ データエクスプローラー、ストレージエクスプローラー
▸ MongoDB、Cassandra、Gremlin、Azure Table Storage、etcd、Power BI コネクタ など
▸ Azure Cosmos DB Emulator
30. Azure Cosmos DB に接続する
データエクスプローラー
▸ Azure Portal 上にて、Azure Cosmos DB の様々な操作を実行
▸ SQLなどのクエリ実行や、Jupyter Notebook の実行が可能
31. Azure Cosmos DB に接続する
Azure Cosmos DB Emulator
▸ 要 Windows / Windows コンテナー
▸ Azure Cosmos DB のエミュレータとして、Azure の環境なしで利用可能
▸ SQL、MongoDB、Cassandra、Gremlin、Azure Table の API を利用可能
▸ Azure Cosmos DB Data Migration Tool で Azure Cosmos DB とのデータ移行も可能
▸ ソフトウェア要件
▸ Windows Server 2012 R2、Windows Server 2016、または Windows 10 (64 bit)
▸ 最小ハードウェア要件
▸ 2 GB の RAM、10 GB のハードディスク空き容量
33. Visual Studio Code 拡張機能
Azure Databases 拡張機能
▸ 2020/5/28 に名称変更 (リポジトリは同じで PostgreSQL 対応が追加)
▸ 旧 Azure Cosmos DB 拡張機能
▸ https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-cosmosdb
▸ 400 RU/s からコレクションを作成できるように対応! (PR出したら通ったよ!)
39. JavaScript SDK (SQL API) を使ってみる
コンソールアプリを作成
▸ Microsoft Docs のチュートリアルを実践
▸ チュートリアル:JavaScript SDK を使用して、Azure Cosmos DB SQL API データを管理するための
Node.js コンソール アプリを構築する
40. JavaScript SDK (SQL API) を使ってみる
Node.js で CRUD Webアプリを作る
▸ Microsoft Azure Cosmos DB Service Node.js SDK for SQL API を利用
▸ @azure/cosmos
▸ TypeScript / Express フレームワークを利用して、WebAPI サーバを構築
▸ SQL API で Cosmos DB を操作できるため、普段 RDB を使っているユーザーでも簡単
▸ 詳しくは Qiita 記事にて
▸ 2020 年から始める Azure Cosmos DB ‒ Node.js で CRUD アプリを作る
▸ 2020 年から始める Azure Cosmos DB ‒ JavaScript SDK (SQL API) を見てみる (Part.1)
42. 既存のアプリから Cosmos DB を利用する
既存のクライアントドライバは変更せずにOK
▸ アプリ側で使用する接続文字列を Azure Cosmos DB のものに書き換えるだけ
▸ Azure Cosmos DB のオープン API 側で従来と同じ動作を保証
▸ Azure Cosmos DB アカウントは、対応する API で構築する必要あり
▸ MongoDB、Cassandra、Azure Tables、Gremlin
44. Azure Synapse Link を使ってみる
Azure Synapse Link (Azure Synapse Analytics の拡張機能)
▸ クラウドネイティブのハイブリッドトランザクションおよび分析処理(HTAP)機能
▸ グローバルに分散された大規模な運用データをETLなしでほぼリアルタイム分析
▸ Synapse Sparkまたは Synapse SQL を使用し、Azure Cosmos DB でのトランザク
ションワークロードのパフォーマンスに影響を与えず、ほぼリアルタイムのビジネスイ
ンテリジェンス、分析、機械学習パイプラインを実行可能
※再掲
45. Azure Synapse Link を使ってみる
Azure Synapse Link の仕組み
トランザクションストア 分析ストア
トランザクションの読み
取りおよび書き込み用に
最適化された行ストア
分析クエリ用に最適化された
列ストア
運用データ
機械学習
ビックデータ分析
BI ダッシュボード
自動で同期自動で同期
46. Azure Synapse Link を使うメリット
データウェアハウスへのデータ移行負荷がゼロ
▸ 夜間や業務時間外にデータベース内の運用データを DWH へ移行する必要がない
▸ オンラインで、リアルタイムに、Azure Synapse Analytics でデータ分析ができる
▸ 従来は管理パイプラインによってデータの ETL が必要で、パフォーマンスへの影響も最小限にする必要あり
▸ Azure Cosmos DB 分析ストアにあるデータを分析するため、ETL というものがない
▸ 管理パイプラインも VNet も 仮想ネットワークも不要
▸ ETLジョブや変更フィードの確認・監視や、複雑なデータ移動の理解も必要なし
▸ Azure Cosmos DB だけでなく、(今後) Azure SQL Database のデータも対応
▸ 複数のデータを統合して分析するためのデータ移行や抽出、加工が必要なし
▸ Google Big Query よりも高速な分析基盤を簡単に利用できる
47. Azure Synapse Link を使うメリット
運用ワークロードと分析ワークロードが別扱い
▸ Azure Synapse Link に関連するトラフィックは別物として処理
▸ 運用ワークロード用にプロビジョニングされたスループットは使用しない
▸ Azure Cosmos DB 分析ストア (個別の列ストア) に対して分析クエリを実行
▸ 分析だけでなく、BI や機械学習を実行したい際にも、運用側に影響を与えることがなく実施できる
48. Azure Synapse Link の設定方法
データエクスプローラーでワンクリック
▸ データエクスプローラー上で設定を有効化後、Azure Synapse Studio で接続設定
▸ Azure Synapse Studio では SQL と MongoDB が表示されている
49. Azure Synapse Link の設定方法
制限事項 (2020/7/28 現在)
▸ パブリックプレビューは Azure Cosmos DB SQL (Core) API のみ
▸ MongoDB API および、Cassandra API については、プライベートプレビュー
▸ 今後は、すべての API で実行できるようになる (予定らしい)
▸ 分析ストアは新規コンテナのみ設定可能
▸ Azure Cosmos DB アカウントは新規でも既存でも OK
▸ すでにあるコンテナに対して分析ストアを有効にすることはできない
▸ Synapse SQL でのアクセス
▸ Synapse SQL Serverless での Azure Cosmos DB 分析ストアへのアクセスはプライベートプレビュー
▸ プロビジョニング済み Synapse SQL でのアクセスは未対応
51. まとめ
2020 年は Azure Cosmos DB がアツい!
▸ 400 RU/s、5GB の無償枠が登場
▸ オートパイロット(オートスケール)機能が GA
▸ Azure Synapse Link により No-ETL でデータ分析がほぼリアルタイムに実行可能
▸ もうすぐサーバレスもパブリックプレビュー
▸ SDK 対応言語が豊富
▸ Visual Studio Code 拡張機能もどんどん機能追加中
▸ みなさんも Azure Cosmos DB を使っていろいろ開発してみてね!!
52. 参考情報
Azure Blog / Azure Cosmos DB Blog
▸ Azure Cosmos DB で任意のサイズまたはスケールのアプリを構築
▸ Azure Cosmos DB wrap-up: May 2020 BUILD Announcements
▸ Enhanced encryption at rest with customer-managed keys
▸ Autoscale + serverless: new offers to fit any workload
▸ Unlock near real-time, no-ETL analytics at scale with Azure Synapse Link for
Azure Cosmos DB
▸ Azure Cosmos DB Java SDK v4 ‒ General Availability
▸ Change Feed ‒ Unsung Hero of Azure Cosmos DB
▸ New Azure Cosmos DB PowerShell features for greater enterprise
manageability
▸ Data Modeling and Partitioning for Relational Workloads
53. 参考情報
Microsoft Docs
▸ Azure Cosmos DB の概要
▸ Azure Cosmos DB でのパーティション分割
▸ Azure Cosmos DB の要求ユニット
▸ ストアド プロシージャ、トリガー、およびユーザー定義関数
▸ Azure Cosmos DB でのオンライン バックアップとオンデマンドのデータ復元
▸ Azure Cosmos DB の etcd API (プレビュー) の概要
▸ Azure Cosmos DB でのインデックス作成ポリシー
▸ Azure Synapse Link for Azure Cosmos DB (プレビュー) とは
▸ Azure Cosmos DB のさまざまな API についてよく寄せられる質問
54. 参考情報
その他
▸ Microsoft Mechanics ‒ YouTube
▸ Azure Cosmos DB + Azure Synapse Link ¦ Cloud-Native HTAP
▸ Hack Azure! - YouTube
▸ #2 Ask the Geeks - Cosmos DB 編
▸ EnterpriseZine
▸ そろそろ、HTAPの話をしよう
▸ 学習向け情報
▸ Microsoft Learn
▸ Azure Cosmos DB のホワイトペーパー
▸ Azure Videos
▸ Azure Cosmos DB Workshop