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 ファイルをクラウドに保存しますが、タグのタイトルと説明のインデックスを作成するには、テキスト バージョンもデータベースに格納する必要があります。これらは異なるテーブルですが、データベースにも存在する必要があります。
ありがとう、