以前没接触过这方面的技术,现在随着系统数据的越来越大,要将数据库进行分库。
请问大牛们:
1、数据如何分库比较好?
2、分多个数据库后查询怎么办?假如要查询的两个表在不同的机器上,如何进行join?
3、多个数据库的事务如何保证?
分库的工作已经做了一部分,暂定的方案是:
1.将一些业务表按省内和省外进行分库,省内在一台服务器上,省外是另外的服务器上。因为省内和省外的关联不是很大,所以就这么分了。只是有一些统计需要将省内和省外的数据一起统计,这个还不知道如何实现。
2、一些基础表,比如用户表、部门表、用户权限等表,同时存在于省内省外的服务器上,定时进行同步。
前台采用.Net, 数据库是SQL Server。这种方法是否可行?
谢谢先!
回答的人不是很多...
大家随便说几句也好呀... 提供点学习资料也好...
1、数据如何分库比较好?
这个只能说看情况。一个独立的功能模块,如果压力大的话,就可以单独放出来了
2、分多个数据库后查询怎么办?假如要查询的两个表在不同的机器上,如何进行join?
分布式场景要避免join。你可以这样:一个完全独立的功能模块,其中包含N张表,你把这些都部署到一台服务器上;如果不是完全独立,则尽量减少其关联性,然后加冗余
学习的话,最近在看MongoDB,虽然是NoSql,但是处理分布式的思路是相同的,欢迎交流
google搜索database sharding很很多的资料、开源实现等
select 库名.dbo.表名 left join 库名.dbo.表名
不能两全其美的,分布式的事务恐怕要自己控制,自己写代码验证。
根据业务分库,根据访问量分库,这个看你自己的考虑了。
分库的时候要考虑,设计分库分表的时候,尽量避免join,可能需要冗余之类的。
xue xi le