1

ホスト サーバー、フラット ファイル、またはデータベース (mysql) でより高速な結果を返したり、負担が少ない構造はどれですか?

多くのユーザー (100 ユーザー) が同時にファイル/データベースにクエリを実行しているとします。検索には、静的ファイル/データベースに対するパターン マッチングが含まれます。ファイルには 50,000 行の一意の行があります (同じデータ型)。多くの試合があるかもしれません。ファイル/データベースへの書き込みはなく、読み取るだけです。

メインファイルが使用されている場合、ファイル/データベースを複製し、論理スイッチを作成してバックアップファイル/データベースを使用することは可能ですか?

構造のタイプに最適な言語はどれですか? フラットには Perl、db には PHP を使用しますか?

追加情報:

すべての都市を検索したい場合、名前に「cis」というパターンがあります。正規表現または文字列関数を使用して、どちらが優れている/高速ですか?

おすすめの攻略法を教えてください

ティア

4

2 に答える 2

2

私は単純なソリューションの大ファンなので、単純なタスクの場合はフラット ファイル ストレージを好みます。インデックス作成機能を備えたリレーショナル DB は、任意の正規表現パターンではまったく役に立たず、ファイルシステムのキャッシュにより、とにかくこのかなり小さなファイルがメモリ内にあることが保証されます。私はフラットファイル + perl ルートに行きます。

Edit: (taking your new information into account)本当に 1 つの既知の属性で部分文字列を見つけるだけの場合は、フルテキスト インデックス (DB が提供する) を使用すると、(適用されるインデックスの種類によっては) 少しは役に立ち、目的に合った簡単で合理的に高速なソリューションが提供される可能性があります。要件。もちろん、ファイル システムに自分でインデックスを実装することもできます。たとえば、Suffix Treeのバリエーションを使用することもできます。

それでも、私はフラット ファイル ルートを使用します (そして、それが目的に合っている場合は、 を参照してくださいawk)。なぜなら、実装を開始していれば、既に完了しているからです ;) さらに、あなたが話しているユーザーの数はシステムに違いを感じさせることはありません (とにかく、ほとんどの場合、CPU は退屈します)。

不安な方は是非お試しください!その正規表現 + perl ソリューションを実装します。perl を知っていれば数分かかり、100 回ループして で測定しtimeます。十分に速い場合はそれを使用し、そうでない場合は別の解決策を検討してください。50,000 の一意の行は、最新のコンピューティングの観点からは非常に少ない数であることに留意する必要があります。(これと比較してください:部分文字列クエリの Mysql テーブル インデックス作成の最適化)

HTH、
アレキサンダー

于 2010-05-22T09:07:35.440 に答える
0

クエリとデータがLuceneSphinxなどの全文検索エンジンのように見えるかどうかによっては、良いアイデアになる可能性があります。

于 2010-05-22T19:11:27.850 に答える