1) ハッシュの衝突を非常に少なくするために、sha1 自体を処理するのではなく、sha1 の 128 ビットの半分だけを使用して回避できますか? これが暗号化ハッシュには適していないことは理解していますが、必要なのはハッシュ テーブル キーのハッシュだけです。
2)計算時間は優先事項ではなく、それに加えて、非常に小さなデータをハッシュしています。特に、私は主に 2 つまたは 3 つの 64 ビット ハッシュを取得し、それらをハッシュして別の 64 ビット ハッシュを取得します。この目的で sha1 よりも優れたオプションはありますか? 繰り返しますが、衝突はほとんど起こらないはずです。
3) 私は SQL 初心者です。SQL の ID として 64 ビット ハッシュを使用するのは良い考えですか? 64 ビット ID は sqlite または postgres でパフォーマンスの問題を引き起こしますか? 複数のデータベース (Lucene インデックスを含む) にまたがるデータを調整する必要があるので、自動インクリメントされた ID を気にするのではなく、テーブルでハッシュを直接処理する必要があると考えました (これは 1 つのデータベースでのみ意味があり、すべてのデータ ストア間)。私は 64 ビットが良い妥協点だと考えています。起こりそうにない衝突には十分な大きさですが、スペース (およびルックアップ時間?) を節約できます。
4) CRC-64 はどうですか? それは十分にランダムな分布を生成しますか?