database - 使用 SHA1 key 避免 BigTable 或 HBase 中的热点

标签 database encryption google-cloud-platform hbase bigtable

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

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

显然,我想避免在读取或写入时执行额外的步骤,因此我考虑在将用户名作为 key 添加到 BigTable 之前使用 SHA1 对其进行加密。因此,BigTable 中的所有键现在都将采用如下格式:

cf23df2207d99a74fbe169e3eba035e633b65d94_2018_01_30_15090001

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

最佳答案

假设 User Id 分布良好(即没有一个用户每秒的操作超过 10K),这种方法应该没问题。

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

关于database - 使用 SHA1 key 避免 BigTable 或 HBase 中的热点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48529938/

相关文章:

java - PHP 如何处理三元组加密的 32 字节 key

firebase - 使用 Cloud run 而不是 Cloud Functions 会受益吗?它在 GCP 中的什么位置?

Php数据库-内容加密/解密

mysql - 如何构建我的用户数据库?

mysql - 如何将 MYSQL 数据库转换为 Oracle 数据库

linux - 如何在Google Cloud Platform实例的&HOME目录下安装应用程序?

mysql - 导入数据库时​​"Incorrect arguments to EXECUTE"

sql-server - SQL Server 2005 复制

sql - 在表达式上使用 LIKE 从表中选择加密项目

ssl - -keyalg RSA 和 CipherSuite RSA 之间的区别