AWSでシステムを構築する際、EBS、S3などがよく出てきます。これらの違いを調べると、EBSはブロックストレージであり、S3はオブジェクトストレージであると出てきます。この意味を解説し、それぞれの特徴を解説します。
ブロックストレージとは何か
まずブロックストレージについてです。AmazonのEBS(Elastic Block Storage)も、その名の通りブロックストレージです。
ブロックストレージはデータを小さな固定サイズのブロックに分割して保存します。各ブロックには一意のアドレスが割り当てられており、システムは特定のブロックに直接アクセスしてデータを読み書きします。
この時、各ブロックには「アドレス」が付いているので、特定のデータを読み書きする際に、システムは必要なブロックにすぐにアクセスできます。これは喩えるならば、図書館で、まずある本を探すのではなく、直接ある本の特定のページを探すようなものです。余計な情報を読まずに、目標に直接たどり着けるため、アクセスが高速です。
ここからわかる通り、ブロックストレージの特徴は、その高速性であり、頻繁にデータの読み書きが発生する場合に適しています。
なお、我々が日常使っているパソコンのHDDやSSDも、ブロックストレージの一種です。
オブジェクトストレージとは何か
オブジェクトストレージは、1つのデータ(ファイルなど)を1つの「オブジェクト」として保存します。それぞれのオブジェクトには固有のIDとメタデータ(作成日時やアクセス権限などファイルに関する情報)が付いています。各オブジェクトにメタデータが含まれているため、オブジェクトを簡単に追跡・管理できます。このメタデータがあることで、どこに保存されているかを気にせず、システムがオブジェクトを容易に管理できるようになります。
どこに保存されているかを気にしなくても良いことによるメリットを考えてみます。オブジェクトストレージは、データを1か所にまとめて保存するのではなく、複数のサーバーやデータセンターに分散して保存します。これは、同じデータのコピーを複数の場所に置くことができるということです。
分散して保存することのメリットは、耐久性と可用性です。それぞれ、以下のような意味になります。
- 耐久性が高い: もし1つのサーバーやデータセンターが故障しても、他の場所にあるデータのコピーが使えるため、データが失われるリスクが非常に低い。
- 可用性が高い: 複数の場所にデータがあるため、どこか1つにアクセスできなくなっても、他の場所からデータを取り出せる。
また、データを分散して保存することは、間接的にデータ容量を柔軟に変更できるという利点にもつながります。この点を理解するために、ブロックストレージと比較してみます。ブロックストレージの場合は、ストレージは”ブロック”として扱われ、通常は特定のサーバーやシステムに接続されています。AWSの用語を用いた例になりますが、特定のEC2のインスタンスに接続されたEBSといったイメージです。この場合、サーバー(EC2)に割り当てるブロックストレージ(EBS)を増やす場合、新しいストレージを手動で追加して、システムに再設定する必要があります。作業としてはもちろん実行可能ですが、手間がかかります。
Amazon S3に代表されるオブジェクトストレージの場合は、ストレージ追加は非常に簡単です。オブジェクトはIDやメタデータで管理されていて、特定のサーバーに割り当てられていませんので、ストレージが不足したとなれば、新しくストレージを追加し、そこに新しいデータをどんどん保存していけるのです。
以上からわかる通り、オブジェクトストレージの特徴は複製や容量の管理が簡単なことであり、大規模なファイルや大量のデータを保存するケースに適しています。
iCloud, GoogleDrive, Sharepointなどのクラウドストレージサービスは、オブジェクトストレージです。
どちらを使うべきか?
では、更に理解を深めるために、ブロックストレージとオブジェクトストレージ、それぞれどのようなケースで使うべきなのかを考えてみましょう。
ブロックストレージを使うべきケース
トランザクションが多いデータベース、リアルタイムデータ処理には、高速なデータアクセスが可能なブロックストレージが適しています。
オブジェクトストレージを使うべきケース
オブジェクトストレージは、大容量のデータを保存し、アクセス頻度がそれほど高くない場面に適しています。例えば、バックアップデータ、メディアファイル(写真や動画)、ログファイルなどのアーカイブに向いています。データの規模が大きく、スケーラブルな容量管理が求められる場合におすすめです。
データベースであっても、日々の大量のログデータなどを保存しておきたい、かつ頻繁にデータ活用するわけではない、といった場合にはオブジェクトストレージが適しています。
コメント