您好,请教一个问题,我们使用多元索引进行查询,有两个字段一定会有传参,userid和date
userid=? 而且 date 在某个范围内
总表的数据量大概会有百亿以上级别
同一个userid下可能有10亿级别
同一个userid_date下大概有几十万级别,这些数据都是会在同一天写入
比如查询 userid=1 and date>'2024-08-01' and date<'2024-08-07'
我如果将userid_date组合成一个字段,放到主键中(非分区键),并且将userid_date设置为多元索引的路由键,这样设计可以吗?
不太合适,路由键是你查询里面要带上才行,https://help.aliyun.com/zh/tablestore/use-cases/best-practices-for-search-indexes?spm=a2c4g.11186623.0.0.f496150dQ42WyH 这里更正下,路由键不支持范围,只能写单独的值。如果是范围,那就利用不到routing 此回答整理自钉钉群“表格存储技术交流群”
根据您的场景,将userid_date组合成一个字段作为主键的一部分是合理的,这样可以确保数据的离散性。同时,将userid_date作为多元索引的路由键,有利于优化userid和date范围查询的性能。但需要注意,由于date在同一个范围内查询,高并发写入时可能会集中在同一分区,影响同步和查询效率。建议对date值进行哈希处理,结合userid以避免写入热点。请参考如何合理设计表格存储中的数据表主键以优化多元索引性能和查询体验?进行调整
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。