Azure Cosmos DB for NoSQL とは

完了

まず、いくつかの定義と、Azure Cosmos DB for NoSQL のクイック ツアーを見ていきましょう。 この概要は、Azure Cosmos DB が自分の作業に適しているかどうかを判断するのに役に立ちます。

NoSQL データベースとはどのようなものか

開発者は、最新のアプリの固有の課題に対応できる新しい種類のデータベースを必要としています。 NoSQL データベースは、次のようなニーズに対応するように設計されています。

  • 大量のデータ。
  • さまざまなソースとフォームを持つデータ。
  • 異なる種類のデータを格納するための動的なデータ スキーマ。
  • 高速データやリアルタイム データの使用。

NoSQL データベースは、特定の正式な定義ではなく、共通する一般的な特性によって定義します。 次のような特性があります。

  • 非リレーショナル データ ストア。
  • スケールアウトするように設計されています。
  • 特定のスキーマを適用しません。

通常、NoSQL データベースでは、リレーショナル制約が適用されない、またはデータにロックが設定されないため、書き込みが速くなります。 また、多くの場合、シャーディングまたはパーティション分割によって水平方向にスケーリングするように設計されているため、サイズに関係なく高パフォーマンスを維持できます。

多くの NoSQL データ モデルがありますが、NoSQL データベースでデータをモデル化するときは、4 つの広範なデータ モデル ファミリが一般的に使用されます。

さまざまな NoSQL モデル (キー値、ドキュメント、グラフ、列ファミリ ストア) を示す図。

以下では、Azure Cosmos DB for NoSQL によってサポートされているデータ モデル、"ドキュメント" データ モデルに焦点を当てます。

ドキュメント データ モデルで NoSQL データベースを使用する理由

ドキュメント データ モデルでは、データが個々のドキュメント エンティティに分割されます。 ドキュメントでは任意の構造化データ型を使用できますが、よく使用されるデータ形式は JSON です。 JSON は Azure Cosmos DB for NoSQL でネイティブにサポートされています。

親エンティティ、子エンティティ、それらを接続する線が含まれる階層ドキュメント データ モデルの図。

ドキュメントはアトミック エンティティであり、同じデータベース内の他のドキュメントに格納されているデータに関係なく、独自のデータ形式を持つことができます。 このような柔軟性があるため、事前にスキーマを定義する必要がなく、簡単に新しいアプリケーションを迅速にビルドできます。 さらに、この柔軟性により、異なる種類のデータをまとめて格納し、アプリケーションの有効期間を通じてモデルを進化させることができます。

JSON ドキュメントとは

JavaScript Object Notation (JSON) は、軽量なデータ形式です。 JSON は、JavaScript 言語でのオブジェクトのリテラル表記と高い互換性を持つように作られています。 多くのフレームワーク、ブラウザー、データベースで JavaScript がネイティブにサポートされていることから、JSON はデータを送信および保存するための一般的な形式になっています。

JSON ドキュメントの例を次に示します。

{
  "device": {
    "type": "mobile"
  },
  "sentTime": "2019-11-12T13:08:42",
  "spoolRefs": [
    "6a86682c-be5a-4a4a-bacd-96c4d1c7ece6",
    "79e78fe2-93aa-4688-89db-a7278b034aa6"
  ]
}

ご覧のように、JSON は内容がはっきりわかる比較的読みやすいデータ形式です。 また、JSON は、JavaScript アプリケーションで解析や使用するのも比較的簡単です。

Azure Cosmos DB for NoSQL とは

Azure Cosmos DB for NoSQL は、さまざまなデータに対する豊富なクエリ実行機能を備えた高速の NoSQL データベース サービスです。 構成可能で信頼性の高いパフォーマンスを提供し、グローバルに分散され、迅速な開発を可能にします。

4 つのグローバル分散ノードが線で接続されている世界地図の図。

NoSQL API は、ドキュメントを操作するためのコアまたはネイティブ API です。 NoSQL API により、JSON ドキュメント、使い慣れた構文を持つクエリ言語、一般的なプログラミング言語用のクライアント ライブラリを利用した、高速で柔軟な開発がサポートされます。 Azure Cosmos DB には、Mongo、Gremlin、Cassandra などの他の API が用意されています。 これらの API は、基になるネイティブ NoSQL API の同じインフラストラクチャにマッピングされていながら、各データベース エコシステムの間には互換性があります。

Azure Cosmos DB for NoSQL には、次のような利点があります。

  • あらゆる規模での保証された速度: 世界中のどこでも即時対応で無制限の弾力性、高速の読み取り、マルチマスター書き込み (バーストの間でも)。
  • 高速で柔軟なアプリ開発: 一般的な言語向けの SDK、ネイティブ NoSQL API と MongoDB、Cassandra、Gremlin 用の API、ETL (抽出、変換、読み込み) なしの分析。
  • ミッション クリティカルなアプリケーションに対応: 保証されたビジネス継続性、99.999% の可用性、エンタープライズ レベルのセキュリティ。
  • フル マネージドでコスト効率の高いサーバーレス データベース: アプリケーションのニーズに対応する即時自動スケーリング。

これらの機能により、Azure Cosmos DB は最新のアプリケーション開発に最適です。 Azure Cosmos DB for NoSQL は、次のようなアプリケーションに特に適しています。

  • トラフィックの予期しない急激な増加と減少が発生する
  • 大量のデータを生成する
  • リアルタイムのユーザー エクスペリエンスを提供する必要がある
  • ビジネス継続性に依存する

Azure Cosmos DB for NoSQL を使用すると、柔軟なスキーマでネイティブ JSON ドキュメントを自由に格納できます。 データには自動的にインデックスが付けられ、JSON データ用に設計された SQL クエリ言語のフレーバーを使用してデータのクエリを実行できます。 NoSQL API には、.NETPythonJavaNode.js などの一般的なフレームワークの SDK を使用してアクセスできます。