我已经考虑了一些关于表的分片,因为在mySQL表中无法使用外键进行分区。也许有一个选项可以切换到同时具有这两者的不同关系数据库,但我现在不认为这是一个选项。
所以,分片的想法似乎是一个相当不错的东西。但是,在应用程序级别执行此操作的好方法是什么?
我猜测起点就是在表格中为每个表格中的主键添加最大值。像products_4000000
,products_8000000
和products_12000000
之类的东西。然后,应用程序必须使用简单的if语句进行检查,在执行任何实际的数据库调用之前,将要求的id(PK)的大小小于四,八或一千二百万。
那么,这是朝着正确方向迈出的一步还是我们做了一些非常愚蠢的事情?
更新:
一致散列也可能是基于主键或类似方法在多个表之间共享行的想法。
另一种选择可能是在数据库级别引入分片。我不太了解触发器/视图或用于实现此目的的任何东西。
答案 0 :(得分:1)
在许多情况下,一致的哈希肯定是一种很好的方法。您可能还想查看有关应用程序感知分片的这篇文章。
http://www.dbshards.com/blog/2010/09/black-box-vs-application-aware-sharding/