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 (リレーショナル) | |
---|---|---|
このような場合に最適: |
|
|
シナリオ: |
|
|
スケール: |
|
|
データ モデル: |
|
|
|
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 に対するネイティブ サポートの詳しい説明をご覧ください。