您的位置:首页 > 数据库

一种简单的数据库分流的算法及实现

2007-08-16 20:55 591 查看
04年我在制作某省高考报名系统时使用过这种方法,效果很好但是源代码是基于2003的,今天已经不大适合了.
其实方法很简单:
1、目的:将一个大型数据库分散成几个小型的库,一方面加快查询速度,另一方面最主要的是能够将数据库服务分散到几个不同的服务器上从而增强系统的反映能力。
2、方法:将数据库分散开,如果是连续数字的话,最好划分,例如手机号根据号段即可。身份证根据归属地,都可以。对于字符串类型的例如姓名等复杂一些,可以hash以后再想办法。
3、实际:该方法稳定可靠,我们已经在多个系统中使用多年没有出现过问题。
4、不足:分开的多个数据库如果需要合并统计时比较麻烦。
下边是该方法的具体代码:
1、首先应当配置Web.Config文件

<connectionStrings>
<add name="zy00" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\zhiyuan_Data.MDF;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
<add name="zy01" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\zhiyuan_Data.MDF;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
<add name="zy02" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\zhiyuan_Data.MDF;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
<add name="zy03" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\zhiyuan_Data.MDF;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
<!--
以下代码省略:说明zy00代表志愿00库,其实该库并能不使用。只是为了增强程序强壮性,如果不能正确定位其他库才转向此库操作。
剩余的其他库依次编号更在后边即可,可以有任意多个。
-->
</connectionStrings>
2、一段根据传入关键字进行转向的代码。(传入的关键字中包含2位地域代码,使用该代码进行转向控制)01代表石家庄、02代表。。。

1 public static string changeconbyksh(string ksh)
8 //本示例中是使用数据集中的数据适配器的例子,其他的也一样
zhiyuansTableAdapters.tzhiyuanyxTableAdapter zyapt = new zhiyuansTableAdapters.tzhiyuanyxTableAdapter();
//建好以后的adapt需要根据考生号自动定向连接
zyapt.Connection.ConnectionString = zhiyuan.changeconbyksh(ksh);
zhiyuans.tzhiyuanyxDataTable tablezhiyuan = new zhiyuans.tzhiyuanyxDataTable();
zyapt.getkszhiyuan(tablezhiyuan, ksh, pcdm, zyh);
ok,这样就可以使用了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: