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