数据库分库分表之后,所有表在一起,两个字段怎么做组合唯一索引?

查看 185|回复 14
作者:unregister   
当时我答的是单独新建一个表,做组合索引,写入成功就插入,没写入成功就失败。

索引, 写入, 分库, 组合

encro   
为难你了,
初级程序员面试架构师题目。。。
一般来说,不了解何时该分库分表的人,不配了解这个问题,这个问题只是为了让你早点知难而退。
gof817   
这种最简单的就是用其他的 kv 库
LeegoYih   
定义 2 个字段组合的路由规则
dode   
pg 的分区表有并行查询,可以在整个表上加约束
unregister
OP
  
@encro 第一次我说使用分布式锁,第二次我说用中间表。大佬您有什么好的方案吗
realpg   
分库分表规则中,涉及唯一性约束的字段的同值就不应该分到不同的表里面去
如果架构师只会按时间分表,那这公司不待也罢
draymonder   
假设两个字段是 (user_id ,user_type)
1. 方案一,将两个字段映射到一个 v_user_id 上,对 v_user_id 进行分库分表。
v_user_id -> (user_id ,user_type) 的数据用一个 mysql 表存下来,( user_id ,user_type )-> v_user_id 通过 kv 数据库存储,这样双向映射都有了
2. 方案二,对 user_id 进行分库分表,所有写入和查询操作都带上 user_type
保证唯一不一定非要唯一索引,也可以通过事务来保证
Azure99   
有没有可能,有种分表策略叫哈希分表?
encro   
@unregister
通常这个问题就是一个坑,我不知道原始问题是什么,所以没法估计这个出题的用意。
如果你是普通的分表,那么这个和你分表的 key 有关系,
如果是现成方案也是和分区 key 有关联。
先问清楚方案才能给解决方案。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部