| 開発者 | 送信者 <tx0@strumentiresistenti.org> |
|---|---|
| 安定リリース | 0.6
|
| 書かれた | C |
| オペレーティング·システム | Linuxカーネル |
| 利用可能 | 英語 |
| タイプ | セマンティックファイルシステム |
| ライセンス | GNU GPL |
| Webサイト | http://www.tagsistant.net/ |
| 開発者 | 送信0 |
|---|
Tagsistant は、 Cで記述され、 FUSEをベースにしたLinux カーネル用のセマンティック ファイル システムです。ディレクトリの階層を使用してオブジェクトを検索する従来のファイル システムとは異なり、Tagsistant ではタグの概念が導入されています。
階層型ファイルシステムの設計と違い
コンピューティングにおいて、ファイル システムは、ファイルの保存、取得、更新に使用できるデータ ストアの一種です。各ファイルは、パスによって一意に特定できます。ユーザーは、ファイルにアクセスするために事前にパスを知っている必要があり、パスには必ずしもファイルの内容に関する情報が含まれているわけではありません。
Tagsistant は、タグに基づく補完的なアプローチを使用します。ユーザーはタグのセットを作成し、それらのタグをファイル、ディレクトリ、その他のオブジェクト (デバイス、パイプなど) に適用できます。その後、ユーザーはクエリと呼ばれるタグのサブセットに一致するすべてのオブジェクトを検索できます。この種のアプローチは、画像、オーディオ録音、動画、テキスト ドキュメントなどのユーザー コンテンツを管理するのに適していますが、間違ったコンテンツへのアクセスを防ぐために パスの一意性がセキュリティ要件となるシステム ファイル (ライブラリ、コマンド、構成など) とは互換性がありません。
tags/ディレクトリ
Tagsistant ファイル システムには、次の 4 つのメイン ディレクトリがあります。
- アーカイブ/
- 関係/
- 統計/
- タグ/
タグはディレクトリのサブディレクトリとして作成されtags/、次の構文に準拠するクエリで使用できます。
tags/subquery/[+/subquery/[+/subquery/]]/@/[1]
サブクエリはディレクトリとして連結されたタグの無制限のリストです。
tag1/tag2/tag3/.../tagN/
tags/とで区切られたパスの部分が@/実際のクエリです。+/演算子は、異なるサブクエリの結果を 1 つのリストに結合します。@/演算子はクエリを終了します。
次のクエリの結果として返されます:
tags/t1/t2/+/t1/t4/@/
オブジェクトは、 と の両方、または と の両方としてタグ付けされている必要がありますt1/。またはt2/としてタグ付けされているが、 としてタグ付けされていないオブジェクトは取得されません。
t1/t4/t2/t4/t1/
クエリ構文は、where が2 回出現するなど、パス トークンがそれ自体の子孫になることを許可することで、POSIXファイル システムのセマンティクスを意図的に違反しています。その結果、タグスタント ファイル システムの再帰スキャンは、 UNIXの場合と同様に、エラーで終了するか、無限ループします。
tags/t1/t2/+/t1/t4/@t1/ find
~/tagsistant_mountpoint$タグを 検索 /
タグ/
タグ/ドキュメント
タグ/ドキュメント/+
タグ/ドキュメント/+/ドキュメント
タグ/ドキュメント/+/ドキュメント/+
タグ/ドキュメント/+/ドキュメント/+/ドキュメント
タグ/ドキュメント/+/ドキュメント/+/ドキュメント/+
[ ... ]
この欠点は、クエリ内でタグを任意の順序でリストできる可能性によって相殺されます。 クエリはとtags/t1/t2/@/完全に同等でありtags/t2/t1/@/、 はtags/t1/+/t2/t3/@/と同等ですtags/t2/t3/+/t1/@/。
この@/要素の目的は、POSIX セマンティクスを復元することです。つまり、パスはtags/t1/@/directory/従来のディレクトリを参照し、このパスの再帰スキャンが適切に実行されます。
推論器と関係/ディレクトリ
Tagsistant には、関連タグが付けられたオブジェクトを含めることでクエリの結果を拡張するシンプルな推論機能relations/があります。 2 つのタグ間の関係は、次の 3 つのレベルのパターンに従ってディレクトリ内で確立できます。
relations/tag1/rel/tag2/
要素は、 includesまたはis_equivalentrelです。rock タグをmusicタグに含めるには、次のUNIX コマンドを使用できます。
mkdir
mkdir -p relations/music/includes/rock
推論エンジンは関係を再帰的に解決できるため、複雑な構造を作成できます。
mkdir -p relations/music/includes/rockmkdir -p relations/rock/includes/hard_rockmkdir -p relations/rock/includes/grungemkdir -p relations/rock/includes/heavy_metalmkdir -p relations/heavy_metal/includes/speed_metal
ディレクトリ内に作成された関係のウェブは、オントロジーrelations/の基本的な形式を構成します。
自動タグ付けプラグイン
Tagsistantは、ファイルまたはシンボリックリンクが書き込まれたときに呼び出される自動タグ付けプラグインスタックを備えています。 [2]各プラグインは、宣言されたMIMEタイプが一致する 場合に呼び出されます。
Tagsistant 0.6 でリリースされた動作するプラグインのリストは次のものに限定されます:
<title>text/html:および<keywords>要素の各単語と、document、webpage、htmlでファイルをタグ付けします。- image/jpeg: 各Exifタグでファイルをタグ付けする
リポジトリ
archive/各 Tagsistant ファイル システムには、オブジェクトが実際に保存されるディレクトリと、SQLitetags.sqlデータベースとしてタグ付け情報を保持するファイルを含む対応するリポジトリがあります。引数でMySQLデータベース エンジンが指定された場合、ファイルは空になります。別のファイルは、リポジトリ構成を含むGLib ini ストアです。 [3]--dbtags.sqlrepository.ini
Tagsistant 0.6 は、タグの推論とタグ付けの解決に関して、MySQL および Sqlite の SQL 方言と互換性があります。ロジックを他の SQL 方言に移植することは可能ですが、基本的な構造 (特に INTERSECT SQL キーワード) の違いを考慮する必要があります。
archive/ および stats/ ディレクトリ
ディレクトリarchive/は、タグを使用せずにオブジェクトに素早くアクセスできるようにするために導入されました。オブジェクトは、inode番号のプレフィックス付きでリストされます。[4]
ディレクトリstats/には、使用状況の統計情報を含む読み取り専用ファイルがいくつかあります。ファイルには、configurationコンパイル時の情報と現在のリポジトリ構成の両方が保持されます。
主な批判
タグやタグ付け情報を外部データベースに保存すると、データベースが破損した場合にメタデータが完全に失われる可能性があることが指摘されています。[5]
フラットな名前空間を使用するとディレクトリが過密になる傾向があることが指摘されていますtags/。[6]これはトリプルタグを導入することで軽減できます。
参照
参考文献
- ^ 「tags/ および relationships/ ディレクトリ」。
- ^ 「Tagsistant 用のプラグインを作成するには?」
- ^ 「キー値ファイルパーサー」。
- ^ "Tagsistant 0.6 の使い方 - Inodes".
- ^ 「拡張属性とタグファイルシステム」。
- ^ 「このアプローチの主な問題はスケーラビリティです」。news.ycombinator.com。
外部リンク
- 公式サイト
- Arch Linux パッケージ
- Hacker Newsでの議論
- 拡張属性とタグファイルシステム
- Tagsistant 制作中
