質問

私は毎日約100万URLを追加/更新する必要があるプロジェクトに取り組んでいます。いくつかの日はほとんど更新で、いくつかの日はほとんど追加され、ある日は混ざり合っています。

したがって、すべてのクエリでは、URLテーブルでURLの一意性を調べる必要があります。

現在、インデックスがURL列に設定され、うまく機能するため、URLの検索方法は非常に速く作成できますが、今後数週間では、インデックスが同じ列に保持され、新しいレコードが数百万に追加される場合はRAMで十分ではありません。

だから私は解決策を探しているので、合計で1億5000万回以上のURLがある場合、その検索は速くなるはずです。私はMD5でインデックス作成を作成することを考えていますが、衝突の可能性について心配しています。友人がCRC32ハッシュを計算し、MD5と連結して衝突する可能性をゼロにしてバイナリに保存するために私を傾けて(20)、255の代わりに20バイトのみがインデックスとして取得されます。タイプ。

現在、合計約5,000万URLがあり、8GB RAMでは正常に機能しています。

昨日、私は質問しました URLテキスト圧縮(短縮ではない)とmysqlに保存 同じプロジェクトに関連しています。

編集CRC32ハッシュを小数点以下に配置する別の解決策を考えました。アプリケーションレベルで、返されるレコードの数を確認します。複数のレコードが返される場合、正確なURLも一致する必要があります。この方法では、20バイト(MD5+CRC32)ではなく、各行の4バイトを保存することにより、RAMとディスクスペースの低荷重を維持しながら、衝突も回避されます。あなたが言うこと?

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top