一种简单的数据库分流的算法及实现
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,这样就可以使用了
其实方法很简单:
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,这样就可以使用了
相关文章推荐
- 一种简单的数据库分流的算法及实现
- 一种简单的数据库分流的算法及实现
- 圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单
- 一种常见的数据挖掘的算法SPRINT算法的简单实现
- Yale人脸数据库、PCA算法实现Matlab中特征脸生成和简单的人脸识别
- 数独问题的一种简单算法代码实现
- 又一种JSP实现的Java通用简单分页算法
- 一种常用的权限控制算法的实现
- 通过PHP CLI实现简单的数据库实时监控调度
- 数据库全库搜索简单实现
- mysql主从数据库简单实现
- 模拟实现简单文件系统并实现数据库完整性检查
- (转载)无限级分类的简单算法实现及代码重点讲解
- 三种简单排序算法及实现(引用)
- 算法导论 4.1-5 最大子数组问题 线性时间算法 C++简单实现
- A Simple In-Place Algorithm for In-Shuffle 一种简单的原地洗牌算法
- Eclipse使用(七)—— 使用Eclipse创建JavaWeb项目并使用JDBC连接数据库实现简单的登陆注册功能
- 【算法导论】简单哈希表的除法实现
- 简单的数据库连接池实现
- c语言中一种简单的strcmp的实现