AWSのデータベースサービスについてまとめてみた。
やってみたこと
まず、そもそもデータベースってなんだっけ?みたいなところから初め、AWSにおけるDBサービスについてまとめてみた。
そもそも、データベースとは?
- 大量のデータの読み・書きに特化したサービス
- いきなりDB使おうとするのではなくて、たぶんこんな流れで検討するのが自然
- 紙に書いとけばよくない?
- 大量のデータをコピペするとか検索するの大変じゃなければテキストファイルくらいでよくない?
- デジタルデータにしとこう。テキストエディタとかExcelに書いておこう
- 量が増えてきて、整合性をとって変更するとか、複雑な条件で検索する参照するにもExcelで事足りない?
- Excelファイルが散らばってたり、人によって書き方違うので集計大変とまでいかなければExcel頑張ればよくない?
- 大人数で開発するとか、はじめっから使いこなせるチームでも無い限り、運用方法だけ定めてExcelの使い方とかを使い回せるようにフレームワーク化するくらいでよくない?
- 黙ってDB使っとくべきか?
- 「データベース」といってもいろいろな種類・特徴がある。よく使われるアーキテクチャとしては2つある
- RDB
- 表形式でデータを管理できる
- 表から表に「関連付け」することができる
- 例えば、はじめに「顧客名簿」「購買履歴」という表を別々に作る。次に、両方に”顧客ID”という項目を入れる。すると、2つの表を「関連付け」て、顧客ごとの購買履歴を集計することなどができる。また、顧客名簿の更新が反映される。
- 代表的なソフトがいくつかある
- Oracle
- Microsoft SQL Server
- MySQL
- PostgreSQL
- SQLという言語を利用して操作できる
- NoSQL
- Not Only SQLの略
- SQLを使わないデータベースアーキテクチャ
- RDBよりも柔軟な形式でデータを格納できる
- 代表的なソフトがいくつかある
- Redis
- Memcached
- Cassandra
- MongoDB
- CouchDB
- Neo4j
- Titan
- RDB
DynamoDB
概要
- どれ使うか迷ったら、まずこれを検討しよう。
特徴
- 高可用性をもつ設計
- DynamoDBをチョイスするだけで一定の高可用性が担保できる
- なんも考えなくてもいい
- 基本そのままでいいんだけど、こまったら使うとよいオプションが色々ある
- スループットキャパシティ
- データパーティショニング
- DynamoDBにおけるプライマリキーとインデックス
- DynamoDB Streams
- Consistent Read
- DynamoDB Accelarator
- TTL
RDS
概要
- DynamoDBの癖が強すぎて感化できないなら、こいつに任せれば間違いない。長期政権。
ストレージタイプ
特徴
- マルチAZ構成である
- リードレプリカという概念がある
- バックアップとリストアが便利である
- セキュリティオプションがある
Amazon Auroraというサービス
- 構成要素
- Auroraレプリカとは
- エンドポイントの設定
Redshift
概要
- RDSの集計が遅い、そこだけなんとかしたい。
Redshiftの構成
- クラスタとリーダーノードとコンピュートノード
Redshiftの特徴
- カラムナ型データベースである
- 多くのエンコード方式に対応している
- ゾーンマップという概念がある
- 柔軟な拡張性を持っている
- ワークロードの管理機能を持っている
- Redshift Spectrumという拡張サービスがある
Elasticache
概要
- Memcached型Elasticacheの特徴
- クラスタ構成
- スケーリング
- Redis版Elasticacheの特徴
- クラスタ構成
- スケーリング
- CPU使用率
- データ暗号化
RDSの集計が遅い、
その他のデータベース
他にもいろいろなAWSサービスがある。一言だけで雑に表現してみる
Amazon Neptune
- グラフDBは任せろ
Amazon DocumentDB
- MongoDBをAWSで使いたいなら任せろ
Amazon Keyspaces
- Apache CassandraをAWSで使いたいなら任せろ
Amazon Timestream
- 時系列DBは任せろ