はじめに
あくまでも個人の備忘録になります。
勉強したことを思い出しやすいようにまとめています。
色々な方が非常にわかりやすく記載されているので、そちらを見るが吉。
AWSでのストレージサービス
AWSでのストレージサービスはざっくりと以下。
項目 | 内容 | アクセスタイプ |
---|---|---|
S3 | リージョンに設置するオブジェクトストレージ。 大容量のデータを安価に保存 | HTTP |
EBS | AZに設置するブロックストレージ。 EC2インスタンスのディスク領域で利用する。 | ブロックアクセス |
EFS | 複数のEC2等で共有可能なファイルストレージ | ファイルアクセス(NFS) |
上記以外にもファイルストレージとしては以下がある。
項目 | 内容 | アクセスタイプ |
---|---|---|
Amazon FSx For Windows File Server | Windows File Serverと互換性あり。 ADサーバやWindowsのソフトウェアとの連携が可能 | ファイルアクセス (SMB) |
Amazon FSx For Lustre | Lustreのアーキテクトを使ったAWSのFSサービス。 Lustreはスパコンとかの世界で利用される分散ファイルシステム。 | ファイルアクセス |
EFSの特徴
特徴
- フルマネージド型のサービス
- NFSv4を利用してアクセスが可能
- 容量に関してはスケーラブル
- 性能に関してもスループット/IOPS性能は自動的にスケーリング
- 課金については従量課金
基本性能
- 基本容量は100MB
- ファイルあたりの最大容量は48TB
データウェアハウス
構造化データ向けのデータベース。
構造化データ向けであるため、事前にため込むデータ構造(スキーマ)を設計する必要がある。
収集したデータを格納するにあたり、ETLでデータを変換してから保管する。
ETLはデータウェアハウスにおける、Extract(抽出)/Transform(変換)/Load(保管)のことを指す。
データレイク
非構造化データ向けのデータベース。
動画、音声、テキストといったように構造化データである必要はない。
非構造化データ向けなので、事前にスキーマの設計等も不要となる。
Kinesis
Kinesisは以下のコンポーネントで構成される。
項目 | 内容 |
---|---|
Amazon Kinesis Data Streams | ストリームデータを処理する。 LamdaやEC2にデータを送り、処理する。 |
Amazon Kinesis Data Firehose | ストリームデータを配信する。 S3やRedshiftにデータを送り、データを処理する。 |
Amazon Kinesis Data Analytics | ストリームデータを可視化・分析する。 |
Redshift
Amazon RedshiftはAWSのデータベースサービス。
列指向型のリレーショナルデータベースであることが特徴。
リレーショナルデータベースであるので、SQLが利用可能であり、PostgreSQL互換となる。
リレーショナルデータベースではあるが、利用用途としては以下がある。
- 構造化データをETLで処理をして、保存する。
- Redshift Spectrumを利用して、データレイク(S3)から非構造化データを取り込む
取り込むといっても、データの実態はS3上にあり、Redshift上にはデータファイルを参照するだけの外部テーブルが生成される様子?
インスタンスタイプ
項目 | 概要 |
RA3インスタンス | 高性能、高コスト |
DC2インスタンス | 低コスト |
Redshiftの構成
項目 | 内容 |
---|---|
リーダーノード | クエリのエンドポイント |
コンピュートノード | クエリを実際に処理するノード |
列指向データモデル
仮に、列2のデータを読み込みたい場合、、、
行指向の場合、5*5の25個のデータをメモリ上に読み込む必要があある。
列指向の場合、列2のみを読み込むため、メモリ上には5個分のデータで済む。
列1 | 列2 | 列3 | 列4 | 列5 |
---|---|---|---|---|
1 | ||||
2 | ||||
3 | ||||
4 | ||||
5 |
上記の特徴から、読み込み速度も早ければ、メモリ上に展開するデータ量も少なく済む。
列指向データベースではストレージ上に保存する際のデータの持ち方も大きく違う。
列に格納されるデータは似通ったデータが多く、圧縮等も非常に強力に働く。
また、列指向のデータベースは数多く存在し、実装方式はそれぞれ異なる。
列指向の弱点としては、1件のデータを追加する際に、列1、列2、列3、列4、列5に処理が走る。
行指向の場合は、横方向の塊が1データとなるので、1件のデータ追加は1処理で済む。
参考サイト
Redshiftについて

lustreについて


データウェアハウスとデータレイク


Kinesis

列指向(わかりやすすぎて感動した)

コメント