Cosmos DB のアーキテクチャ

Azure Storage 開発

Shahzad Mian

Content developer, DataCamp

Azure Cosmos DB

Azure_Cosmos_DB.svg.png

Azure Storage 開発

課題

Cosmos DB の課題

Azure Storage 開発

Cosmos DB とは

 

CosmosDB

  • マルチモデル対応のグローバル分散型 NoSQL データベース。
  • NoSQL - 柔軟なフォルダー形式のストレージ。
  • 複数の API とデータ型をサポート。
  • 用途に合わせて API を選択可能:
    • SQL (Core): JSON ドキュメント用。
    • MongoDB: Mongo 開発者向け。
    • Cassandra: ワイドカラム データ用。
    • Gremlin: グラフ リレーションシップ用。
    • Table API: キーと値のストレージ用。
Azure Storage 開発

開発者向け Cosmos DB

  • 開発者向けに設計。
  • 自動インデックス作成 - スキーマ管理不要。
  • 高速クエリ。
  • 5 段階の整合性レベル: Strong から Eventual まで。
  • パフォーマンスと整合性のトレードオフ。
    • Strong: 全員が同じ情報を即座に受信。
    • Eventual: 全員が後から同期。

 

強整合性と結果整合性

Azure Storage 開発

スケーリングとスループット (RU/s)

プロビジョニング モード

  • リクエスト ユニット/秒 (RU/s) = Cosmos DB のパフォーマンスの基準単位。
  • 読み取り、書き込み、クエリごとに RU/s を消費。
  • 固定プロビジョニングまたは自動スケールを選択。
Azure Storage 開発

スケーリングとスループット (RU/s)

スケーリング

  • リクエスト ユニット/秒 (RU/s) = Cosmos DB のパフォーマンスの基準単位。
  • 読み取り、書き込み、クエリごとに RU/s を消費。
  • 固定プロビジョニングまたは自動スケールを選択。
  • 自動スケールは需要に応じて自動調整。
Azure Storage 開発

エラスティック スケールとパーティション分割

  • Cosmos DB はパーティション分割によってスケールアウト。
  • 各コンテナーはパーティション キーを使用。
  • キーで関連データをグループ化。
  • 例: Cipher Coffee は注文に /customerId を使用。
  • /customerId をパーティション キーにすると、同じ顧客の注文が同一パーティションに格納。
  • データが増えてもクエリを高速に維持。
  • ホット パーティション: 負荷の偏りによるパフォーマンス低下。

エラスティック スケールとパーティション分割

Azure Storage 開発

グローバル分散

  • 任意の Azure リージョンへのデータ レプリケーションが簡単。
  • チェックボックスをオンにするだけで設定不要。
  • リージョン障害時にトラフィックを自動再ルーティング。
  • ダウンタイムもデータ損失もなし。
  • 即座に対応できるバックアップ拠点のような存在。

グローバル分散

Azure Storage 開発

監視とコスト最適化

  • Azure Portal でパフォーマンスを監視。
  • RU/s、待機時間、リクエスト コストなどのメトリックを確認。
  • 車のダッシュボードのように速度と燃料を把握。
  • Cipher Coffee のエンジニアがこれらのメトリックを分析。
  • スループットを動的に調整してコストを削減。

監視

Azure Storage 開発

では、練習しましょう!

Azure Storage 開発

Preparing Video For Download...