Hash分区方式是怎么支持范围查询的?

【产品名称】OceanBase

【产品版本】

【问题描述】

Hi,最近项目正在调研使用分布式数据库的使用,准备使用OceanBase。据官方文章介绍,数据有三种模型:Range、Hash、List;但是没有看到这三种方式实践的一些资料,包括使用场景,优缺点等。有个问题:

Hash方式组织数据的话,数据被会打散到多个节点上(多个分片、物理机器等),该如何支持范围查询呢?

比如sql: select * from t where key >= 1001 and key <= 10001; 使用key作为hash的字段。

谢谢;如果能提供一些资料的信息就更好了。

感谢对 OceanBase 开源版本的支持,针对提到的技术点问题, hash 模式对范围查询不太友好,有这种需求可以考虑使用 range 模型。参考文档:https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/memory-table



大表做分布式拆分常见的有两种方案,分库分表或者分区表。

按什么字段拆分,按什么策略拆分,取决于表上的主要业务场景。或者说优先级高的场景。

就这个sql而言,最好是range分区。如果range不能界定不好切分,用了hash,只要上面有索引,性能也不会太差。因为可以多分区并行查询。分区很多,性能可能会慢一点。

具体分区表用法可以看 :OceanBase分区表有什么不同? (qq.com)