使用SHA1密钥避免BigTable或HBase中的热点

时间:2018-01-30 20:25:27

标签: database encryption google-cloud-platform hbase bigtable

我正在使用Google BigTable根据以下限制条件存储事件日志数据:

  • 每个密钥都应包含用户名和时间戳,允许基于每个用户对时间序列数据进行连续读取,如下所示:USERNAME_TIMESTAMP。
  • 我每天最多可存储10,000,000个事件日志,因此我自然需要避免热点,并确保我在每个节点上均匀分配记录。
  • 这个数据库有一个庞大的安全组件,因此,我想在将用户名用作BigTable中的密钥之前对其进行加密。

显然,我想在读或写时避免做额外的步骤,所以我想在使用SHA1加密用户名之前将它们作为BigTable中的键添加。因此,BigTable中的所有键现在都将格式化为:

cf23df2207d99a74fbe169e3eba035e633b65d94_2018_01_30_15090001

我们知道SHA1是正态分布式的,因此可以安全地假设我的所有记录将在节点间均匀分布,同时确保所有用户名都在一起?这实际上会阻止热点吗?我错过了这种方法的边缘情况吗?

1 个答案:

答案 0 :(得分:1)

假设用户ID分布均匀(即没有用户每秒的操作次数超过10K),这种方法应该没问题。

仅供参考,Cloud Bigtable以每秒行数衡量操作,您希望在确定节点数时考虑峰值吞吐量。每个节点每秒可支持10,000次简单读取或写入。我们最小的生产配置是3个节点,每秒最多可支持30,000行(如果最多连续使用,则每天26亿行)。