1

一个非常简单的问题:BigQuery 的功能背后隐藏了哪个版本的 CityHash 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?上的一个SHAMD等等,甚至是 CityHash 的固定版本。

谢谢你。

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 回答