NoSQL は、高性能の非リレーショナルデータベースを指す用語です。NoSQL データベースでは、グラフ、キーと値のペア、JSON ドキュメントなど、多様なデータモデルを使用します。NoSQL データベースは、開発のしやすさ、スケーラブルなパフォーマンス、優れた可用性、高い回復性で知られています。NoSQL データベースの使用を開始する際には、次の動画が役立ちます。
ホワイトペーパー Best Practices for Migrating from RDBMS to Amazon DynamoDB をダウンロードしてください。
| リレーショナルデータベース | NoSQL データベース | |
| データモデル | リレーショナルモデルは、データを行と列から成るテーブルと呼ばれる表形式の構造に正規化します。テーブル、列、インデックス、テーブル間の関係などのデータベース要素は、スキーマによって厳密に定義されます。 | 非リレーショナル(NoSQL)データベースは、通常、スキーマを必要としません。値、列セット、半構造化 JSON、XML、または関連する項目属性を含むその他のドキュメントの取得には、通常、"ハッシュキー" が使用されます。 |
| ACID プロパティ | 従来のリレーショナルデータベース管理システム(RDBMS)は、ACID、すなわち Atomicity(不可分性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)で定義された一連のプロパティをサポートしています。不可分性は、「全部かゼロか」、つまり、トランザクションが完全に実行されるか一切実行されないかのどちらかとなることを指します。一貫性は、いったんトランザクションが実行されたら、データが必ずデータベーススキーマに従うことを指します。独立性は、同時発生したトランザクションが相互に独立して実行されることを指します。永続性は、予期しないシステム障害や停電が発生しても、異常発生前の最後の状態まで復旧できることを指します。 | NoSQL データベースは、従来のリレーショナルデータベース管理システム(RDBMS)の ACID プロパティを完全には保証しないものの、水平方向に拡張できるより柔軟なデータモデルを実現します。したがって、従来の RDBMS でアーキテクチャ上の課題が生じた場合に、パフォーマンスのボトルネック、スケーラビリティ、複雑な運用、管理コストとサポートコストの上昇といった問題を解消するのに最適な選択肢です。 |
| パフォーマンス | パフォーマンスは通常、ディスクサブシステムに左右されます。最善のパフォーマンスを実現するには、クエリ、インデックス、テーブル構造の最適化が必要です。 | パフォーマンスは通常、基盤となるハードウェアクラスタのサイズ、ネットワークレイテンシー、呼び出すアプリケーションに依存します。 |
| 拡張性 | 高速なハードウェアを使用することで、簡単にスケール "アップ" できます。リレーショナルテーブルを分散システムで使用するには追加の投資が必要になります。 | 低コストなハードウェアの分散クラスタを使用してスケール "アウト" することで、レイテンシーを増やすことなくスループットプットを改善できるように設計されています。 |
| API | データの保存および取得要求は、SQL 準拠のクエリを使用して伝達されます。このクエリは、リレーショナルデータベース管理システム(RDBMS)によって解析され、実行されます。 | アプリ開発者は、オブジェクトベースの API を使用して、メモリ内のデータ構造の保存および取得を簡単に行うことができます。アプリは "ハッシュキー" によって、キーと値のペア、列セット、またはアプリのシリアライズされたオブジェクトや属性を含む半構造化ドキュメントをルックアップします。 |
| ツール | SQL データベースでは通常、データベース指向のアプリケーションの開発を簡素化するために、一連の豊富なツールが提供されます。 | NoSQL データベースでは通常、クラスタおよびスケーリングの管理ツールが提供されます。基盤となるデータへの主なインターフェイスはアプリケーションです。 |
アマゾン ウェブ サービス(AWS)では、開発者を対象にさまざまな NoSQL データベースソフトウェアのオプションを提供しています。Amazon EC2 上のクラウドおよび Amazon EBS 内にある独自の非リレーショナルデータストアの運用、Amazon ソリューションプロバイダとの連携、または完全マネージド型の非リレーショナルサービスの利用が可能です。
Amazon DynamoDB は完全マネージド型の NoSQL データベースサービスであり、きわめて高速かつ予測可能なパフォーマンスと、シームレスな拡張性が特長です。Amazon EC2 および Amazon EBS 上で独自の NoSQL クラウドデータベースを実行すると、データベースのあらゆる制御が可能になる一方で、ハードウェアのプロビジョニングと設置の作業は不要になります。
さらに、AWS は MongoDB および Couchbase とパートナーとして提携しています。この 2 社はいずれも、Amazon EC2 および Amazon EBS 上で製品を実行するお客様にサポートやトレーニングを提供しています。
AWS で利用できるその他のデータベースオプションについては、AWS でのデータベースの実行のページを参照してください。
Amazon DynamoDB は AWS クラウドで実行できる完全マネージド型の NoSQL データベースサービスであり、きわめて高速かつ予測可能なパフォーマンスと、シームレスな拡張性が特長です。1 桁台のミリ秒単位のレイテンシーを必要とするアプリケーションに対応した、高速かつフレキシブルな NoSQL データベースサービスです。完全マネージド型のデータベースで、ドキュメントデータモデルとキー値データモデルの両方をサポートしています。柔軟性のあるデータモデルと信頼性の高いパフォーマンスにより、モバイル、ウェブ、ゲーム、アドテック、IoT など、より多くのアプリケーションで大いに活用できます。Amazon DynamoDB の詳細 »
開発者は、任意の NoSQL データベースを Amazon EC2 と Amazon EBS にインストールできます。Amazon EC2 インスタンスを使用して NoSQL データベースを実行できるので、開発者はインフラストラクチャをプロビジョニングする手間を省略できると同時に、多様な標準 NoSQL データベースエンジンにアクセスできます。
Cassandra はオープンソースの分散型データベース管理システムです。複数のコモディティサーバーにわたる大規模なデータを処理できるように設計されており、単一障害点のない、高度な可用性を実現します。Cassandra ワークロードの実行時には、EBS を検討してください (CrowdStrike が EBS を使って高密度の Cassandra クラスターを安価に運用した方法の詳細)。Cassandra および AWS で Cassandra を運用する方法の詳細については、Apache Cassandra on AWS ホワイトペーパーを参照し、AWS Marketplace にアクセスしてください。
Couchbase は、高性能な分散型キー値ストア、Couchbase Server の開発およびサポートを行う企業です。Couchbase Server を AWS に商用レベルで展開するお客様を対象に、サポート、サービス、トレーニングを提供しています。Couchbase との連携および AWS での Couchbase Server の実行については、こちらを参照してください。
MarkLogic Corporation 開発の MarkLogic Server (MarkLogic) は、大規模なデータベースを対象に ACID (Atomicity、Consistency、Isolation、Durability) トランザクションを実現する、完全にスケーラブルなエンタープライズ NoSQL プラットフォームです。ベストプラクティスとスケーリングの概要については、ホワイトペーパー MarkLogic on AWS を参照してください。
MongoDB, Inc. は、オープンソースの高性能なドキュメント指向データベース、MongoDB の開発およびサポートを行う企業です。MongoDB を商用レベルで展開するお客様を対象に、テクニカルサポート、プロフェッショナルサービス、トレーニングを提供しています。
AWS MongoDB Quick Start を使用すれば、AWS のベストプラクティスに従い、15 分程度でマルチノードの MongoDB クラスタを AWS クラウドにデプロイできます。
MongoDB の概要と AWS での実装については、ホワイトペーパー MongoDB on AWS: Guidelines and Best Practices を参照してください。
MongoDB Inc. との連携および AWS での MongoDB の実行については、AWS Partner ディレクトリの情報を参照してください。
グラフデータベースには頂点と、辺と呼ばれるリンクが格納されます。グラフは、リレーショナル(SQL)および非リレーショナル(NoSQL)データベースに基づいて構築できます。頂点と辺にはそれぞれ関連するプロパティがあります。次の図は、友達とその趣味の関係を示す簡単なグラフを表しています。グラフデータベースの詳細については、AWS Activate ブログの記事を参照してください。
Titan は、小規模および大規模なグラフの無数の頂点と辺を効率的に保存および探索できる一般的なグラフデータベースです。プラグイン可能なストレージエンジンアーキテクチャによって拡張性を実現します。
Amazon DynamoDB Storage Backend for Titan を使用すると、あらゆるサイズの Titan グラフを完全マネージド型の DynamoDB テーブルに保存できます。DynamoDB Storage Backend for Titan プラグインで、Titan ストレージの管理を AWS に移行できます。Titan のプラグイン可能なアーキテクチャによって、アプリケーションに変更を加えることなく、簡単に DynamoDB の使用を開始できます。
Titan は、Gremlin や Blueprints を含む一連のグラフ処理および解析ツール、Tinkerpop をサポートしています。詳細については、AWS ドキュメントの Working with Graph Databases セクションを参照してください。
Neo4j は、単一の書き込みマスターと複数のリードレプリカを備えたシェアードナッシングアーキテクチャを提供します。独自の Cypher クエリ言語のほか、Gremlin もサポートしています。Neo4j を試してみたい場合は、AWS ビッグデータ Test Drive ラボのページから開始してください。
OrientDB は、スキーマレス、スキーマフル、スキーマミックスモードをサポートします。SQL をサポートし、ツリーやグラフなどの概念もサポートするように言語を拡張します。OrientDB を使用するには、AWS Marketplace を参照してください。
GraphDB は、テキストマイニング、SPARQL クエリ、セマンティック注釈、セマンティック検索をサポートする Resource Description Framework (RDF) グラフデータベースです。GraphDB を使用するには、AWS Marketplace を参照してください。
Amazon ElastiCache は、クラウドでのメモリ内キャッシュのデプロイ、運用、および縮小/拡張を容易にするウェブサービスです。このサービスは、低速のディスクベースのデータベースに完全に依存せずに、高速の管理されたメモリ内のキャッシュから情報を取得できるようにすることで、ウェブアプリケーションのパフォーマンスを向上させます。
Amazon ElastiCache は、失敗したノードを自動的に検出して置き換え、自己管理インフラストラクチャと関連付けられたオーバーヘッドを減らします。また、クラウドデータベースの過負荷により、ウェブサイトとアプリケーションのロード時間が低下するリスクを軽減する回復力のあるシステムを提供します。Amazon CloudWatch との統合により、Amazon ElastiCache はお客様の Memcached ノードまたは Redis ノードに関連付けられた主要パフォーマンスメトリックスの可視性を強化します。
ElastiCache は、次の 2 つのオープンソースのインメモリキャッシュエンジンをサポートしています。詳細については、Amazon ElastiCache 詳細ページを参照してください。
Memcached は幅広く採用されているメモリオブジェクトキャッシュシステムです。ElastiCache は、Memcached に準拠するプロトコルであるため、既存の Memcached 環境でお客様が現在使用しているツールは、サービスでシームレスに機能します。
Redis は、並べ替えられたセットやリストなどのデータ構造をサポートする、よく使用されているオープンソースのメモリ内のキー値ストアです。ElastiCache は、マスター/スレーブ型のレプリケーションとマルチアベイラビリティーゾーンをサポートしており、リードレプリカへの自動フェイルオーバーによって、クロス AZ 冗長性を実現します。また、Redis エンジンの強化によって、優れた堅牢性と安定性を提供します。
