私は数か月間、Twitter ストリーミング API に接続してアナグラムを探す Python スクリプトに取り組んできました。
ソースはgithubにあります。それは簡単です; 新しいツイートを受け取ったら、それをアルファベット文字に取り除き、その文字列をアルファベット順に並べ替えます。これはハッシュとして機能します。
(ディスク上の) データベースのチェックに時間がかかりすぎたため、現在、ハッシュは Python セットに格納されています。しかし:ハッシュキーで UNIQUE も使用していませんでした。
UNIQUE を使用すると、パフォーマンスはどの程度向上しますか? SELECT ステートメントを使用せずに包含をチェックする方法はありますか? 理想的には、ハッシュは PRIMARY KEY であるべきだと思います。包含チェックは現在、フェッチから分離されています。フェッチはバッチで定期的に実行され、パフォーマンスが向上します。
基本的に、大量のインクルージョン チェック (2,500 万行のデータベースで最大 50/秒) を実行し、定期的なバッチ フェッチを実行できるソリューションが必要ですが、それ以外はあまり必要ありません。たとえば、頻繁に削除する必要はありません。
これは、ディスク上の sqlite ストアに適していると思われますか? :memory: sqlite ストア? 別の DB ソリューションですか? ネイティブの python データ構造を使用しないと、この種のパフォーマンスを得ることができないのでしょうか? もしそうなら、私は現在の一般的な戦略に固執し、より効率的なハッシュシステムを考え出すことにエネルギーを費やします.