はじめに
前回のコラムでは、米Minio社のメンバーがオープンソースとして開発を進めるオブジェクトストレージ「Minio」を紹介しました。提供する機能を最小限に絞り込むことで、堅牢で高性能な分散ストレージを実現しようという実験的なプロジェクトです。今回は、Minioが実際に提供する機能とその内部構造についてお話しします。
最小限を徹底したMinioのAPI
Minioは、Amazon S3互換のAPIを提供しています。エンドユーザーが直接に操作するのではなく、アプリケーションのバックエンドとして利用することを想定したものになります。あえて、コマンドから直接に操作する際は、mcコマンドを利用します(*1)。次の実行例のように、バケットの作成(mb)、ファイルの保存(cp)、ファイルのリスト(ls)、ファイルの内容表示(cat)などが行えます。ローカルのファイルシステムと同じ感覚で利用できることを意識したコマンド体系になっています。
# mc mb (リンク »)
mc: Bucket created successfully : (リンク »)
# mc cp /etc/centos-release (リンク »)
➩ ...ntos-release: 38 B / 38 B [=======================================] 100.00 % 3.76 KB/s 0
# mc ls (リンク »)
[2015-07-16 17:09:18 JST] 38B centos-release
# mc cat (リンク »)
CentOS Linux release 7.1.1503 (Core)
そして驚くべきことに、MinioのAPIから行える操作は、これがほぼすべてです。バケットの作成とファイルの出し入れ以外には、何も機能がありません。前述のようにアプリケーションのバックエンドとして利用するものですので、不足する機能はアプリケーション側で補完する想定になっています。
とりわけ、「最小限の機能」への徹底的なこだわりを感じるのは、ファイルを削除するAPIが存在しないことです。Minioに保存したファイルの属性情報は、アプリケーション側でデータベースなどに保存しておき、属性情報に「削除フラグ」を立てることで、アプリケーション的には削除したことにするという使い方になります。同じく、保存したファイルを上書きで置き換える機能もありません。アプリケーションからは新しいファイル名でMinioに保存しておき、アプリケーション側の機能で、同じファイルが置き換えられたように見せる必要があります。
この続きは以下をご覧ください
(リンク »)
お問い合わせにつきましては発表元企業までお願いいたします。