1

HASH非常に単純な質問: BigQuery の機能の背後に隠されている CityHash のバージョンはどれですか? それは常に最新 (現在は v1.1) ですか、それとも修正されたバージョンですか?

さて、背景を少し。大量のデータセットを保存するために、BigQuery に大きく依存する予定です。これらのデータから、初めて、ハッシュ値を計算して保存したいと思います(のようなものhashed_value = HASH(CONCAT(column_0, column_1)))。ここまでは順調ですね。2 回目は、 などのリクエストで特定のハッシュ値を持つ行を取得したいと考えていますSELECT something FROM [mytable] WHERE hashed_value = HASH(CONCAT('12345', 'foobar'))。ここでの私の懸念は、CityHash の Web ページで、これらの関数が下位互換性を持たないと指定されていることです。そのため、BigQuery が常に最新バージョンの CityHash に依存している場合、次回の CityHash の更新後に一部の計算列のハッシュ値に基づいてデータを取得できなくなります。そして、私のアプリケーションでは、大規模なデータベースは本質的に役に立たなくなります。

もしそうなら、それに加えて、固定された(または下位互換性のある)ハッシュ関数へのアクセスを与えることは可能でしょうHASHか? SHAたとえば、CityHashMDの固定バージョンなどです。

ありがとうございました。

4

1 に答える 1

2

BigQuery で使用されている CityHash は http://code.google.com/p/cityhash/のバージョン です。履歴を見ると、時間の経過とともに値が変化する可能性があるようです。これは良い質問かもしれません: https://groups.google.com/forum/?fromgroups#!forum/cityhash-discuss

BigQuery はコンシステント ハッシュをサポートする必要があります。sha1 はサポートされていますが、現在、エンコードの問題により結果が使用できません。ただし、次のことができます。SELECT TO_BASE64(SHA1(CONCAT('12345', 'foobar')))

SHA1近い将来、結果を自動的に base64 エンコードするように変更する可能性が高いことに注意してください。この変更を行うために内部バグを報告しました。

于 2012-12-14T19:18:27.633 に答える