TOAST Object Storageの紹介

TOAST Object Storageは、様々なサービスのバックエンドストレージとして使用されています。Dooray、TOAST File、TOAST Imageなどの非構造化データを保存する多くのサービスの根幹であると言えるでしょう。
ところで、一般的に使用されているブロックストレージの代わりに、なぜオブジェクトストレージを使うのでしょうか?
今回は、オブジェクトストレージと、従来のストレージ(レガシーストレージ、ファイルシステムとブロックストレージ)の違いについて、紹介したいと思います。

1.オブジェクトストレージとは何か?

最近のデータは、イメージ、映像、SNSのように、複雑で容量が大きいだけでなく、構造化されていない非構造化データが多くを占めています。非構造化データは従来のファイルシステムとブロックストレージでは管理が難しく、構造化されていないため、クイック検索や分析が容易ではありません。ユーザーがデータを階層化されたディレクトリに分類し、構造化されたファイル名またはファイルの種類により、定められたタグを付与して管理する必要があります。しかし、それぞれのデータを分類するルールが異なるため、オブジェクトの数が多くなって分類ステップが増えてくると、容易にアクセスできなくなります。

オブジェクトストレージは、急激に増加している非構造化データを安全に保存して簡単に管理するために、レガシーストレージとは異なるアプローチを提供しています。データをデータ本体と、自動生成されたメタデータ、固有の識別子(ID)で構成されたオブジェクトで管理します。

オブジェクトストレージは、TOAST File、Doorayドライブ、Dropbox、Googleドライブなどのクラウドストレージサービス、Facebook、Instagramのような写真を保存するSNSサービス、Spotifyのような音楽を保存するストリーミングサービスなど、非構造化データを多く使用するサービスのバックエンドストレージとして使用されています。

2.従来のストレージと何が違うのか?

オブジェクトストレージとレガシーストレージは、どのような点が違うのでしょうか?前述のとおり、オブジェクトストレージは、保存からアクセス、管理まで、レガシーストレージとは全く別の方法を提供しています。

保存方法

この違いを説明するときに最も利用される例えが駐車です。一般的に、ドライバーは駐車場の空きスペースを確認して駐車します。車両を使用するには駐車した場所に行く必要があるので、駐車した場所を必ず覚えていなければなりません。しかし、代理駐車の場合は、ドライバーが駐車担当者にキーを渡して領収書を受け取ると、車両はどこかに駐車されます。回収する時も、領収書さえ提示すれば、駐車担当者がドライバーに車両を渡してくれます。

駐車場をデータ保存に置き換えてみましょう。レガシーストアからデータを保存するとき、どこに保存するかが重要です。ファイルマネージャを利用して階層化されたディレクトリを設定し、目的のディレクトリにファイルを保存したり、オペレーティングシステムが提供するPOSIX APIを利用して、使用可能なアドレスを受け取りデータを保存します。保存されたデータにアクセスするには、データの正確な位置を把握する必要があります。ドライバーが駐車する方式と似ていますね。
しかし、オブジェクトストレージは、ユーザーが保存してほしいと要請したデータをオブジェクトで構成し、リポジトリ内のどこかに保存します。ユーザーはその位置を把握する必要がなく、後で使用するデータのIDを提示し、持ってきてほしいと要請するだけでよいのです。これは代理駐車と同じフローですね。

安定性

レガシーストレージは、ユーザーが直接異なる物理ストレージにバックアップしたり、RAIDまたはバックアップシステムのサポートが必要でした。
しかし、オブジェクトストレージは、ユーザーが特に考慮すべき内容はありません。オブジェクトストレージは、データを保存するときに、物理的位置が異なるストアに複数コピーでミラーリング(Replication)したり、パリティを生成していくつかの部分に分けて保存(Erasure Coding)します。RAID-1、RAID-6と同様の安定性対策を保有しており、そのためストレージデバイスの物理的な障害が発生しても、データの整合性を維持することができます。

拡張性

レガシーストレージは容量が不足すると、物理的にディスクを追加し、新しいパスとしてマウントして使用します。新しいマウントパスを使用するため、データを保存する場所が変更されます。保存場所を変更したくない場合は、既存のディスクより容量が大きいディスクを追加して、新しいディスクにデータを移す過程が必要です。物理インターフェースとマウントポイントの制限、ディスクのサイズに応じて追加できる容量に限界があります。

しかし、オブジェクトストレージは、データの位置が重要ではないので、このような複雑なプロセスは必要ありません。新しいストレージノードを追加し、プール(Pool)に登録するだけで、全体の使用容量が増えます。

メタデータ

ファイルシステムでは、ファイルタイプに応じて定められたメタデータがあります。MP3 ID3やJPEG Tagが代表的なメタデータです。ただし、ユーザーが任意にメタデータを追加することはできません。メタデータが提供されていないファイルタイプは、メタデータを用いた分類と検索ができないという意味です。
これに対し、オブジェクトストレージは、ユーザー定義のメタデータを無制限に追加できます。追加されたユーザー定義のメタデータは、ハッシュタグのようにデータを1つのトピックにまとめ、テーマに基づいて分類するなど非構造化データをより効率的に管理できるように支援します。

  Legacy Storage Object Storage
適合性 構造化データに適している
(DB、ビジネスアプリケーションデータなど)
非定型の大容量データに適している
(クラウドストレージ、マルチメディアデータストアなど)
保存方法 POSIX APIを使って保存、保存した場所を覚えてアクセス
相対的に応答速度が速い
REST APIを使って保存、アクセス要求
HTTP(s)に基づいてアクセスするため、比較的応答速度が遅い
安定性 ユーザーが直接データをバックアップしたり、バックアップシステムを利用 自動でRAID-1、6レベルのデータ整合性を提供
拡張性 ディスクを追加して新しいパスで使用するか、既存のディスクを交換 パスを変更せず、ほぼ無制限に拡張可能
メタデータ ファイルの種類によって定義されたメタデータのみ使用 ユーザー定義に基づいて制限なく使用

3.おわりに

オブジェクトストレージは、次のように要約できるでしょう。

データに固有の識別子とメタデータを付与して安全に保存し、簡単にデータにアクセスして使用できる拡張しやすいストレージ

レガシーストレージとオブジェクトストレージの違いを整理すると、圧倒的にオブジェクトストレージが良いように見えますね。しかし、圧倒的に良いシステムというものはありません。オブジェクトストレージは大容量のデータを保存することに焦点が当てられているので、小さなデータをたくさん保存する場合は良い選択とは言えません。このように、データの種類、規模に応じて構築費用と維持費用は千差万別であり、様々な条件を考慮して自分のサービスに適したストレージを選択することが合理的であるでしょう。

TOAST Meetup 編集部

TOASTの技術ナレッジやお得なイベント情報を発信していきます
pagetop