2012-01-24 1 views
0

Marshal.dump/Marshal.loadに安全に渡すことができる形式で全文索引を構築する方法を見つけるために、私は索引を取ることができますそれをディスクに保存する前に暗号化します。Ruby用シリアル化可能メモリ内全文索引ツール

この機能が必要な理由:私は、ユーザーのコンテンツを自分のキーで暗号化する必要があり、フルテキスト検索にインデックスを付ける必要があるシステムを設計しています。私は、システムの各ユーザーが、それらのコンテンツのインデックス全体をメモリに整列して読み込まなければならない場合には、かなりのオーバーヘッドとメモリ使用量があることを認識しています。このプロジェクトにとって、セキュリティは効率よりもはるかに重要です。

フルテキストインデックスは、暗号化されていない状態でユーザーのコンテンツに関する詳細を非常に多く保持し、各ユーザーのインデックスをそのユーザーのユニークキーを使用して暗号化する必要があるため、必要なセキュリティのレベルを維持する。

ユーザコンテンツは暗号化され、従来のRDBMSに格納される可能性があります。私の考えでは、シリアル化されたインデックスのロード/アンロードは、それに属するすべてのDB行を復号化し、すべての検索をフルスキャンするよりも、大量のコンテンツを持つユーザーのオーバーヘッドが少なくなります。

私の試験ではferretを使用して、メモリ内インデックスを作成することに成功しました。ただし、Mutexを使用したため、インデックスにはMarshal.dumpが失敗しました。私はまたxapiansolrを評価していますが、そこにも障害物に当たっているようです。

私がこれ以上進める前に、このアプローチがまったく問題ないのか、そうでない場合にはどのような代替案を検討したいのかを知りたいと思います。また、この方法で全文索引をシリアライズした人、使用したツール、提供できるポインタについて誰もが成功したかどうかを知りたい。

答えて

1

標準のフルテキスト検索エンジンを使用して、TrueCryptのような別の暗号化ディスクイメージに各クライアントのインデックスを保存してみませんか?各クライアントのディスクイメージには一意のキーがあり、RAMの使用量は少なく、実装に要する時間は短くて済みます。

+0

これは興味深いアプローチです。私はTrueCryptを見て、より良い回答がなければ私はあなたのことを受け入れ、その道を行くでしょう。ありがとう。 –

+0

アプリはUbuntuでホストされ、 'encfs'はTrueCryptよりもセットアップが簡単なので、代わりに' encfs'を使うことに決めました。しかし、同じアイデア。あなたの答えは間違いなく正しい道に私を置いた。 –

関連する問題