NoSQLとは

NoSQLの定義

「NoSQL」という用語は、非リレーショナルタイプのデータベースを指し、これらのデータベースは、リレーショナル・テーブルとは異なる形式でデータを保存します。ただし、NoSQLデータベースは、慣用的な言語API、宣言型構造化クエリ言語、例によるクエリ言語を使用してクエリを実行できます。そのため、NoSQLデータベースは「Not only SQL」データベースとも呼ばれます。

NoSQLデータベースの用途

NoSQLデータベースは、リアルタイムWebアプリケーションとビッグデータで広く使用されています。その主な利点が、高いスケーラビリティと可用性であるためです。

NoSQLデータベースは、多くの開発者に選ばれています。もともと、変化する要件にすばやく適応することでアジャイル開発パラダイムに適しているためです。NoSQLデータベースを使用すると、より直感的で理解しやすい方法で、またはアプリケーションによるデータの使い方に近い方法で、データを保存できます。NoSQLスタイルのAPIを使用して保存または取得するときに必要な変換が減ります。さらに、NoSQLデータベースではクラウドを最大限に活用してダウンタイムをゼロにすることができます。

SQLとNoSQLの比較

SQLデータベースはリレーショナルですが、NoSQLデータベースは非リレーショナルです。リレーショナル・データベース管理システム(RDBMS)は構造化クエリ言語(SQL)の基盤であり、ユーザーは高度に構造化されたテーブルのデータにアクセスして操作できるようになります。これは、MS SQL Server、IBM DB2、Oracle、MySQLなどのデータベースシステムの基本モデルです。ただし、NoSQLデータベースでは、データアクセス構文がデータベースごとに異なる場合があります。

リレーショナル・データベースとNoSQLデータベースの比較

NoSQLデータベースを理解するには、RDBMSと非リレーショナルタイプのデータベースの違いを知ることが重要です。

RDBMSのデータは、テーブルと呼ばれるデータベース・オブジェクトに保存されます。テーブルは関連するデータエントリの集合であり、列と行で構成されます。これらのデータベースでは、スキーマを事前に定義する必要があります。つまり、アプリケーションがデータベースにデータを書き込めるように、すべての列とそれに関連するデータ型が事前にわかる必要があります。また、キーを使用して複数のテーブルをリンクする情報が保存されます。そのために、複数のテーブル間の関係が作成されます。最も単純な例では、キーを使用して特定の行を取得し、検査または変更できるようにします。

逆に、NoSQLデータベースでは、スキーマを事前に定義しなくてもデータを保存できます。つまり、データを移動して順に処理すると、それに応じてすばやくデータモデルが定義されます。これの点は、グラフベース、列指向、ドキュメント指向、キー/値ストアのいずれであっても、特定のビジネス要件に適しています。

ごく最近まで、リレーショナル・データベースが最も広く使用されていたモデルでした。このタイプのデータベースはまだ多くの企業の至るところで使用されています。ただし、今日アクセスされているデータの多様性、速度、量に対応するために、リレーショナル・データベースを補完するまったく異なるデータベースが必要になる場合があります。このような状況から、非リレーショナル・データベースとも呼ばれるNoSQLデータベースが採用されることが多くなりました。非リレーショナル・データベースは、水平方向に迅速にスケールアウトでき、大量のトラフィックを処理できるため、適応性も高くなります。

NoSQLデータベースを選択する場合

迅速なイノベーションを必要とする企業や組織では、いずれの規模でも、敏捷性を維持し事業を継続できることが何より重要です。NoSQLデータベースは柔軟なスキーマを提供するだけでなく、大量のデータと短いレイテンシまたは応答時間を必要とするアプリケーション(オンラインゲームやeコマースWebアプリケーションなど)の構築に最適なさまざまなデータモデルもサポートします。

NoSQLデータベースを選択しない場合

NoSQLデータベースは通常、非正規化データに依存しています。また、使用するテーブル(またはコンテナ)が少なく、データ関係が参照を使用してモデル化されるのではなく、埋め込みレコード(またはドキュメント)としてモデル化されるタイプのアプリケーションをサポートします。財務、会計、エンタープライズ・リソース・プランニングにおける多くの従来のバックオフィス・ビジネス・アプリケーションは、データの異常や重複を防ぐために、高度に正規化されたデータに依存しています。これらは通常、NoSQLデータベースに適していないタイプのアプリケーションです。

NoSQLデータベースのもう1つの特徴は、クエリの複雑さです。NoSQLデータベースは、1つのテーブルに対するクエリには驚くほど適しています。しかし、クエリの複雑さが増すにつれて、リレーショナル・データベースの方が適しています。NoSQLデータベースでは通常、WHERE句での複雑な結合、サブクエリ、クエリのネストは行われません。

ただし、リレーショナル・データベースと非リレーショナル・データベースのどちらかを選択する必要がない場合もあります。多くの場合、組織は、リレーショナル・データモデルと非リレーショナル・データモデルを組み合わせて使用できるコンバージド・モデルを提供するデータベースを選択しています。このハイブリッド・アプローチにより、パフォーマンスを低下させることなく読み取りと書き込みの一貫性を確保しながら、さまざまなタイプのデータを処理する際の柔軟性が向上します。

他のデータベースに対するNoSQLの差別化要因

NoSQLデータベースと他のタイプのデータベースの主な違いの1つは、NoSQLデータベースは通常、非構造化ストレージを使用することです。過去20年以内に開発されたNoSQLデータベースは、高速で単純なクエリ、膨大なデータ、頻繁に変更されるアプリケーションのために設計されました。さらに、これらのデータベースにより、開発者はプログラミングをはるかに簡単に行うことができます。

