分库分表中想要查询的字段是非sharding key请问如何设计查询?

提问者:帅平 问题分类:面试刷题
分库分表中想要查询的字段是非sharding key请问如何设计查询?
举个例子,像订单表,我们会涉及到把相同用户的所有订单放在对应同一个分片表里面,此时涉及到这样一个需求:
用户想通过订单id进行查询订单信息,也希望通过用户信息查询订单信息,此时订单id不属于sharding key那么如何查询呢?
1 个回答
俗世风流债
俗世风流债
这种方式的话我们常用的主要是基因法进行查询,也就是把sharding key设置为 orderid+userid进行拼接,详细使用如下:
1、假设用户的userid是101101
2、假设生成的订单id是:20240313092300123
3、那么我们设计的sharding key是:20240313092300123101101
4、此时sharding key作为字符串类型进行存储。
5、假设我们的分片设置是16个分片
6、如果使用订单id进行查询的时候,我们拼接上userid,然后进行16取模
7、如果使用用户id进行查询的时候,我们对userid进行16取模
8、两者取模的结果是一样的,直接可以找到对应的分片,查询出对应的数据

最后**就是使用这种方式(基因法)进行分库分表的
发布于:2个月前 (03-13) IP属地:未知
我来回答