mySQL&关系数据库:如何处理应用程序级别的分片/拆分?

时间:2010-06-07 08:45:38

标签: mysql performance rdbms partitioning sharding

我已经考虑了一些关于表的分片,因为在mySQL表中无法使用外键进行分区。也许有一个选项可以切换到同时具有这两者的不同关系数据库,但我现在不认为这是一个选项。

所以,分片的想法似乎是一个相当不错的东西。但是,在应用程序级别执行此操作的好方法是什么?

我猜测起点就是在表格中为每个表格中的主键添加最大值。像products_4000000products_8000000products_12000000之类的东西。然后,应用程序必须使用简单的if语句进行检查,在执行任何实际的数据库调用之前,将要求的id(PK)的大小小于四,八或一千二百万。

那么,这是朝着正确方向迈出的一步还是我们做了一些非常愚蠢的事情?

更新:
一致散列也可能是基于主键或类似方法在多个表之间共享行的想法。 另一种选择可能是在数据库级别引入分片。我不太了解触发器/视图或用于实现此目的的任何东西。

1 个答案:

答案 0 :(得分:1)

在许多情况下,一致的哈希肯定是一种很好的方法。您可能还想查看有关应用程序感知分片的这篇文章。

http://www.dbshards.com/blog/2010/09/black-box-vs-application-aware-sharding/