NoSQL データベース

作業開始のための概要

NoSQL データベースとは?

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

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

話題になっている有名人のツイートから、電子カルテに記されている救命情報まで、新しいデータとデータ型が目まぐるしい速さで生み出されています。このような新しい情報を保存して、検索、統合、分析に直ちに使えるデータベース システムを開発者がスピーディに作成できるよう、NoSQL データベースは進化してきました。

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

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

アジャイルな開発

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

柔軟なデータ処理

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

規模に応じた運用

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

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

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

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

キー値

キー値では、ハッシュ テーブルを使用して、キーと値のペアを格納します。キー値型は、キーが分かっていて、そのキーに関連付けられている値が不明な場合に最適です。

Document

ドキュメント データベースは、ドキュメント全体をコレクションと呼ばれるグループにして整理して、キー値データベースの概念を拡張したものです。入れ子にしたキーと値のペアをサポートしており、ドキュメントに含まれる任意の属性を基にクエリを実行できます。

列指向

列指向、ワイドカラム、列ファミリのデータベースは、効率的にデータを保持し、複数行のスパース データに対してクエリを実行するため、データベース内の特定の複数列に対してクエリを実行する際に有利です。

Graph

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

リレーショナル (SQL) データベースと非リレーショナル (NoSQL) データベースの選択方法

利用できません 非リレーショナル (NoSQL) リレーショナル (SQL)
最適な環境:
  • 大規模、関連性がない、不確定、急速に変化するデータの処理。
  • スキーマに依存しないデータ、またはアプリによって指定されたスキーマ。
  • 厳密な整合性よりパフォーマンスと可用性が重要なアプリ。
  • 世界中のユーザーが使用する常時稼働アプリ。
  • リレーショナルで、前もって識別可能な個別の論理要件を持つデータの処理。
  • 保持し、アプリとデータベース間で同期を維持する必要のあるスキーマ。
  • リレーショナル構造用にビルドされたレガシ システム。
  • 複雑なクエリの実行または複数行に対するトランザクションが必要なアプリ。
シナリオ:
  • モバイル アプリ。
  • リアルタイム分析。
  • コンテンツ管理。
  • パーソナル化。
  • IoT アプリ。
  • データベースの移行。
  • 金融、会計、銀行取引システム。
  • 在庫管理システム。
  • トランザクション管理システム。
スケール:
  • サーバー間でシャーディングすることにより、水平方向にデータをスケーリング。
  • サーバーの負荷を増すことにより、垂直方向にデータをスケーリング。
データ モデル:
  • データベースの種類: キー値、ドキュメント、列指向、グラフ データベース。
  • データベースの種類に応じてデータを格納。
  • データベースの種類: 行から成り、リレーションに従ってグループ化されたテーブル。
  • 構造化照会言語 (SQL) を使用。
  • テーブルの行としてデータを格納。関連するデータは独立して格納され、複雑なクエリのために結合される。
利用できません 非リレーショナル データ モデルに関する詳細情報 リレーショナル データ モデルに関する詳細情報

NoSQL DB の評価方法

データ モデルを選択する

NoSQL データベースの多くは集約 (ユニットとして操作するデータのコレクション) を指向しています。このため、最新のオブジェクト指向プログラミング言語に非常によく適合します。通常、NoSQL DB を選択する場合は、最初にデータ モデルを選択します。次いでそのデータ モデルをサポートする NoSQL データベースを評価します。その際は、各データベースがサポートするプログラミング言語や SDK と合わせて考慮します。

プログラミング モデルと API に関する詳細情報

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

大半の 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 に対するネイティブ サポートの詳細を確認します。

NoSQL データ用 Azure Cosmos DB に関する詳細情報

詳細はこちら