我将产品的价格和库存(时间序列)存储在我的数据库中。我的 rowkey 具有以下结构:
产品时间戳
与家庭库存,价格等。
是否可以扫描超过 1 个产品 ID?
例如:给我来自 product-id 4711、4744、8485、8585 的所有数据......而不需要超过一个电话。
问候凯文
我将产品的价格和库存(时间序列)存储在我的数据库中。我的 rowkey 具有以下结构:
产品时间戳
与家庭库存,价格等。
是否可以扫描超过 1 个产品 ID?
例如:给我来自 product-id 4711、4744、8485、8585 的所有数据......而不需要超过一个电话。
问候凯文
如果您有足够新的 HBase 版本,您可以使用 HTable批处理方法在一次调用中获取多个 id
HBase 有两个基本的检索选项:GET 和 SCAN。SCAN 意味着:从第 N 行开始,并按顺序返回所有记录,直到您到达第 M 行(其中 M >= N)。GET 只是单行扫描 (M==N);事实上,它实际上是这样实现的,这是有道理的,因为行是排序的,所以从根本上来说,没有更有效的方法可以到达其中之一。
因此,对于您的情况,您有几个选择:
还有另一个不错的选择:您可以使用Phoenix,这是 HBase 之上的一种 SQL 皮肤。它已经为这种情况内置了 Skip Scans,并作为 JDBC 驱动程序公开。它还有许多其他性能优化,从头开始创建会很费力(聚合协处理器等)。
(完全披露,我为创建 Phoenix 的公司工作,但它是完全开源的,所以我没有任何特别的既得利益来建议它,除了认为它很酷。:)