freyja 可能会加入分库、分表功能
水平分库、分表一直都没去考虑。
如果要去实现那么大致的想法是表、库都和某个字段的值关联。
例如分库就根据userId去摸 1、2、3、4、5、6、7、8、9 个库。
并且建立1、2、3、4、5、6、7、8、9 个对应的数据源 datasource
在不请入原有的代码前提下,
?
select * from t_user where userid = 1;
?
那么根据userId = 1 得知这条sql会在db1的数据库中,那么分配datasource1 去执行查询
?
userid 则为关键字段,类似之前的Group,sql处理都会围绕这个字段来处理
?
分库的字段都必须有类似的这种字段。这样就差不多解决了分库问题。
如果没有这个字段,那么就需要多个库搜索了,然后汇总结果。
?
分表嘛还是一样。如:
select * from t_user where userId = 1
通过转换:知道userId = 1的记录存在与t_user1中。 那么最终会被转换成为select * from t_user1 where userId = 1
?
同理,如果是select * from t_user where name = '张三' 这种是肯定要把所有的表查找一遍的
?
1 楼 sundysea 2012-05-04 查找排序,分页,不是不能在数据端坐了? 2 楼 aa87963014 2012-05-04 sundysea 写道查找排序,分页,不是不能在数据端坐了?分表分库只是根据规则帮你获得该sql应该去哪个数据库的哪个表执行,不会影响其他的问题
3 楼 sundysea 2012-05-09 aa87963014 写道sundysea 写道查找排序,分页,不是不能在数据端坐了?
分表分库只是根据规则帮你获得该sql应该去哪个数据库的哪个表执行,不会影响其他的问题
如果t_user 被封为t_user1,t_user2,t_user3
我现在要查询所有的user信息,并排序,分页。一个sql如何处理呢? 4 楼 aa87963014 2012-05-09 sundysea 写道aa87963014 写道sundysea 写道查找排序,分页,不是不能在数据端坐了?
分表分库只是根据规则帮你获得该sql应该去哪个数据库的哪个表执行,不会影响其他的问题
如果t_user 被封为t_user1,t_user2,t_user3
我现在要查询所有的user信息,并排序,分页。一个sql如何处理呢?
当然会被分成3条sql 执行得到结果然后合并成一个结果集,当然之后的结果 再次排序、分页是要在java里面做的 5 楼 aa87963014 2012-05-09 实际上,分页、排序这部分希望用户自己来处理 分页和排序 这样效率会更高一些