🙄
【AWS】RDB と NoSQLDB
RDB と NoSQLDB
AWSのデータベースサービスは大きく以下の2種類のデータベースに分類されます。
まずはRDB と NoSQLDBについて理解しましょう。
RDB(リレーショナルデータベース)とは
AWSで提供されているサービス
RDS、Aurora等
特徴
メリット
- 複雑なデータ処理(SQLが使える)
- データ処理の一貫性が保証されている。(トランザクション処理)
- データの完全性
- プライマリキー、外部キー、「Not NULL」制約、「Unique」制約、「Default」制約、「Check」制約等を適用することで、データの正確性と信頼性を確保できる。
デメリット
- 拡張性
- 原則として1台のサーバーで実行するように設計されているため、拡張には高いコストがかかる
- データの完全性を保障するための制約が多いが故に仕様変更への柔軟性が低い
- 処理速度
- 膨大なデータ量を扱う場合は処理速度が落ちるため、業務の生産性が低下してしまう(大容量:一億行以上)
ユースケース
データの一貫性、完全性、検索の細密さが優先されるシステム
- 特に上記が優先されるような業務システム
NoSQLDB(Not Only SQLデータベース)とは
AWSで提供されているサービス
DynamoDB
特徴
メリット
- 柔軟性・スケーラビリティ
- NoSQLはサーバーの台数を増やし水平分散によるスケールアップが可能。
- どこまでスケールしても運用が変わらない
- 高速処理
- NoSQLはRDBと対称にデータの一貫性を保証しません。そのため、大容量データでも高速に処理できます。(シンプルだから探すのも早い)
- 大量のデータを扱うことが可能(大容量:一億行以上)
デメリット
-
データの整合性を保てない
- データの一貫性が保証されていないため、データの更新や削除処理が頻繁に発生すると、データの整合性が保証されない場合がある。
- 書き込んだのに、読めないという現象が起きうる
-
データの加工が難しい。
-
NoSQLはSQLを使用しないため、複雑な検索はできない
ユースケース
- 高い拡張性を必要とするシステム
- スループットが増減するようなピーク帯のあるシステム
- 大量のデータを蓄積して高速な検索が可能なシステム
- 広告やゲームなどのユーザ行動を管理するシステム
- webアプリケーションの永続的セッションデータベースが必要となるシステム
- 高速処理→かなり大規模でないと効果的ではない
- データの複雑さ、オブジェクト構造でデータを格納することができる
- データ設計が不要
RDB or NoSQLDB
☝ DBを選ぶ際のポイントは?
DBを選ぶ際のポイントは当然ですが「何を優先するか」にあります。
また、前提として1つのシステムでどちらか一方しか使わないと言った一極端の考えではなく、ユースケースに応じて二種のDBを組み合わせて使うといった中庸の考えが大切です。
RDB
下記の項目を優先する場合はRDBの導入を検討する
- 処理の複雑さ
- 決まったデータを確実に複数のデータストアに登録できる
NoSQL
下記の項目を優先する場合はNoSQLの導入を検討する
- 処理の速さ
- より多いデータ量
- ユーザ数や事業規模に応じた柔軟なスケーリング
Discussion