データベースは 1980 年代初頭から大きな進歩を遂げ、現在ではユーザーがすぐに見失ってしまうような豊富な種類が提供されています。このシステムは、スマートフォンからデータセンターのサーバー、地理的に分散されたクラウド インスタンスに至るまで、ほぼどこでも実行できるようになりました。
従来のテーブルベースのリレーショナル データベースに加えて、時系列、チャート、空間、テキスト、OLAP ( オンライン分析処理)、XML、JSON 情報のデータベースもあります。特定のタイプのデータに特化したデータベースもあれば、データ タイプを選択できるデータベースもあれば、同じデータベース インスタンス内で複数のデータ タイプを共存できるデータベースもあります。さまざまなデータ オブジェクト間の関係に焦点を当てたグラフ データベースがあります。 データベースの中には、オンライン トランザクション処理 ( OLTP ) に特化したもの、分析 (OLAP) に特化したもの、さらにトランザクションと分析のワークロードの組み合わせに適したものもあります。この記事では、クラウドで実行されるトランザクション ワークロードのシステムに焦点を当てます。
クラウドからのデータベース – 選択基準
データベースはスタンドアロンのエンティティではありません。通常、データベースはアプリケーションのバックエンドまたはストレージ層を形成します。適切なクラウド データベースを選択するには、次の質問を自問する必要があります。
どのくらいの量のデータを、どのくらいの速さで生成しますか?
ギガバイト以下の少量のデータは、ほぼすべてのクラウド データベースで処理できます。場合によっては、このデータはメモリ内で直接処理できます。多くのクラウド データベースはテラバイト規模のデータを処理できますが、ペタバイト規模のデータを処理できるものはほんのわずかです。ほとんどのクラウド データベースでは、毎月のストレージ料金が発生することに注意してください。 SSD ストレージはハード ドライブ ストレージよりも高価です。
データがクラウドに流れる速度は、データベースの書き込み速度やネットワーク容量などの他の指標に悪影響を与える可能性があります。大量のデータが一度に到着すると、データベースまたはフロントエンド プログラムは、永続メモリへの書き込み中のデータ損失を避けるために、データを RAM にバッファリングする必要がある場合があります。
あなたの計画をすでに知っていますか?
データベース スキーマ (つまり、データの構造) が事前に決定されており、時間が経っても大きく変更されず、ほとんどのフィールドの型がレコード間で一貫している必要がある場合は、SQL データベースが最適です。それ以外の場合は、スキーマさえサポートしていないNoSQL データベースの方がアプリケーションに適している可能性があります。
データに最も適合するフォームはどれですか?
Microsoft SQL Server や MySQL などのリレーショナル SQL データベースは、行と列を含むテーブルに厳密に型指定されたデータを格納します。これらはテーブル間に定義された関係に依存し、インデックスを使用して選択したクエリを高速化し、JOINS を使用して複数のテーブルを同時にクエリします。最新のリレーショナル データベースの多くは、他の形式もサポートしています。
MongoDB やCouchbaseなどのドキュメント データベースは通常、弱い型指定の JSON データ (テキストまたはバイナリ) を保存します。このデータには、配列やネストされたドキュメントが含まれる場合があります。グラフ データベースは、頂点とエッジをプロパティ (例: Neo4j) または RDF トリプル (例: AllegroGraph) とともに保存します。実装に関係なく、 グラフ データベースはエンティティ間の接続に重点を置きます。他の NoSQL データベース カテゴリには、RocksDB などのキー値データベースや Cassandra などの列指向システムが含まれます。
データは分析に適した形式で記録される場合もあります。そうでない場合は、変換が必要です。データベースの中には、他のデータベースを基にして構築されるものもあります。たとえば、 キー値ストアは、ほぼすべての種類のデータベースの基礎となります。
レイテンシーについてはどのような要件がありますか?
レイテンシーとは、データベースの応答時間とエンドツーエンドのアプリケーションの応答時間の両方を指します。理想的には、すべてのユーザー アクションの応答時間は 1 秒未満です。これは、多くの場合、データベースが単純なトランザクションごとに 100 ミリ秒未満で応答する必要があることを意味します。
データベースをクラウドで実行すると、遅延の測定が困難になります。ここではいくつかの要因が影響します。最も単純な考慮事項は、データベース クエリによってすでに発生している遅延に、クライアントとデータベース間の遅延が追加されるということです。さらに複雑な考慮事項: 分散データベースでトランザクションを送信すると、地理的に分散したリージョン間で書き込みを待機することになる可能性があります (特にデータベースが強い整合性を維持している場合)。
クラスター化されたデータベースが必要ですか?
クラスター化データベースには単一ノード データベースに比べて利点がありますが、コストと複雑さが伴います。たとえば、クラスターは、より高い可用性、より高いスループット、そして場合によってはより低いレイテンシーを約束します。
各ノードにデータベース全体のコピーが含まれるクラスターは、大幅な冗長性を実現し、可用性を高めます。ポリシーに応じて、読み取り操作に必要なノードは 1 つだけです。または、クラスター内のノードのクォーラムが返される値に同意する必要があります。
マルチノード クラスターを使用すると、データベースのCPU能力が向上し、全体的な可用性が向上し、トランザクション レートが向上します。最も近いノードが値を返すことができる読み取り戦略を使用すると、通常、読み取りレイテンシーが減少します。一方、すべてのノードによる送信を待機する必要がある書き込みポリシーまたはトランザクション ポリシーでは、書き込み遅延が増加する場合があります。
コンセンサス グループを使用すると、待ち時間を短縮できます。 3 ノードのクラスターがあり、1 つのノードがビジー状態の場合、他の 2 つのノードはコンセンサス トランザクションを承認し、3 番目のノードが使用可能になったときに更新できます。 シャーディングは、データベースを分割してより多くのデータを処理する方法です。手動シャーディングは時間のかかるプロセスですが、多くのデータベースはこのプロセスを自動的に実行できます。
分散データベースが必要ですか?
クラスタリングはデータベースを拡張する唯一の方法ではありませんが、最初のステップです。次のステップは分散データベースです。これは通常、複数のリージョンにクラスターが存在することを意味します。データベースによっては、分散読み取りレプリカとマスター読み取り/書き込みインスタンスを許可するものや、分散読み取りおよび書き込みインスタンスまたはクラスターを許可し、同期メカニズムを備えているものもあります。
分散データベースは多くの場合、リモート ユーザーに対して待ち時間が短く、スループットが高くなります。 東京のユーザーの場合、バルセロナのサーバーへの遅延は 227 ミリ秒になる可能性があります。ただし、データベースのコピーが日本にある場合、平均読み取りレイテンシは 10 ミリ秒程度になる可能性があります。これが書き込みとトランザクションにどのような影響を与えるかは、データベースの一貫性要件とリモート クラスターの構成によって異なります。
初期の分散データベースは結果整合性 NoSQL データベースでした。結果整合性とは、リモート ロケーションでの書き込み後の読み取りが必ずしも現在の情報を返すわけではなく、時間の経過とともに更新されることを意味します。最終的な整合性により、書き込みとトランザクションの完了要件が緩和され、レイテンシーが短縮されます。
最近、一部の分散データベースでは、データ ファブリック、コンセンサス グループ、時刻同期によってサポートされる強力な整合性が実装されています。例としては、Google Cloud Spanner や CockroachDB などがあります。
データベースの予算はどれくらいですか?
ほとんどのデータベースは無料の「コミュニティ」バージョンまたは「開発/テスト」バージョンとして利用できますが、オンライン コミュニティを除けばサポートが提供されていないことがよくあります。商用ビルドで提供される一部のパフォーマンス最適化も欠落している可能性があります。ビジネスがデータベースに依存している場合は、ライセンスとサポートに投資する必要があります。
クラウドでデータベースを実行する場合は、少なくともクラウド リソースの料金を支払う必要があります。商用データベースの場合は、データベース ライセンスも必要になります。データベース ライセンスは、クラウド プロバイダーを通じて購入した長期ライセンスまたは従量課金制ライセンスのいずれかになります。
クラウド データベース – プロバイダー
クラウド データベースとサービスのプロバイダーを 12 社選択しました。 DB-Engines.com のランキングでは、他のさまざまなソリューションを見つけることができます。
アマゾンウェブ サービスは、クラウド内に少なくとも 15 のデータベースを提供します。ただし、データ ウェアハウスの場合もあれば、非推奨の場合もあります。
-
Aurora は、MySQL と PostgreSQL の両方をサポートする AWS の高性能、高可用性のリレーショナル データベース サービスです。
-
RDS は、MariaDB、MySQL、Oracle Database、PostgreSQL、Microsoft SQL Server の 5 つのエンジンをサポートする標準パフォーマンスのリレーショナル データベース サービスです。
-
DynamoDB は、高トラフィックのキーと値のデータベース サービスです。
-
ElastiCache は、Memcached および Redis と互換性のあるインメモリ サービスです。
-
DocumentDB は、MongoDB と互換性のあるドキュメント データベース サービスです。
-
Keyspaces は、Cassandra と互換性のあるクロスカラム データベース サービスです。
-
Neptune は、プロパティ グラフと RDF モデルの両方をサポートするグラフ データベース サービスです。
-
Timestream は時系列データベース サービスです。
-
QLDB は台帳データベース サービスです。
Cockroach DB は、キーと値のストアに PostgreSQL を実装する、分散型、水平方向にスケーラブル、動的に分割されたマルチモデル リレーショナル データベースです。高い一貫性と耐久性が特徴です。 CockroachDB は、2020 年後半に空間データ ストレージとインデックス作成を含むように拡張されました。
-
CockroachDB Core は無料のオープンソースです。
-
CockroachDB Enterprise は、追加機能を備えた商用バージョンです。
-
CockroachCloud は、CockroachDB Enterprise と Kubernetes 上に構築された、ベンダー管理のサービスとしてのマルチクラウド データベースです。
-
CockroachCloud Free は、機能が制限され、無料クラスターあたり 1 vCPU と 5 GB のストレージの制限がある CockroachCloud の無料バージョンです。
Couchbase Server は、ローカル クラスター内で一貫性の高い、ストレージ指向の分散型の柔軟な JSON ドキュメント データベースです。
-
Couchbase Lite はローカルで実行され、接続時にサーバーと同期できるモバイル バージョンです。
-
Couchbase Cloud は、AWS または Microsoft Azure 上のクラウド環境での Couchbase Server のデプロイと管理を自動化する、ミッションクリティカルなアプリケーション向けのサービスとしてのフルマネージド NoSQL データベースです。
Datastax Enterprise は、 オープンソースの列が豊富な Apache Cassandra データベースの強化されたクラウドネイティブ バージョンです。 DataStax Astra は、Apache Cassandra/DataStax Enterprise 上に構築された、クラウドネイティブ、サーバーレス、スケーラブルなマルチリージョン DBaaS です。インメモリインデックスにより、Astra は、Cassandra の他のバージョンではまだ利用できない非主キーに対するクエリ機能を備えています。
Google Cloud は十数種類のデータベースをホストしています。リレーショナル データベースには次のものが含まれます。
-
Oracle データベース向けベア メタル ソリューション、
-
MySQL 用のクラウド SQL、
-
PostgreSQL
-
Microsoft SQLサーバー
-
Google Cloud Spanner は、無制限のスケーラビリティ、一貫性、99.999% の可用性を備えたクラウドネイティブ データベースです。
-
Google Cloud Bigtable は、Cassandra や HBase に似たカラムナ型ストレージです。
-
Firestore と Firebase Realtime Database はドキュメント データベースです。
-
Memorystore は Redis および Memcached API をサポートします。
-
Google Cloud パートナー サービスは、MongoDB、DataStax、Redis Labs、Neo4j のマネージド サービスをサポートしています。
IBMはクラウド上で約10種類のデータベースを提供している。リレーショナル データベース サービスには次のものが含まれます。
-
ポストグレSQL、
-
EnterpriseDB (PostgreSQL の商用拡張機能) および
-
IBM DB2;
NoSQL データベース サービスには次のものが含まれます。
-
IBM Cloudant (文書データベース)、
-
MongoDB (ドキュメント データベースでもあります)、
-
DataStax (幅の広い列を備えた Cassandra の商用拡張機能) および
-
Redis (データベース、キャッシュ、メッセージ ブローカーとして使用されるメモリ内データ構造ストア)。
IBM は、エンドツーエンド暗号化された Hyper-Protect 環境で PostgreSQL と MongoDB の両方をホストします。
Microsoft Azure は8 つのトランザクション クラウド データベースをサポートしています。
-
Azure SQL は、マルチモデルのリレーショナル データベースである SQL Server のクラウド ネイティブ バージョンです。
-
Azure SQL インスタンスは似ていますが、最新の SQL Server エンジンとの最大限の互換性を提供します。仮想マシンで SQL Server を実行することもできます。
-
Azure Database は MariaDB、MySQL、PostgreSQL をサポートしています。
-
Cosmos DB は、可用性の高い、マルチモデル、マルチリージョンのデータベース サービスであり、ドキュメント モデル、ワイド列モデル、キー値モデル、グラフ モデルを提供しますが、インスタンスごとにモデルは 1 つだけです。
-
Azure Cache は Redis と互換性があります。
-
Azure Managed Instance for Cassandra は、オンプレミスの Cassandra クラスターと同期できるマネージド ワイドカラム データベースです。
MongoDB Atlasは、 AWS 、Google Cloud、および Microsoft Azureで利用できるマルチクラウド ドキュメント データベース サービスです。 MongoDB 自体は、マネージド サービスとして、またはほぼすべてのクラウド プロバイダーの仮想マシンとして利用できます。
MySQLから派生したデータベースはMariaDB 、 Vitess 、 PlanetScale 、 SkySQLであり、クラウド サービスとして利用できます。 MySQL は、 AWS 、Google Cloud、Microsoft Azure 、Oracle Cloud のマネージド サービスとしてだけでなく、ほぼすべてのクラウド プロバイダーの仮想マシンでも利用できる、オープンソースのマルチモデル リレーショナル データベースです。
-
MariaDB は MySQL のフォークです。
-
Vitess は、自動シャーディングを備えた MySQL の水平スケーリングのためのデータベース クラスタリング システムです。
-
PlanetScale は、Vitess をベースにした MySQL 互換のサーバーレス データベース プラットフォームです。
-
SkySQL は、AWS と Google Cloud で利用できる MariaDB サービスです。
Neo4j は、多くのクラスタリング機能を備えたACID準拠のプロパティ グラフ データベースです。 Neo4j Aura は、クラウド サービスとして提供される、高速で信頼性が高く、スケーラブルで完全に自動化されたグラフ データベースです。 Aura のすべてのバージョンは、 AWSでも利用できるエンタープライズ レベルを除き、Google Cloud でのみ利用できます。
Oracle Database は最初の商用リレーショナル データベースであり、現在でも主要なマルチモデル リレーショナル データベースです。 Oracle Cloudでは、さまざまな形やサイズのサービスとして利用できます。 MySQL は Oracle Cloud 上のサービスとしても利用できます。 Oracle Database は、オンプレミスだけでなく、 AWSや Google クラウドでも使用できます。
Redis は、ディスクに保存できるメモリ内データ構造用の NoSQL ストレージです。データベース、キャッシュ、メッセージ ブローカーとして機能します。 Redis Sentinel による高可用性と Redis Cluster による自動パーティショニングを提供します。
-
Redis Enterprise は、速度、信頼性、柔軟性を向上させるための追加機能を提供し、サービスとしてのクラウド データベースとして利用できます。
-
Redis on Flash は、ハードウェア コストを大幅に削減できる Redis Enterprise の機能です。
Redis Enterprise Cloud インスタンスは、 AWS 、Google Cloud、および Microsoft Azureで利用できます。独自のリージョンを選択したり、クラウド VM、Kubernetes、コンテナーで Redis を実行したりすることもできます。
クラウド DB – 準備とフォローアップ
アプリケーションにどのデータベースを選択するかに関係なく、コミットする前に概念実証を実行する必要があります。また、システムを実際に使用する前に負荷テストを行うことをお勧めします。多くのクラウド データベースは必要に応じて拡張できますが、すべてのクラウド データベースがデータを新しいインスタンスに移動し、古いインスタンスをシャットダウンせずに拡張できるわけではありません。
データベースが運用環境に入ったら、異常なアラートによる継続的な監視を設定し、緊急事態に備える必要があります。一部のデータベースでは、ワークロードの変化に応じてインデックスを調整および変更する必要があることに注意してください。他のデータベースの場合、調整は自動的に行われます。 (FM)
この投稿は、米国の姉妹誌 Infoworld の記事に基づいています。