目次
RDBMSとNoSQL
データベースにはさまざまな種類がありますが、大きくRDBMS(Relational DataBase Management System)とNoSQL(Not Only SQL)の2つに分類されます。これらはデータベースとしての特性が大きく異なるため、目的や用途に応じて正しく使い分ける必要があります。
RDBMS
RDBMSは、列と行で構成されているデータベースです。RDBMSではDML、DDLなど、データを利用するための言語としての「SQL」機能が提供されます。
SQLはトランザクションという処理単位で実行されます。トランザクションとは、データをある一貫した状態にするために必要となる一連の処理を指し、RDBMSにはACID特性という性質を守りながらトランザクションを管理する機能があります。ACID特性は以下4つの特性を示します。
- Atomicity(原子性)
トランザクションは完全に実行されるか、まったく実行されないかどちらかである性質。もしトランザクションの一部の処理が失敗した場合は、その他の処理結果も反映されずにトランザクション実行前に戻します。 - Consistency(一貫性)
トランザクションの実行結果として得られるデータに矛盾がない性質。 - Isolation(独立性)
トランザクション実行中の処理過程が外部から隠蔽され、他の処理などに影響を与えない性質。トランザクションを同時に複数実行していたとしても、単独で実行した場合と同じ結果にならなくてはいけません。 - Durability(永続性)
処理完了済みの結果は永続的に保存される性質。システム障害が発生したとしても、バックアップファイルやログファイルから復元対応が可能。
RDBMSが使用されるケース
データを表(マトリクス)に似た構造上で管理し、各テーブル同士が関連を持つシステムで使用されます。オンラインショッピングや財務会計システムなどトランザクション処理によるデータの一貫性が求められるケースや、SQLで複数の表をJOINしてデータ集計を行うケースで使用されます。
RDBMSならAmazon RDS
Amazon RDSは6つのデータベースエンジン Aurora、MySQL、PostgreSQL、MariaDB、SQLServer, Oracleから選択可能なマネージリレーショナルデータベースです。RDBMSのセットアップ、運用、およびスケーリングを簡単に行うことができます。
Amazon Aurora
データベースエンジンの1つであるAmazon Aurora はMySQLおよびPostgreSQLとの完全互換性を持ち、独自の構成から、高可用性と信頼性を実現しています。
例えば、Amazon RDSのその他のデータベースでは、処理を行うインスタンスとデータを格納するストレージは1対1ですが、Amazon Auroraのストレージはインスタンスと分離しており、1AZ当たり2か所、3AZに渡りデータをコピーするため、計6か所のストレージにコピーされます。そのため、Auroraであれば、DBインスタンスが一台、つまりSingle-AZであっても、部分的なストレージにディスク破損などの問題が起こっていたとしても、そのことがクライアントからのリクエストに影響を及ぼしません。Auroraが使用可能なケースであれば、Auroraの使用をおすすめします。
しかしながら、Auroraが互換性を持つのはMySQLとPostgreSQLのみです。ですのでその他の3製品をお使いになるのであれば、RDSを選択するしかありません。また、使用できるデータベースエンジンのバージョンやインスタンスタイプに制限がありますので、これらを満たさないケースもRDSを選択することになります。
NoSQL
NoSQLデータベースは多くの種類が存在し、キーバリュー型、ドキュメントデータベース、インメモリデータストアなどに分類されます。AWSではそれぞれの種類に対応したマネージドサービスが提供されています。
キーバリュー型の特性/使用されるケース
バリューとキーは一対一で管理され、新しいバリューが増えるとキーが割り振られ、データが増えてくというシンプルな構造です。RDBMSのように異なる領域をアクセスしたりほかのテーブルを参照したりすることがないため、高速なデータの読み書きが可能です。シンプルな構造であるため拡張性が高く、大規模な水平スケーリングが可能です。大規模Webシステムで多数のユーザーにより同時に読み書きが想定されるシステムに向いています。
キーバリュー型が適さないケース
一般的なRDBMSのようにリレーションを組む必要があるケースや様々なデータを横断的に検索するようなケースでは適さないことが多いです。また、厳密な一貫性や整合性(ACID特性)を要するシステムには適さないため、RDBMSを利用するべきです。
AWSのマネージドサービスとしてはAmazon DynamoDBが提供されています。
ドキュメント型の特性/使用されるケース
非リレーショナルデータベースの一種で、データを JSON やXMLのようなドキュメントとして保存し、クエリによる検索が可能です。ドキュメントデータベースを使用すると、開発者はアプリケーションコードで使用しているのと同じドキュメントモデル形式を使って、簡単にデータをデータベースに保存できるようになります。ドキュメントデータベースは、ブログプラットフォームや動画プラットフォームなどのコンテンツ管理アプリケーション、カタログ情報の保存などに用いられます。
AWSのマネージドサービスとしてはAmazon DocumentDBが提供されています。(Amazon DocumentDBはMongoDBと互換性を持ちます。)
インメモリ型の特性/使用されるケース
データをディスクや SSD に保存するデータベースではなく、データストレージ用のメモリ領域で動かします。インメモリデータストアでは、ディスクにアクセスする必要性を除くことによって、より高速なレスポンスが期待できます。キャッシュ保存用に使用することで、以前に取得または計算されたデータを効率的に再利用できるようになります。
AWSのマネージドサービスとしてはAmazon MemoryDB for Redisや、
Amazon ElastiCache for Redis、Amazon ElastiCache for Memcachedが提供されています。
(それぞれRedisやMemcachedと互換性があるサービスです。)
まとめ
様々なワークロードを満たすデータベースは存在しないため、実現したいシステムに応じて特性の合ったデータベースを選択する必要があります。RDBMS、NoSQLにもそれぞれ得意/不得意分野が存在し、RDBMSでは当たり前にできていたことが、NoSQLでは実装できない(推奨されない)こともあります。設計時に考慮するポイントも異なりますので、それぞれの特性を理解した上で使用する必要があります。また、システムによっては複数種類のデータベースを使用したり、その他のマネージドサービスの利用したりすることでより高パフォーマンスなシステム開発が可能となります。
日本全国には開発会社が無数にありますが、Webサービスやアプリサービスのスケール(規模拡大)を実現するビジネス推進力やシステムの堅牢性、可用性を意識した設計力・技術力を合わせ持つ会社は、全国で見ても多くはなく、弊社は数少ないその一つ。お客様のご要望通りに開発することを良しとせず、お客様のビジネス全体にとって最適な解を模索し、ご提案ができるビジネス×テック(技術力)×デザインの三位一体型のシステム開発/アプリ開発会社です。ITやDX全般に関して、何かお困りのことがございましたら下記の「GeNEEへのお問合せ」フォームからお気軽にご連絡いただけたらと思います。