1

フォルダのグループを監視し、見つかったファイルにインデックスを付ける簡単なアプリケーションのアイデアがあります。GUIを使用すると、新しいファイルにすばやくタグを付けて、ストレージ用の単一のデータベースに移動できます。また、タグ、名前、ファイルタイプ、および日付でデータベースをクエリするための簡単なメカニズムも提供されます。現時点では、いくつかのリムーバブルハードドライブに約100 GB以上のファイルがありますが、データベースは少なくともその大きさになります。可能であれば、埋め込まれたバイナリおよびテキストドキュメントの全文検索をサポートしたいと思います。これはシングルユーザーアプリケーションになります。

DB戦争を始めようとはしていませんが、どのオープンソースDBが私にとって最も効果的でしょうか?SQLLiteはテーブルから外れていると確信していますが、間違っている可能性があります。

4

6 に答える 6

2

なぜファイルをデータベースに保存するのですか?メタデータとファイル名を保存するだけです。何らかの理由でそれらを新しい場所にコピーする必要がある場合は、ファイルシステムのコピーとしてそれを実行してください。

ファイルの内容を削除すると、コンピテントデータベースは数十万のファイルのメタデータを処理できるようになります。

于 2008-09-04T18:19:40.747 に答える
2

私自身のプロジェクトの 1 つでこのオプションをまだ調査中ですが、CouchDBは一見の価値があるかもしれません。

于 2008-09-04T18:38:41.107 に答える
1

私の好みは、ドキュメントをメタデータとともに保存することです。1 つの理由は、関係の整合性です。アクションがデータベースによって仲介されない限り、ファイルを簡単に移動したり、ファイルを変更したりすることはできません。私はこれらの問題を処理できると確信していますが、私が望むほどクリーンではありません。私の経験では、最近のほとんどのベンダーはデータベース内の大量のバイナリ データを処理できます。PostgreSQL や MySQL がこれらの分野で明らかな利点を持っているかどうか疑問に思っていたと思います。私は主に Oracle に精通しています。とにかく、お返事ありがとうございます。DB が外部ファイルの場所を知っていれば、必要に応じて後日ファイルを簡単に取り込むこともできます。質問のもう 1 つの側面は、Python を使用する場合にどちらのデータベースを使用する方が簡単かということでした。それが水洗いだと思います。

于 2008-09-04T18:42:19.163 に答える
0

私はいつも「しないでください」と答えるのは嫌いですが、Lucene(PyLucene)のようなものでインデックスを作成する方がよいでしょう。それと、ファイルの内容ではなくデータベースにパスを保存することをお勧めします。

さらに、これらのデータベースエンジンはいずれもLOBを個別のデータスペースに格納しないため(テーブルのデータスペースに埋め込まれます)、これらのエンジンもほぼ同等に機能する必要があります(sqlliteを除く)。この種のバイナリオブジェクトを処理するには、Informix、DB2、SQLServerなどに移行する必要があります。

于 2008-09-04T18:17:19.613 に答える
0

ファイルの実際の内容にインデックスを付けたくないので、それらのほとんどは機能します (SQLLite は同時マルチユーザー環境で使用することを意図していませんでしたが、これは問題になる可能性があります...)。

唯一の制限要因は、特定の DB の最大「パケット」サイズです (パケットごとに、クエリ/応答を参照しています)。通常、これらの制限は約 2MB です。つまり、ファイルは 2MB 未満でなければなりません。もちろん、この制限を増やすこともできますが、たとえばファイルを挿入するには、次のようにする必要があるため、プロセス全体がかなり非効率的です。

  • ファイル全体をメモリに読み込む
  • クエリでファイルを変換します (これは通常、16 進エンコードを意味するため、最初からサイズが 2 倍になります)
  • 生成されたクエリを実行する (データベースにとっては、それを解析する必要があることを意味します)

単純な DB を使用し、関連付けられたファイルを見つけやすい命名規則 (たとえば、主キーに基づく) を使用して保存します。もちろん、この設計は「純粋」ではありませんが、パフォーマンスが大幅に向上し、使いやすくなります。

于 2008-09-04T18:21:56.760 に答える
-1

ファイルシステムが処理できるはずのものをエミュレートするのに時間を浪費するのはなぜですか? より多くのストレージ + grep が答えです。

于 2008-09-04T18:39:19.280 に答える