mysql - 我无法仅根据全局标识符判断一行位于哪个数据库中

标签 mysql sql-server database postgresql sharding

如果我有一个 User表(以全局 id 作为主键),基于 DB1 跨 10 个数据库 ( DB10 - username ) 进行分片,另一个表尝试引用 User表使用 User表行的全局id ,我无法知道该用户位于哪个数据库(1-10)。

这个问题有什么解决办法吗?

最佳答案

或者:

  1. 更改您的分片方案,以便根据用于查找此数据的 key 进行分片。如果是按ID,则始终按ID进行,并按ID分片(DB = ID % 10)

  2. User 表的主键设置为username。强制其唯一性并使用用户名作为其他表中的外键,而不是合成标识符。

  3. 创建一个可引用的查找表,将 id 映射到分片。

关于mysql - 我无法仅根据全局标识符判断一行位于哪个数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6770134/

相关文章:

MySQL - 比较百分比与连接

mysql - SQlite 嵌套查询问题

mysql - 导入大型数据库 - CPanel & MySQL & PHPMyAdmin

php - 如何在 PHP 中创建 HTML 抓取器并使其正常工作?

mysql - Rails ActiveRecord::Relation 未定义方法

php 在 html 表格中回显

sql - 同时通话

sql-server - SQL Server Case 语句在 Delphi TADODataSet 中不起作用

html - Laravel 将多个数据从表 html 插入数据库

php - 使用 MySQL 数据填充 div,将行与编号 ID 匹配