一个非常简单的问题:哪个版本的CityHash隐藏在BigQuery的HASH
函数后面?它始终是最新的(今日v1.1),还是固定版本?
现在,一点点背景。我计划在很大程度上依赖BigQuery来存储大量数据。从这些数据开始,我想第一次计算一些哈希值并存储它(类似于hashed_value = HASH(CONCAT(column_0, column_1))
)。到现在为止还挺好。
在第二次,我想使用SELECT something FROM [mytable] WHERE hashed_value = HASH(CONCAT('12345', 'foobar'))
之类的请求检索具有给定哈希值的行。
我关注的是,在CityHash网页上指出这些功能不应该是向后兼容的。因此,如果BigQuery总是依赖于CityHash的最新版本,那么在下一次CityHash更新之后,我将无法根据某些计算列的哈希值来检索我的数据。对于我的应用程序,我的大型数据库将基本上变得无用。
如果是这样,除了HASH
之外,是否可以提供对固定(或向后兼容)哈希函数的访问?其中一个位于SHA
,MD
等等,例如,甚至是固定版本的CityHash。
谢谢。
答案 0 :(得分: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编码。我已经提交了一个内部错误来进行此更改。