laravel 分库分表程序应该怎么写,框架有没有现成的支持?
应用场景如下
数据库:mysql
表名:用户表 tb_user
字段名:uid(用户ID,全站唯一),other_field(其它属性值)
特点:这个用户表特别大,如有1亿条记录,以后还在不断的增加中,那么是不可能把这些数据都放到同一个表中(mysql 肯定是不适合放这么多数据的)。
解决方案:将数据均匀的存放在256个表(16*16),表名分别为:tb_user_00至tb_user_ff;
这256个表分别存放在16个数据库中,库名分别为:db_user_0到db_user_f;
这16个库分别存放在四台机器中:
host0:db_user_0,db_user_1,db_user_2,db_user_3;
host1:db_user_4,db_user_5,db_user_6,db_user_7;
host2:db_user_8,db_user_9,db_user_a,db_user_b;
host3:db_user_c,db_user_d,db_user_e,db_user_f;
如库db_user_5中的16个表为:tb_user_50到tb_user_5f;
这256个表是按照以下算法分布的:
$tb_index = substr(md5($uid),0,2);
数据库操作需要符合如下功能:
自动匹配映射数据库、表,对于程序员来说,就是一个表,不关心数据存在哪个表或者哪个库,存储在哪台机器。
插入数据:insert into tb_user (uid,other_field) values (:uid,:otherfield);
根据uid获取数据:select * from tb_user where uid=:uid;
请问各位大神:laravel中是否有现成的对于这种应用场景的应用,操作,如果有,请给出示例代码,或者推荐文章的url,谢谢!
数据库:mysql
表名:用户表 tb_user
字段名:uid(用户ID,全站唯一),other_field(其它属性值)
特点:这个用户表特别大,如有1亿条记录,以后还在不断的增加中,那么是不可能把这些数据都放到同一个表中(mysql 肯定是不适合放这么多数据的)。
解决方案:将数据均匀的存放在256个表(16*16),表名分别为:tb_user_00至tb_user_ff;
这256个表分别存放在16个数据库中,库名分别为:db_user_0到db_user_f;
这16个库分别存放在四台机器中:
host0:db_user_0,db_user_1,db_user_2,db_user_3;
host1:db_user_4,db_user_5,db_user_6,db_user_7;
host2:db_user_8,db_user_9,db_user_a,db_user_b;
host3:db_user_c,db_user_d,db_user_e,db_user_f;
如库db_user_5中的16个表为:tb_user_50到tb_user_5f;
这256个表是按照以下算法分布的:
$tb_index = substr(md5($uid),0,2);
数据库操作需要符合如下功能:
自动匹配映射数据库、表,对于程序员来说,就是一个表,不关心数据存在哪个表或者哪个库,存储在哪台机器。
插入数据:insert into tb_user (uid,other_field) values (:uid,:otherfield);
根据uid获取数据:select * from tb_user where uid=:uid;
请问各位大神:laravel中是否有现成的对于这种应用场景的应用,操作,如果有,请给出示例代码,或者推荐文章的url,谢谢!
1 个回复
朝阳
赞同来自: