未経験からのフルスタックエンジニア

スキルをつけよう!未経験からフリーランスエンジニアへの成長記録

AWS 学習履歴(7)~データベース・DynamoDB・Aurora・EFS~

AWS学習履歴の趣旨

AWSでデプロイをしたことはあるものの、AWSの理解に足りない部分があるのが悔しいと思い、UdemyのAWS講座で勉強を開始しました。

以下の記事の続きです。

atora1992.hatenablog.com

学習内容を全て残すことは量が莫大になるので無理ですが、『重要かな?と思った部分を記録として残そう!』というのが趣旨です。

更新頻度は不定期ですが、地道に続けていこうかと思います。

応援よろしくお願いします。

データベース

データベースには大きく分けて2つあります。

  1. リレーショナルデータベース(RDB
  2. NoSQL(ビッグデータ向けDB)

RDB

データ間の関係性が定義されているDBです。

列と行からなるいくつかのテーブルで定義されています。このテーブル間のリレーションが設定されているおかげで、テーブル同士の関係性がわかるようになっています。

データの操作にはSQLを使用しており、例えば、会計データや顧客データといった構造化データに利用します。

NoSQL

リレーショナルデータ構造を持たない、かつ、SQLを利用しないDBの総称です。ただし、現在はSQLSQLに似た適用モデルもあります。

データとしては、構造化されていないキーバリュー形式のデータ・動画・画像・ドキュメントなどの非構造化データや、XMLJSONなどの半構造化データを対象としています。

構造がRDBに比べて軽いので、ビッグデータなど大量のデータを扱うのに向いています。

データベースの種類ピックアップ

RDBと分散OLTP以外はNoSQLです。

種類 説明
RDB 業務システム向けのDBの基本
DWH(データウェアハウス) 構造化データを利用した経営分析向けのDB。データ抽出・集約に特化(レスポンス重視)なので、更新・トランザクションは遅い。読み込むデータ構造をあらかじめ設計する必要がある。AWS: Redshift
分散型DB/データレイク ビッグデータやIoTデータを蓄積して高速処理を可能にするDBとストレージの組み合わせ。データ抽出に特化したDB。AWS: S3
KVS(キーバリュー型) シンプルなデータ構造で高速処置を可能にしたDB。結果整合性を採用しており、キーに応じてデータを分散処理する。大規模なWebサイトのユーザーセッションなどのバックエンドデータやIoTセンサーデータなどに使用する。AWS: ElastiCacheDynamoDB
ワイドカラム型 キーに対してカラムを大規模に登録できる。可能な限り多くのデータを同じ行に保持し、シンプルなオペレーションを高速処理できる。FacebookTwitterなどのソーシャルデータの位置情報データストレージ・リアルタイム分析・データマイニング処理に使用する。AWS: DynamoDB
ドキュメントDB キーに対してドキュメント指向でXMLなどのデータを格納できる。大規模Webのログ保管やオンラインゲームデータなどの半構造化データに使用する。AWS: DocumentDB
インメモリデータグリッド KVSの仕組みをメモリを利用して高性能にしたDB。大量データを多数のサーバーのメモリ上で分散して管理し、ミリ秒単位の高速応答が可能。金融の取引処理などに使用する。AWS: Redis ElastiCacheMemcached ElastiCache
全検索型エンジン×分散DB データの全検索エンジンであるElasticsearchと分散データベースとを連携してデータ全検索処理が可能。サイト内のデータ検索などに使用する。AWS: Elasticsearch Service
グラフDB グラフ構造でデータ間のつながりを検索・可視化するDB。マインドマップのようにデータ関連をグラフ表示する。AWS: Neptune
分散OLTP(RDB) 分散型はNoSQLだったが、分散型でもRDBを構築するDB。RDBの構造とNoSQLの分散処理を兼ね備える。大規模な業務データ処理に使用する。AWS: Aurora

DynamoDB

キーバリュー(ワイドカラム型)のDBです。

キーに対するバリューのCRUD操作、簡単なクエリやオーダー、数万人以上の同時アクセスへの処理ができます。

結果整合性を採用し、パーティショニング(データを複数に分割し、並列処理を可能に)による大量データの高速処理ができるが、細かいデータ処理には向きません。

ビッグデータのデータベースや大規模サービスでのデータ高速処理に使用できます。

DynamoDB Streamを用いれば、DynamoDBテーブルに保存された項目の追加・変更・削除発生時の履歴をキャプチャできます。これを用いれば、データ更新をトリガーにしたアプリケーション機能やレプリケーションに活用できます。

Aurora(Amazonオリジナル)

NoSQL型の分散高速処理とRDBとしてのデータ操作性を両立させた分散型のRDBです。RDSのデータベースソフトウェアの一つとして選択できます。

MySQLの2.5~5倍の性能+1/10の価格で提供されています。

高い並列処理機能によって大量の読み書きをするのに適したDBです。また、MySQL/PostgreSQLと互換性があり、同じ操作方法を利用可能です。

EFS(Elastic File System)

複数のEC2インスタンスからアクセス可能な共有ストレージです。(EBSでは複数インスタンスを持つことはできませんでした)

S3も共有可能ですが、S3はデータの長期保管用です。EFSはアプリケーションサービスを使っている間に即座に読み込み・書き込みをできます。

何千もの同時アクセスが実現可能です。

次の記事へ

atora1992.hatenablog.com