当前位置: 代码迷 >> 高性能数据库开发 >> 算法难题请问:怎么计算分布式存贮的Key? 谢!
  详细解决方案

算法难题请问:怎么计算分布式存贮的Key? 谢!

热度:9261   发布时间:2013-02-26 00:00:00.0
算法难题请教:如何计算分布式存贮的Key? 谢!!!
算法难题请教:如何计算分布式存贮的Key? 谢谢!!!

有这样一个需求:

水平切分(横向)数据是把所有数据当作一个大产品,但是把所有的平面数据按照某些Key(比如用户名)分散在不同数据库或者数据库服务器上,分散对数据访问的压力。 


如何实现这个KEY呢?

例如:

  一、5个用户名:

  user1
  user2
  user3 
  user4
  user5

  二、有两台数据库服务器:

  db1
  db2


  算法要求:如何把上面的5个用户名(实际应用上可能是无限的)映射到这两台服务器上呢?用什么算法可以做到呢?


  基本条件: 
1、用户名可能是无限的;
2、数据库服务器的数量在某个阶段是确定数量的,但可能会增加,增加时要求不破坏过去的KEY;






------解决方案--------------------------------------------------------
如果以前的KEY可以映射到任意用户名,那么新增的KEY怎么可能做到不映射以前的用户名呢?理论上新增的KEY映射只是以前的KEY的子集.
当然实际上是存在这样的新增KEY的,那是因为以前的实际数据并非用户名的全集.但是这个新增KEY没有通用的方法推导出来吧?
不破坏过去的KEY,好像只能阶段性的限制用户名的规则;或者人为的修改真实用户名(如添加前缀),这样如何不缓存用户信息的话定位用户比较麻烦,需要把数据库服务器全部扫一遍.
  相关解决方案