AWSのデータベース関連のサービスをまとめてみた(自分用)
AWSのデータベース関連のサービスは種類が多くてわからん、、
と、思ったので、簡単にまとめてみることにしました。
(初心者なので、解釈などが間違っていたりしたら、すいません)
大まかな分類
公式にある、データベースサービスの分類表を元に、もう少し説明を加えた表にしてみます。
公式ページ
データベースタイプ | ユースケース | AWSのサービス名 |
---|---|---|
リレーショナル | 従来のアプリケーション、ERP、CRM、e コマース | Amazon Aurora |
キー値 | トラフィックの多いウェブアプリ、e コマースシステム、ゲームアプリケーション | Amazon DynamoDB |
インメモリ | キャッシュ、セッション管理、ゲームのリーダーボード、地理空間アプリケーション | Amazon ElastiCache |
ドキュメント | コンテンツ管理、カタログ、ユーザープロファイル | Amazon DocumentDB (MongoDB 互換) |
ワイドカラム | 高スケールの業界アプリ、設備のメンテナンス、多数の装置の管理、ルートの最適化 | Amazon Keyspaces |
グラフ | 不正検出、ソーシャルネットワーク、レコメンデーションエンジン | Amazon Neptune |
時系列 | IoT アプリケーション、DevOps、産業テレメトリ | Amazon Timestream |
台帳 | 記録システム、サプライチェーン、銀行トランザクション | Amazon Quantum Ledger Database (QLDB) |
上記の表を見てもぱっとしないので、まずデータベースのタイプについてかみ砕いていきます。
(詳しい話は、データベースの種類などで調べてみてください)
リレーショナルデータベース
日本語で言うと、関係データベースというそう。
有名なところで行くと、MySQLなんかが、リレーショナルデータベースに分類されます。
リレーショナルというのは、関係という意味がありますが、データを表として扱います。
データベースの中に、テーブルという物があり、そこにそれぞれカラムとロウがあります。
マジで、エクセルです。(適当なこと言うな)
データベースは、エクセルのブックを指します。
テーブルはブックの中のそれぞれのシートを指します。
カラムとロウは列と行です。
リレーショナルデータベースは、それらを事前に定義して使用します。
メリットは、データの関連性を定義できること、データの一貫性を保てることなどです。
デメリットは、テーブルなどが複雑化しやすく、処理が遅くなることがあることです。
キー値 (Key-Value データベース)
Key-ValueデータベースはNoSQLデータベースの一種で、データをキーと値のペアとして管理します。
構造として、キーと値の2種類がメインなので、先ほどのリレーショナルデータベースと比べて、わかりやすく処理速度が速いというメリットがあります。
インメモリ
インメモリデータベースは、データがメモリ(主記憶装置)上に保存されるデータベースです。
もちろん、データベースやコンピューターを再起動すると、データはすべて消えてしまいますが、その分アクセス速度がとても速いです。
アクセス速度が速い理由は簡単で、HDDやSSD(補助記憶装置)よりメモリの方が圧倒的に読み書き速度が早いからです。
でも、再起動したらデータが消えてしまうのなら、用途は限定的なのでは?と思われがちですが、永続化(HDDやSSDに保存する機能)を備えている物もあるので、そういった物を使用すれば、様々な用途に使用できます。
ドキュメント型データベース(NoSQL)
ドキュメント型データベースは、リレーショナルデータベースとは違い、データをJSONのようなドキュメントとして、保存しクエリを行うように設計されています。
リレーショナルデータベースとの決定的な違いは、後からデータの内容を増やしたり、データによって所持している属性を変えたりすることができることです。
また、アクセス速度もリレーショナルデータベースより高速です。
しかし、データの一貫性を保つのが難しかったりするので、選択は慎重にするべきだと思います。
ワイドカラム
ワイドカラム型データベースは列指向データベースとも言われます。
リレーショナルデータベースは行単位なのに対し、列単位でデータを取得・取り出しを行います。
データを縦に読むのは得意だけど、横に読むのは苦手です。
そのため、ユーザーの情報を保存したテーブルがあったとき、性別の列だけを取り出したりすることなどの効率が良いです。
そのため、取得したデータを後に分析などを行う際には、列指向データベースが使用されることがあります。
グラフ
グラフデータベースは、グラフ構造を備えたデータベースです。
使ったこと無いので、あまりわかりません😰
リレーショナルデータベースであれば、データの関係をIDなどで紐付けるのに対して、グラフデータベースはそれぞれノードとエッジで構成されており、それで親子関係などを記述できるそうです。
グラフDBはノードが持つ隣接ノードの情報をたどるだけなので、リレーショナルデータベースより、探索速度が早いようです。
その他、絵、ビッグデータの解析などに使われるそうです。
時系列データベース
時系列データベースは、タイムスタンプをキーとしてデータを保存するデータベースです。
こちらも、使用経験が無いです。
用途の例として良くある例が、温度計のデータを保存する場合です。
温度計とっていっても、1時間に一回の保存などではなく、1秒に一回やそれ以下の短い周期でデータを保存する場合に使用されます。
この場合、同時に書き込む性能や、大量のデータを保存する必要があるため、専用の時系列データベースを使用することがあります。
また、時系列での集計がとても早いので、その点もメリットです。
台帳
台帳データベースは、データの操作履歴がすべて残るデータベースです。
銀行の口座残高の保存などに使用する例が一番良いでしょうか?
まず、他と大きく違うのが、データの変更履歴がすべて残ります。
確かに、リレーショナルデータベースでも履歴を残すことは可能ですが、改ざんされてしまう可能性なども考えられます。
しかし、台帳データベースであれば、変更履歴は、変更・削除が不可能です。
また、データの整合性をハッシュ値を使用して検証することができ、よリデータの改ざんが難しくなっています。
各サービスの解説
いや、ここまで描くので結構疲れました、、、
さて、ここからAWSの各DBサービスを解説していきます。
前項で各データベースの違いは話したので、サービス的肝炎からの違いに関して話をしたいと思います。
Amazon Auroa
まあ、これはDBのサービスというよりか、AWS独自のソフトウェアという位置づけでしょうか?
Amazon AuroaはAWSが開発したMySQLおよびPostgreSQLと互換性を持つデータベースです。
AWS曰く、MySQLやPostgreSQLよりも高いパフォーマンスが出せるとのこと。
また、スケールアップやスケールダウンが容易なこと、レプリカの作成が簡単で低レイテンシーであることなどが特徴です。
実際、よほど変なことをしない限り、わざわざMySQLなどを使わずに、Auroaを使っておけば無難説があると思っています。
Amazon RDS
Amazon RDSはデータベースのセットアップ・管理・運用をめちゃめちゃ簡単に行うことのできるサービスです。
例えば、MySQLをEC2にインストールし設定するとなった場合、OSにMySQLを入れて、パスワードやユーザ−、権限などを設定して、バックアップの設定をして、、
とやることが沢山です。
しかし、RDSを使えば、これらすべてを簡単に行うことができます!
また、マルチAZという最強のオプションがあります。
複数のアベイラビリティーゾーンにデータベースを配置でき、その同期や障害時の切り替えも自動で行ってくれるという最強のサービスなのです!
Amazon Redshift
データウェアハウスサービスだそうです。
データウェアハウスサービスは様々なシステムからのデータをまとめて保存し、分析するサービスのようです。
通常のデータベースとは違い、大量のデータを長期的に保存するためのものです。
その保存されたデータを使い、様々な分析を行います。
Amazon DynamoDB
Amazon DynamoDBはキーと値で紐付けられるデータを保存するデータベースです。
特徴としては、読み出し速度が速いこと、固定費はなく、データの読み込み・書き込みやストレージの使用料金で従量課金されます。
Amazon ElastiCache
Amazonが提供するメモリキャッシングサービスです。
通常のデータベースよりも読み書きが早いので、計算などに使用されるそうです。
Amazon MemoryDB for Redis
Radisは有名なインメモリデータベースで、永続化の仕組みはあるのですが、必ずデータが消失しないとも限りません。そこで、マルチAZにトランザクションログを保存することで、障害があった場合でも、データの整合性を保つことができるようにした。
と言う物だそうです。
Amazon DocumentDB
MongoDB互換のドキュメントデータベース。
互換とはいっても、ストレージエンジンが独自エンジンで作られている。
MongoDBと、クラスタの構成とかに違いがあったりするらしい。
また、バックアップを自動で行ったりするのがとても簡単。
Amazon Keyspaces
Apache Cassandra 互換のキーバリュー型データベース。
キーバリューといっても、Valueに複数のカラムを持つワイドカラムストアを採用している。
Amazon Neptune
グラフ型のデータベースで、OpenGraphAPIなどでデータを取得できる。
通常のデータベースと違い、個々の物と物の関連付けを行っていく。
理解に苦しむので、これしか書けない、、
Amazon Timestream
Iotなどに特化したデータベース。
データに必ず時間が入っている。
DynamoDBと近しいところもあるが、集計処理や時間を元にした処理が得意なので、温度計のデータをみたいな、センサーの値を元にやるのが得意なのかな?
という印象。
Amazon 台帳データベースサービス (QLDB)
台帳データベース。台帳というと、売買や事務の記録の土台となる帳簿という意味だが、その通りで、変更のログが必ず残されるという仕様のデータベース。
普通のDBでも残すことが可能だが、こちらの場合は、記録のレコードは、変更削除不可なので、改ざんがされにくい。また、ハッシュキーによる値の改ざんチェックも備わっているので、絶対にデータを改ざんされたくない、ような物、銀行の口座残高、カードの取引履歴などを扱うのに良いと書いてある。
まとめ
AWSのサービス多過ぎ、、
不完全な内容過ぎるけど、これで限界
気が向いたら、追記するかも
Discussion