UUID分表操作

3 篇文章 0 订阅
0 篇文章 0 订阅

今天阅读一篇,uuid分表操作的文章,整理一下思路,并提出一些问题.

  1. 分表插入
    //向数据库插入数据
	public function addMysql(Request $request){
		  $uuid =md5(uniqid(mt_rand (), true));
		  $uid =hexdec(substr($uuid,0,1)) % 8;
		  //8为分多少个表,但是hexdec有局限性 ,16进制 f后面就为0了
		  //认为改为一下代码会好点
		  $uid =ord(substr($uuid,0,1)) % 8;
		  $sex = $request->input('sex');
		  $age = $request->input('age');
		  //dd($uuid);
		  $uname = $request->input('uname');
		  $result = DB::table('index_user')->insert(['uuid'=>$uuid,'uname'=>$uname]);
		  $result1 = DB::table('user_'.$uid)->insert(['uuid'=>$uuid,'uname'=>$uname,'sex'=>$sex,'age'=>$age]);
		  if($result1){
		    return '1';
		  }else{
		    return '0';
		  }
	}
  1. 插入成功后进行查询,先通过uname查询出UUID,通过UUID知道详细信息存储在哪张子表中.然后再进行查询
//查询
public function findMysql(Request $request){
    //dd($request);
    $uname=$request->input('uname');
    $uuid =DB::table('index_user')->where('uname','=',$uname)->value('uuid');
    $uid =hexdec(substr($uuid,0,1)) % 8;
    //或为下面代码,与上面代码对应
    $uid =ord(substr($uuid,0,1)) % 8;
    $userInfos=DB::table('user_'.$uid)->get();
    if($userInfos){
      return view('home/selectMysql',['userInfos'=>$userInfos]);
    }else{
      return view('home/findMysql');
    }
}

问题:

  1. 这样带最初设计的时候就固定了分表为8个.但是拓展性弱了很多, 应该如何设计? 最初是2个表,然后可以成长为100个表?
  2. 如果index_user也是分表应该怎么设计?
  3. 有没有做这个工作的中间件?帮忙推荐一个.
    至此,一个简单的利用UUID分表处理数据的例子就完成了。关于问题希望大家能帮帮忙,谢谢了
    原文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值