Hbase 具有集合字段的记录的Bigtable行键设计

Hbase 具有集合字段的记录的Bigtable行键设计,hbase,google-cloud-bigtable,Hbase,Google Cloud Bigtable,我需要提高从Bigtable获取数据的服务的性能,并且考虑到所涉及的访问模式和数据,我认为行键设计主要是问题所在。我还需要另一种服务的性能,这种服务将数据推入以保持一致性(或改进) 这里有一个例子(请耐心听我说)。我每天收到成批发送的数百万条记录。假设它的全球宠物主人信息每天更新,每个记录都有以下格式: 名字 姓氏 地址 家庭式 宠物 例如: 彼得 谢尔曼 悉尼沃勒比路42号 公寓 [猫、狗、鱼、鸟、袋鼠] 目前,指向服务的查询类型有(按频率/重要性顺序): 在第32天,给我所有养鸟但不

我需要提高从Bigtable获取数据的服务的性能,并且考虑到所涉及的访问模式和数据,我认为行键设计主要是问题所在。我还需要另一种服务的性能,这种服务将数据推入以保持一致性(或改进)

这里有一个例子(请耐心听我说)。我每天收到成批发送的数百万条记录。假设它的全球宠物主人信息每天更新,每个记录都有以下格式:

  • 名字
  • 姓氏
  • 地址
  • 家庭式
  • 宠物
例如:

  • 彼得
  • 谢尔曼
  • 悉尼沃勒比路42号
  • 公寓
  • [猫、狗、鱼、鸟、袋鼠]
目前,指向服务的查询类型有(按频率/重要性顺序):

  • 在第32天,给我所有养鸟但不养鱼或猫的人的宠物主人信息。这是典型的格式-即,告诉我拥有这只宠物的人,但不要告诉其他宠物的X数。我们经常想把许多宠物排除在外。这个世界上的人也可以养很多宠物,有时甚至可以养几十只
  • 告诉我在第3天、第4天、第5天,我提供给你的1000人中,哪一个是或不是宠物主人
  • 从第7天到第20天,给我所有“新”宠物主人的宠物主人信息。如果第7天有2个,第20天有1个原来的2加1个新的,只要给我1的信息
  • 当前行键/列的格式如下(列包括所有其他信息):

    • DayX宠物名LastName(答案1)
    • DayX名字LastName(答案2/3)
    需要注意的是:这一天总是很重要的。疑问总是围绕着一天。批次只包含一天的数据,而不是很多数据(假设一次可以到达多个批次)。此外,不必担心边缘案例——在这个世界上,没有人驯养过一种叫“史蒂夫”的动物,也没有人给他们的孩子起名叫“乌鸦”

    今天,对于第一个查询,在测试我们正在查看的行是否包含要排除的宠物的条目时,我们包括一个列值过滤器(它是一个regex过滤器)——该集合只是一个字符串。我想这就是我们被搞砸的地方,因为宠物被排除在外的名单有时很长。我已经试着忘记了值过滤器,只是自己在内存中进行过滤(这是很危险的…偶发的内存问题),这样可以缩短请求的周转时间,但我希望我能做得更好

    限制条件:

    • 此时无法更改数据存储(接受更好的建议)
    • 将数据推送到Bigtable的服务在理想情况下应该在大致相同的时间(或更短的时间)内推送大致相同的数据量(或更少)。在更长的时间内,推动更多,而不是按数量级推进是可以的

    我无法想象。

    您的问题非常笼统,在Bigtable中有很多可能导致性能问题的因素,您可以在此处查阅:

    请在此处检查BigTable的预期性能:

    您可以参考以下链接测试服务功能:

    常见问题的诊断和排除:

    总之,这将有助于您了解BigTable的性能含义

    也可以考虑通过以下方式重新设计你的模式: