Trace Id is missing
メイン コンテンツにスキップ

NoSQL Database - NoSQL とは

作業開始のための概要

NoSQL データベースとは?

NoSQL データベースは "非リレーショナル"、"NoSQL DB"、"non-SQL" とも呼ばれますが、この呼び名では、急速に変化する膨大な量の非構造化データを、行とテーブルを使用するリレーショナル (SQL) データベースとは異なる方法で処理できることが強調されています。

NoSQL のテクノロジは 1960 年代から存在しており、さまざまな呼称が付けられていましたが、データを取り巻く環境が変化してクラウド、モバイル、ソーシャル メディア、ビッグ データから生成される膨大かつ無数の種類のデータを処理できるように開発者が順応する必要が生じるのに伴い、大幅に人気が高まっています。

一気に広まる有名人のツイートから、電子カルテに記されている救命情報まで、新しいデータとデータ型が目まぐるしい速さで生み出されています。NoSQL データベースの進化の結果、開発者は、新しい情報を格納してすぐに検索、統合、分析に使えるようにするためのデータベース システムを短期間で作成できるようになりました。

NoSQL データベース (NoSQL DB) の利点

NoSQL データベースを利用すると、IT 担当者や開発者は、拡大を続けるデータ型とモデルの多様化という新たな課題に対処しやすくなります。また、予測不可能なデータを非常に効果的に処理でき、多くの場合は驚くほどのクエリ速度を実現できます。さらに、既存の NoSQL ワークロードのためのクラウドへのデータベースの移行も、スムーズに実現できます。

アジリティのある開発

予定外の状況に対応する能力のある NoSQL DB は、頻繁なソフトウェア リリース サイクルにも利用でき、より速くアジャイルなアプリ開発に適しています。

データを柔軟に扱う

NoSQL を利用すると、開発者はスキーマとクエリの両方をデータ要件に合わせて変更する自由、速さ、柔軟性を得られます。情報が集約して保存されているため、迅速に反復改善しやすくなっています。あらかじめスキーマを設計する必要はありません。

規模に応じた運用

NoSQL DB は、水平方向にスケール "アウト"できるので、圧倒的な運用上のメリットとコスト削減を実現できます。また、アップグレードせずにより安価なサーバーを追加することもできます。スケーリングしてより多くのデータを処理することも、高度に分散可能なサーバーのクラスター内に単一の大規模なデータベースを保持することもできます。

NoSQL データベースでのデータ モデルの種類

"not only SQL" とも呼ばれる、非リレーショナルのハイパフォーマンスなデータベースの多くは、高度に構造化されたデータも扱うことができます。リレーショナル (SQL) データベースのように固定化されたデータ モデルに限定されるわけではありません。

 

最も一般的な NoSQL データベースの種類は、以下の 4 つです。

キー/値

"キー/値" では、キーと値のペアがハッシュ テーブルを使用して格納されます。"キー/値" という種類は、キーが既知で、そのキーに関連付けられている値が不明である場合に最適です。

ドキュメント

ドキュメント データベースでは、ドキュメント全体がコレクションと呼ばれるグループにまとめられて整理されることによって "キー/値" データベースの概念が拡張されます。入れ子にしたキーと値のペアがサポートされ、ドキュメント内の任意の属性に対してクエリを実行できます。

列指向

列指向 (ワイドカラムまたは列ファミリと呼ばれることもあります) データベースでは、効率的にデータを格納でき、複数行にわたるスパース データに対してクエリが実行されるため、データベース内の特定の複数列に対してクエリを実行する際に有利です。

グラフ

グラフ データベースではノードとエッジに基づくモデルが使用されており、相互接続されたデータ (ソーシャル ネットワーク内のユーザー同士の関係など) を表現することができます。また、単純化されたストレージと、複雑なリレーションシップのナビゲーションが提供されます。

リレーショナル (SQL) データベースか非リレーショナル (NoSQL) データベースかを選択する方法

NoSQL (非リレーショナル) SQL (リレーショナル)

このような場合に最適:

  • 大規模、関連性がない、不確定、または急速に変化するデータの処理。
  • スキーマに依存しないデータ、またはアプリによって指定されたスキーマ。
  • 厳密な整合性よりもパフォーマンスと可用性が重要なアプリ。
  • 世界中のユーザーに使用される常時稼働アプリ。
  • リレーショナルであり、論理的かつ個別の要件があり、その要件を事前に特定可能であるデータの処理。
  • スキーマが維持されることと、アプリとデータベースの間で常に同期されることが必要である場合。
  • リレーショナル構造用にビルドされたレガシ システム。
  • 複雑なクエリの実行または複数行トランザクションが必要なアプリ。

シナリオ:

  • モバイル アプリ。
  • リアルタイム分析。
  • コンテンツ管理。
  • パーソナル化。
  • IoT アプリ。
  • データベースの移行。
  • 会計、財務、銀行取引システム。
  • 在庫管理システム。
  • トランザクション管理システム。

スケール:

  • サーバー間でシャーディングすることにより、水平方向にデータをスケーリング。
  • サーバーの負荷を増すことにより、垂直方向にデータをスケーリング。

データ モデル:

  • データベースの種類: キーと値、ドキュメント、列指向、グラフ データベース。
  • データベースの種類に応じてデータを格納。
  • データベースの種類: 行で構成されるテーブル。グループ化されて関係 (リレーション) が作られる。
  • 構造化照会言語 (SQL) を使用。
  • テーブルの行としてデータを格納。関連するデータは独立して格納され、複雑なクエリのために結合される。

NoSQL DB を評価する方法