もう一つの重要な差別化要因は、NoSQLデータベースが水平方向にスケールアウトするために、シャーディングと呼ばれるプロセスに依存していることです。つまり、複数のサーバーでデータを処理するために、マシンを追加できるということです。他のSQLデータベースに見られる垂直スケーリングでは、既存のマシンに処理能力とメモリを追加する必要があります。この場合、必要なストレージが増えるにつれて、持続不可能になることが考えられます。

NoSQLデータベースを使用した水平スケーリングの特性は、データが増大している場合でも、より効率的な方法で非常に大量のデータを処理できることを意味します。垂直スケーリングは、家に新しい床を追加するようなものですが、水平スケーリングは、元の家のすぐ隣に別の家を建てるようなものです。

NoSQLデータベースのメリット

過去20年間に見られた前例のない速度と規模のデジタル・インタラクションとデータ消費により、企業は、データの保存方法とデータへのアクセス方法に対して、より最新で流動的なアプローチを採用する必要がありました。世界中のユーザーがコンテンツと機能の中断のないストリームを要求している状況で、データベースがすばやく適応する必要があったのも当然です。この点を念頭に置いて、開発者がNoSQL/非リレーショナル・データベースを選択する主な理由の一部を次に示します。

  • 柔軟性

    SQLデータベースでは、データははるかに厳格な事前定義された構造で保存されます。しかしNoSQLでは、そのような厳格なスキーマを使用せずに、データをより自由な形式で保存できます。この設計により、イノベーションと迅速なアプリケーション開発が可能になります。開発者は、スキーマを気にすることなく、顧客により良いサービスを提供するシステムの作成に集中できます。NoSQLデータベースは、構造化データ、半構造化データ、非構造化データなど、あらゆるデータ形式を1つのデータストアで簡単に処理できます。
  • 拡張性

    サーバーを追加してスケールアップする代わりに、NoSQLデータベースは一般的なハードウェアを使用してスケールアウトできます。この能力により、ダウンタイムゼロで需要を満たして、増加するトラフィックに対応できます。スケールアウトすることで、NoSQLデータベースの規模を大きくし処理能力を高めることができます。そのため、NoSQLデータベースは高度になるデータセットの推奨オプションになっています。
  • 高性能

    NoSQLデータベースのスケールアウトアーキテクチャは、データ量やトラフィックが増加したときに特に役立ちます。次の図に示すように、このアーキテクチャでの応答は高速で、その時間は予測可能で数ミリ秒です。NoSQLデータベースは、データを取り込んで迅速かつ確実に配信することもできます。そのため、NoSQLデータベースは、高度にインタラクティブなユーザーエクスペリエンスを必要としながら、数テラバイトのデータを毎日収集するアプリケーションで使用されます。次の図では、読み取りが300回/秒(青い線)で95番目のレイテンシが3〜4ミリ秒、書き込みが150回/秒(緑の線)で95番目のレイテンシが4~5ミリ秒であることを示しています。

    NoSQLデータベース

  • 可用性

    NoSQLデータベースは、複数のサーバー、データセンター、またはクラウドリソース間でデータを自動的に複製します。これにより、ユーザーがどこにいても、ユーザーのレイテンシが最小限に抑えられます。この機能はデータベース管理の負担を軽減するためにも使用され、それにより空いた時間を他の優先作業に割り振ることができます。
  • 高機能

    NoSQLデータベースは、非常に大規模なデータストレージを必要とする分散データストア向けに設計されています。そのため、NoSQLがビッグデータ、リアルタイムWebアプリ、360度の顧客ビュー、オンラインショッピング、オンラインゲーム、Internet of Things、ソーシャルネットワーク、オンライン広告アプリケーションにとって理想的な選択肢になっています。

NoSQLデータベースのタイプ

NoSQLデータベースには主に4つのタイプがあります。

  • キー値

    このタイプのデータベースは、制限なしで値フィールドに保存される内容をアプリケーションが完全に制御できるため、最も柔軟なタイプのNoSQLデータベースです。
  • 資料

    このタイプのデータベースは、ドキュメントストアまたはドキュメント指向データベースとも呼ばれ、半構造化データの保存、取得、管理に使用されます。ドキュメントに含めるフィールドを指定する必要はありません。
  • グラフ

    このタイプのデータベースは、データをノードおよび関係として編成し、ノード間の接続を示します。これにより、データのより豊富で包括的な表現がサポートされます。グラフデータベースは、ソーシャルネットワーク、予約システム、不正検出に適用されます。
  • ワイド・カラム

    このタイプのデータベースは、テーブル、行、列の形式でデータを保存および管理します。スキーマフリーデータをキャプチャするために列形式を必要とするアプリケーションに広く導入されています。

Oracle NoSQL Databaseを試す

Oracle NoSQL Database Cloud Serviceを使用すると、開発者はドキュメント、列、およびキー/値データベースモデルを使用してアプリケーションを簡単に構築でき、高可用性のためのデータ・レプリケーションで予測可能な1桁台のミリ秒の応答時間を実現します。このサービスは、ACIDトランザクション、サーバーレス・スケーリング、包括的なセキュリティ、低廉な従量課金制を提供します。

Oracle NoSQL Database Cloud ServiceはOracle Cloud Free Tierの一部になりました。このサービスには、さまざまなクラウドサービスと、期限切れにならない一連のAlways Freeサービスを試すことのできる、無料の期間限定プロモーション・トライアルが含まれています。