本記事はアジアクエスト Advent Calendar 2024の記事です。
アジアクエストクラウドインテグレーション部の崔 文碩です。
本記事は、connpassで発表した「クラウドエンジニアが語るAWS・Azure・GoogleCloud基礎(ストレージ編)」の内容をもとに作成された記事になります。
AWS・Azure・GoogleCloudの各クラウドのデータベースを紹介し、比較していきます。
データベースは一定の形式で作成・管理されたデータの集合体のことを意味します。
簡単に言いますと、データを整理して、必要なときにすぐに取り出せるようにするための「データの倉庫」みたいなものです。
例としては図書館の本を挙げられます。本をジャンルごとに並べて、必要な本をすぐに見つけられるようにするのと似ています。
データベースは、大きく2つに分類されます。
RDBとNoSQLはそれぞれ特徴があり、以下にそれをおおまかにまとめました。
比較項目 | RDB | NoSQL |
---|---|---|
最適化 | ストレージ最適化 | 計算リソースに最適化 |
データ設計 | 正規化/リレーショナル | 非正規化/階層構造 |
クエリ方法 | SQLを使用可能 | 各データベースによって 異なるクエリ方法 |
トランザクション処理 | トランザクション処理 | トランザクション処理は限定的 |
一貫性/堅牢性 | データの堅牢性 一貫性 |
データの堅牢性 一貫性はデータベースによる |
スケーラビリティ | スケールアウトの煩雑さ | 高いスケーラビリティ |
運用負荷 | テーブルの運用負荷 | クラスタの運用負荷 |
RDBはデータの整合性と複雑なクエリが重視される場合に適しています。また正規化することで処理のコストを抑えられることもメリットとして挙げられます。
正規化
正規化(Normalization)とは、リレーショナルデータモデルでデータの重複性をなくすこと。
重複データを最小にし、データの不整合や喪失が起きるのを防ぐことができる。
ただ、データが大規模になると処理速度が落ちるというデメリットがあります。
ユースケースとしては顧客名簿や在庫管理、基幹システムなどに利用されます。
また、RDBの中でもエンジンによって特徴が異なります。
データベースにおけるエンジンとは、データベースからデータを作成、読み取り、更新、削除時に使用するコアサービスのことです。
DBエンジン | 特徴 |
---|---|
MySQL/MariaDB | GNU GPLと商用ライセンスのデュアルライセンス 最も普及している |
PostgreSQL | 企業に所有されていないソフトウェア データの堅牢性が高い |
Oracle | Oracleが開発している RDBMSのデファクトスタンダード |
SQL Server | Microsoftが開発している GUIツールが充実 |
IBM Db2 | 2023年11月末、IBM社との協力で提供開始の発表 AIワークロードのデータ管理を簡単に行えるよう設計 |
NoSQLデータベースは、大規模な非構造化データセットや急速に変化するデータ構造を持つアプリケーションに適しています。
メモリ内で処理を行うため大容量データでも高速に処理が可能で、水平分散によるスケールアウトといった柔軟性と拡張性が特徴になります。
ただ、データの一貫性が保証されていないため、データの更新や削除処理が頻繁に発生すると、データの整合性が保証されない場合があります。
ユースケースとしては低遅延が必要なアプリケーションやゲーム、ビッグデータ分析やトラフィックの急増が想定されるデータの分析などに利用されます。
NoSQLも同じくエンジンごとに特徴があります。
DBエンジン | 特徴 |
---|---|
redis | キーバリュー型DB(データを「キー」と「値」という単純な構造で管理) オンメモリ レプリケーションできる |
Apache Cassandra | カラム指向型DB ログなど大量のデータ解析向き Facebookの大規模データの格納のために開発されたもの |
MongoDB | ドキュメント型DB スキーマレスでデータを格納できる JSONやXML等のデータ構造に対応 複雑なデータモデリングを容易に実現可能 |
このようにデータベースは、それぞれ異なる特徴や利点を持っているため、ニーズやプロジェクトの要件に応じて選択する必要があります。
クラウドサービスを利用する際、主要なRDBMSの選択肢として、AWSのAmazon RDSやAmazon Aurora、AzureのAzure SQL DatabaseやAzure Database for MySQL/PostgreSQL、そしてGoogle CloudのCloud SQLやCloud Spannerが挙げられます。
各クラウドが提供する重要なマネージドサービスについて詳しく見ていきましょう。
Amazon Auroraは、MySQLに対して最大5倍、PostgreSQLに対して最大3倍のスループットを実現可能であり、さらにデータは3つのアベイラビリティゾーンに6回レプリケーションされるため、可用性は99.99%に達します。
Azure SQL Databaseは、Microsoft SQL Serverデータベースエンジンの最新の安定したバージョンに基づく、高度なクエリ処理機能を使用できます。
また、自動パフォーマンス監視機能(Query Performance Insights)を活用することで、メンテナンスコストも大幅に削減できます。
Cloud Spannerは、RDBMSの構造とNoSQLデータベースのスケーラビリティを兼ね備えた「NewSQL」として注目されています。
各ノードおよびストレージはリージョン内の3つのゾーンに複製され、可用性は99.999%を誇ります。
ただし、各クラウドによって非対応のデータベースエンジンが存在するため、選択の際は注意が必要です。
AWS | Azure | GoogleCloud | |
---|---|---|---|
MySQL | Amazon RDS for MySQL Amazon Aurora |
Azure Database for MySQL | Cloud SQL for MySQL |
PostgreSQL | Amazon RDS for PostgreSQL Amazon Aurora |
Azure Database for PostgreSQL | Cloud SQL for PostgreSQL |
Oracle | Amazon RDS for Oracle | Oracle Database@Azure | Oracle Database@Google Cloud |
SQL Server | Amazon RDS for SQL Server | SQL Database | Cloud SQL for SQL Server |
MariaDB | Amazon RDS for MariaDB | - | - |
システムの性能や可用性はもちろん重要ですが、運用コストも重要な要素となります。 AWS、Azure、Google Cloudはそれぞれ異なる料金体系を持っており、自社のニーズに最適な選択をするためには、これらの料金を比較することが必要です。 そのため、各クラウドのRDBMSの中でSQL ServerとMySQLの料金をざっと比較していきたいと思います。
※東京(東日本)リージョン、SQL Serverの場合
Amazon RDS | Azure SQL Database | Google Cloud SQL | |
---|---|---|---|
使用データベース | Amazon RDS for SQL server | Azure SQL Database | Cloud SQL for SQL Server |
インスタンスクラス | db.m5.large (2vCPU、メモリ8GiB) |
Standard(Gen5) (2vCPU、メモリ8GiB) |
db-standard-2 (2vCPU、メモリ7.5GiB) |
データ容量 | 100GiB | 100GiB | 100GiB |
バックアップ容量 | 100GiB | 100GiB | 100GiB |
1カ月当たりの料金 | 119,264円 794.91 USD |
68,458円 456.28 USD |
103,708円 691.23 USD |
※ 2024/12時点の内容で、1ドル150円で計算しています。
※クラウドサービスの料金体系、為替レート変動により料金は変わる可能性があります。
SQL Serverを比較した場合、同じスペックであればAzureがコスト面で優れていることが見受けられます。 ただし、使用するリソース構成やデータ転送などの要因によってトータルコストに大きな差がない可能性もあるので、十分に考慮する必要があります。
※東京(東日本)リージョン、MySQLの場合
Amazon RDS | Azure Database for MySQL | Google Cloud SQL | |
---|---|---|---|
使用データベース | Amazon RDS for MySQL | Azure Database for MySQL | Cloud SQL for MySQL |
冗長構成 | Multi-AZ | フレキシブルサーバー | High Availability Configuration |
インスタンスクラス | db.m5.large (2vCPU、メモリ8GiB) |
D2v4 ,2仮想コア (2vCPU、メモリ8GiB) |
db-standard-2 (2vCPU、メモリ7.5GiB) |
データ容量 | 100GiB | 100GiB | 100GiB |
バックアップ容量 | 100GiB | 100GiB | 100GiB |
1カ月当たりの料金 | 59,517円 396.98 USD |
29,901円 194.85 USD |
46,674円 311.05 USD |
※ 2024/12時点の内容で、1ドル150円で計算しています。
※クラウドサービスの料金体系、為替レート変動により料金は変わる可能性があります。
MySQLに関しても同様、Azureがコスト面で利点を持っていることが見られます。
クラウドサービスに移行する際、既存のデータベースを一から構築する必要があるのではないかと心配する方も多いのではないかと思います。
このような心配から、各クラウドでは移行サービスを提供しており、これを利用することでオンプレミス環境で使用していたデータベースをクラウドにスムーズに移行できます。
ただ、クラウドサービスごとに移行方法や制約事項、対応するデータベースが異なるため、事前にドキュメントを確認する必要があります。
AWS Migration Serviceに関する参考資料
はじめてAWS DMSを検討する際に読んでいただきたいこと
AWS DMSのターゲット
AWS DMSのソース
Azure Migration Serviceに関する参考資料
Azure Database Migration Serviceとは何ですか
Azure Database Migration Service ツールのマトリックス
Azure データベースの移行ガイド
Retirement: Azure Database Migration Service(classic)-SQL server scenarios deprecation
GoogleCloud Database Migration Serviceに関する参考資料
Database Migration Service
このように、各クラウドサービスはそれぞれ異なる強みを持っており、移行ニーズに応じた選択が可能です。
自社のニーズに最も適したアプローチを選ぶことをおすすめします。
主要なNoSQLデータベースの選択肢として、AWS、Azure、Google Cloudの各クラウドのサービスを見ていきたいと思います。
各クラウドごとに対応しているNoSQLの範囲は異なるため、選択時には注意が必要です。
AWS | Azure | GoogleCloud | |
---|---|---|---|
キーバリュー型 データベース |
DynamoDB | CosmosDB (Table API) |
Cloud Database |
カラム指向型 データベース |
Keyspaces | CosmosDB (Cassandra API) |
Bigtable |
ドキュメント型 データベース |
DocumentDB | CosmosDB (MongoDB API) |
Cloud Firestore |
AWS NoSQLデータベース関する参考資料
Amazon DynamoDB
Amazon DynamoDBの料金公式ドキュメント
Amazon Keyspaces(Apache Cassandra向け)
Amazon Keyspaces(Apache Cassandra向け)の料金公式ドキュメント
Amazon DocumentDB
Amazon DocumentDBの料金公式ドキュメント
Azure NoSQLデータベース関する参考資料
Azure Cosmos DB
Azure Cosmos DBの料金公式ドキュメント
Google Cloud NoSQLデータベース関する参考資料
Cloud Firestore
Cloud Firestoreの料金公式ドキュメント
Bigtable
Bigtableの料金公式ドキュメント
各クラウドのNoSQLデータベースは、それぞれ異なる特性を持ち、さまざまなユースケースに応じた選択肢を提供しています。
具体的なニーズに応じて最適なサービスを選ぶことが重要になります。
続いて、NoSQLデータベースの料金についてですが、NoSQLデータベースは各クラウドの料金体系が複雑で、特にAWSのDynamoDBに関してはその傾向が著しいです。
DynamoDBは、データストレージ、読み取り・書き込みのキャパシティユニット、データ転送など、さまざまな要素に基づいて料金が設定されており、使用するケースによってコストが大きく異なる可能性があります。
そのため、DynamoDBを利用する際には、事前に公式ドキュメントをよく読み、各種料金がどのように発生するかを理解することを強くお勧めします。
他のNoSQLデータベースサービスについても同様で、各クラウドが提供する料金体系は独自の特徴を持っています。
例えば、AzureのCosmos DBやGoogle CloudのCloud Firestoreも、それぞれ異なるコストモデルを採用しており、ユーザーはこれらを慎重に比較する必要があります。
それぞれコストの最適化を図るためのオプションや設定を提供しているため、これらを活用することで無駄なコストを抑えるといいかと思います。
本記事では、AWS、Azure、Google Cloudのデータベースについて基本情報と比較を行いました。
データベースはリレーショナル(RDB)とNoSQLに分類され、それぞれ異なる特徴とユースケースがあります。
RDBMSでは、Amazon RDSやAzure SQL Database、Google Cloud SQLなどのマネージドサービスがあり、NoSQLではDynamoDBやCosmos DB、Cloud Firestoreが選択肢として挙げられます。
最後まで読んでいただきありがとうございます。