データ モデルを選択する

NoSQL データベースの多くは集約 (データのコレクションであり、開発者はこれを 1 つのユニットとして扱う) を指向しています。このため、モダンなオブジェクト指向プログラミング言語に非常に自然に適合します。開発者が NoSQL DB の 1 つを選択するときは、おそらく最初にデータ モデルを選択し、次にそのデータ モデルをサポートする NoSQL データベースを評価します。これと併せて、各データベースで使用できるプログラミング言語と SDK も考慮します。

整合性のトレードオフを比較検討する

多くの NoSQL DB では、整合性スペクトルの両端のいずれかを選択できます。一方の端である "厳密な整合性" の場合は、最新のデータを入手できるものの待つ必要が生じる可能性があるのに対し、他方の端である "最終的な整合性" の場合は、速く応答が得られるもののデータが古い可能性があります。これらの両極ではなくその中間に相当する、その他の整合性レベルがサポートされる NoSQL データベースも多数あります。自身のニーズに見合う整合性モデルにおける、最高の柔軟性と制御が得られる NoSQL DB を選択します。

クラウドとデータベースの移行を考慮する

分散型という性質と水平方向のスケーラビリティにより、NoSQL DB はクラウド コンピューティングに理想的ですが、オンプレミスまたはハイブリッドのシナリオで実行するように設計された NoSQL データベース システムも数多く存在します。

クラウド オプションを評価するときは、次の点を考慮します。

  • サポートされるデータ モデル。 そのクラウド プロバイダーは、あなたが使用する可能性のあるデータ モデルすべてをサポートしていますか?
  • デプロイと運用。 データベースのデプロイと、必要に応じて他のリージョンに複製することが、どれだけ簡単にできますか?
  • 地理的プレゼンス。 クラウド プロバイダーのデータ センターはどこにありますか? あなたのデータを、あなたが望む場所に置くことができますか? 欧州連合の GDPR などのグローバルなデータ プライバシー規制への準拠を、どのようにして維持しますか?
  • レプリケーションの容易さ。 データベースを別の地理的リージョンに複製するためのプロセスはどのようなものですか?
  • スケーラビリティ。 その NoSQL データベースのリソースで、適切なパフォーマンスと、成長に合わせたスケーリングを保証できますか? スケールアップ、スケール ダウン、水平方向のスケーリングが可能ですか?
  • 高可用性。 予期しないエラーが発生した場合は、どうなりますか? そのサービスには、高可用性とディザスター リカバリーが組み込まれていますか?
  • サービス レベル。 提供されている可用性または待ち時間の保証のレベルはどのようなものですか?
  • エコシステム。 そのデータベースは、クラウド プラットフォームの他の部分と緊密に統合されていて、新しいソリューションを作成するためにすぐにつなぎ合わせることができますか?

NoSQL データベース システムの使用方法

NoSQL に基づくデータ モデルを使用することは、柔軟でスケーラブルな、ハイパフォーマンスかつ高機能のデータベースが必要になるモバイル、Web、IoT (モノのインターネット)、ゲーム用のアプリを構築したい企業に最適です。そのアプリがゲーム、eコマース、ビッグ データ分析、リアルタイム Web アプリ、あるいはそれ以外のいずれであっても、優れたユーザー エクスペリエンスを提供できます。

アプリをグローバルに配布

高可用性とディザスター リカバリーによって向上したアプリ パフォーマンスを活用し、世界中からより多くのユーザーを獲得できます。

リアルタイム カスタマー エクスペリエンスの提供

パーソナル化、リアルタイム レコメンデーション、向上したユーザー エクスペリエンスを NoSQL DB で実現します。

多様な IoT ワークロードに対応

持続的で書き込みの多いデータ インジェストを扱うために即座に、かつ弾力的にスケーリングでき、IoT アプリ向けに向上したクエリ パフォーマンスも活用できます。

eコマース アプリの機能を拡張

柔軟なスキーマと階層データを使用できる NoSQL は、多様な製品がそれぞれ異なる属性を持つ製品カタログ データの格納に適しています。

新しいコンテンツでゲーマーを夢中に

ゲーム内統計、ソーシャル メディア統合、リーダーボードなどのコンテンツを使用して、パーソナライズされたエクスペリエンスを提供できます。低待機時間と弾力的なスケーラビリティにより、新しいゲームのリリース時やトーナメント実施時に生じるトラフィックの急増に対応できます。

サーバーレス アプリの構築

即時可用性、インデックスの自動作成、安定したインジェスト レートとクエリ パフォーマンスにより、データ インジェスト、スループット、データ ボリュームをシームレスにスケーリングできます。

ビッグ データからさらに優れた分析情報を

急速に変化する膨大なデータ全体に対して大規模に機械学習を実装し、分析からより多くを取得できます。

既存の NoSQL ワークロードをクラウドに移行

クラウドに移行すると、オンプレミス データベースの管理に要する時間を減らすことができ、しかも既存のツール、ドライバー、ライブラリ、SDK をそのまま使用できます。

NoSQL およびクラウドへのデータベースの移行を開始する

データベース システムと多様なデータ型の管理における新しい俊敏性、柔軟性、スケーラビリティを活用したアプリの開発方法と、既存の NoSQL ワークロードのためのクラウド データベース移行について学びましょう。 開発者向けの Azure Cosmos DB の技術的概要を確認し 、グローバル分散型で極めて高いスケーラビリティを備えたマルチモデル データベース サービスにおける NoSQL に対するネイティブ サポートの詳しい説明をご覧ください。

Azure Cosmos DB for NoSQL に関する詳細情報   
詳細情報