1

100.000 行のテーブルがあり、すぐに 2 倍になります。データベースのサイズは現在 5 GB で、そのほとんどは特定の列 (PDF ファイルのテキスト列) に割り当てられます。数か月後には 20 ~ 30 GB または 50 GB のデータベースになると予想され、このシステムは頻繁に使用されます。

このセットアップに関していくつか質問があります

1-) ユーザー テーブルなどを含むすべてのテーブルで innodb を使用しています。PDF ファイルのテキスト バージョンを保存するこのテーブルで myisam を使用する方がよいでしょうか? (メモリ使用量/パフォーマンスの観点から)

2-) 検索には Sphinx を使用しますが、強調表示するにはデータを取得する必要があります。強調表示は sphinx API を介して行われますが、再度 Sphinx に送信するには 10 行を取得する必要があります。この 10 行には 50 MB のメモリが割り当てられる可能性があり、これは非常に大きいです。したがって、これらの PDF ファイルをデータベース内の 5 ページのチャンクに分割することを計画しているため、これらの 100.000 行は約 300 万から 400 万行になり、数か月後には 300.000 から 350.000 行ではなく、1000 万になります。これらの PDF ファイルのテキスト バージョンを格納する行。ただし、取得するページ数は少なくなるため、強調表示のために Sphinx に送信するために 400 ページを取得する代わりに、5 ページを取得することができ、パフォーマンスに大きな影響を与えます。現在、用語を検索して 100 ページを超える PDF ファイルを取得する場合、実行時間は 0.3 ~ 0.35 秒ですが、

これは良いトレードオフだと思いますか? 10 万行から 20 万行ではなく、数百万行になりますが、これによりメモリが節約され、パフォーマンスが向上します。この問題を解決するための良いアプローチはありますか?また、この問題を克服する方法について何かアイデアはありますか?

データのテキスト バージョンは、インデックス付けと強調表示にのみ使用されます。そのため、私たちは非常に柔軟です。

編集: PDF ファイルをクラウドに保存しますが、検索の強調表示のために、PDF ファイルのテキスト バージョンを取得して Sphinx に渡す必要があります。Sphinx は、強調表示された 256 文字のテキストを返します。pdf ファイルにインデックスを付けるには、それらをデータベースに挿入する必要があります。これは、説明タグやタイトルなどの追加のメタデータもあり、検索エンジン用にリンクする必要があるためです。ファイル サーバーから txt ファイルまたは pdf ファイルのインデックスを作成すると、データベースから他のデータを取得して、それらを検索エンジン上のそれらの txt ファイルにリンクすることはできません。そのため、引き続き PDF ファイルをクラウドに保存しますが、タグのタイトルと説明のインデックスを作成するには、テキスト バージョンもデータベースに格納する必要があります。これらは異なるテーブルですが、データベースにも存在する必要があります。

ありがとう、

4

3 に答える 3

0

Solrを使用すると、データベースからのメタデータを使用してテキストファイルにインデックスを付けることができます。検索エンジンをSolrに切り替えました。

于 2010-04-20T03:40:20.743 に答える
0

そのpdfファイルの行にヒットするたびに、pdfファイル全体を取得する必要はないようです。

PDFファイルに関するメタデータをファイル自体から分離していますか? ここにテーブルを 1 つだけ置くべきではありません。pdf_info100 列のテーブル(本当にそんなに多くのメタデータがあるのですか? なぜ 100 列なのですか?) のようなテーブルとpdf_files、ファイルの実際のテキストを含むテーブルへの外部キーが必要になる場合があります。info次に、テーブル innodb とfilesテーブル myisamを作成して実験することができます。

IMHO: PDF ファイルを mysql データベースに保存しない理由はたくさんあります。ファイルパスをSANまたはその他のファイル配布メカニズムに保存するだけです。sql は抽象的なデータを格納するのに適しています。ファイルは確かにそのカテゴリに属します。ただし、ファイル システムはファイルを保存するように特別に設計されており、Web サーバーはそれらのファイルをできるだけ早く配信するように特別に設計されています。だから...ちょっと考えてみてください。

于 2010-04-17T10:36:11.223 に答える
0

それは本当に悪い技術の選択のように思えます。成長を遅らせてすべてをメモリに保持できる場合 (128 GB 程度まで手頃な価格)、またはより大きなサイズにパーティション分割できる場合は、基本的にネットワーク転送が制限される可能性があります。

[編集] PDF が RAM ではなくディスク上にある場合、ディスクにアクセスする必要があります。SSD がない場合は、50 回/秒/ディスクで実行できます。pdf がディスク トラックよりも小さい限り、分割はあまり意味がありません。PDF を分割してからすべての部分にアクセスする必要がある場合、複数のトラックからロードする必要があり、速度が大幅に低下します。

マルチユーザー設定で RDBM を使用して大きなドキュメントを処理することは、パフォーマンスの観点からお勧めできません。

于 2010-04-17T10:36:57.837 に答える