// 172.45.155.25:11111-1, 172.45.155.25:11111-2, ..., 172.45.155.25:11111-factor
byte[] d = md5.digest( ( servers[i] + "-" + j ).getBytes() );
// 每个hash值生成4个虚拟节点
for ( int h = 0 ; h4; h++ ) {
Long k =
((long)(d[3+h*4]0xFF)24)
| ((long)(d[2+h*4]0xFF)16)
| ((long)(d[1+h*4]0xFF)8 )
| ((long)(d[0+h*4]0xFF));
// 在环上保存节点
consistentBuckets.put( k, servers[i] );
}
}
// 每个server一共分配4*factor个虚拟节点
}
// 用MD5来计算key的hash值
MessageDigest md5 = MD5.get();
md5.reset();
md5.update( key.getBytes() );
byte[] bKey = md5.digest();
// 取MD5值的低32位作为key的hash值
long hv = ((long)(bKey[3]0xFF)24) | ((long)(bKey[2]0xFF)16) | ((long)(bKey[1]0xFF)8 ) | (long)(bKey[0]0xFF);
// hv的tailMap的第一个虚拟节点对应的即是目标server
SortedMap tmap = this.consistentBuckets.tailMap( hv );
return ( tmap.isEmpty() ) ? this.consistentBuckets.firstKey() : tmap.firstKey();
更多问题到问题求助专区()
TDSQL TCA 分布式实例特点初探分布表和SQL透传TDSQL分布式实例通过Proxy接口提供和mysql兼容的连接方式php分布式数据库 , 用户通过IP地址、端口号以及用户名、密码进行连接:
(注意:公有云TDSQL需要在实例页面申请公网连接地址)
连接示例:mysql -h172.21.32.13 (proxy地址) -P3306(proxy端口) -utest (数据库账号) -p
与普通的mysql连接方法一致php分布式数据库 , 分布式实例兼容mysql的协议和语法,支持SSL加密等功能 。当然,您也可以使用navicat、 jdbc、 odbc、 php、 Python等来连接分布式TDSQL实例 。
1、TDSQL分布式实例支持表的类型介绍
a、分布式表:即水平拆分表 , 也成为“分表”,该表从业务视角是一张完整的逻辑表,但后端根据分表键(shardkey)的HASH值将数据分布到不同的物理节点组(SET)中 。
b、普通表:又名Noshard表,即无需拆分的表,和传统集中式数据库中的表一致,且没有做任何特殊处理的表,目前分布式实例将该表默认存放在第一个物理节点组(set)中 。
c、广播表:又名小表广播技术,即设置为广播表后 , 该表的所有操作都将广播到所有物理节点组(set)中,每个set都有该表的全量数据,常用于业务系统关联查询较多 , 修改较少的小表或配置表等 。
表类型选用注意事项:
在分布式实例中,如果两张表分表键相等,这意味着两张表**相同的分表键对应的行** , 存储在相同的物理节点组中 。这种场景通常被称为组拆分(groupshard),会极大的提升业务联合查询等语句的处理效率 。由于单表默认放置在第一个set上 , 如果在分布式实例中建立大的单表,则会导致第一个set的负载太大 。除非特别需要,在分布式实例中尽量使用分布式表,这也是分布式实例的特点之一 。
2、TDSQL分布式实例表的创建
接下来我们来看下分布式数据库TDSQL所支持的三种类型表的使用方法和注意事项 。
a、分布式表的使用
简述:普通的分表创建时必须在最后面**指定分表键(shardkey)的值,该值为表中的一个字段名字,会用于后续sql的路由选择 。连接到TDSQL分布式实例后,我们创建一个本次操作使用的数据库名为:testdb
mysql create database testdb;
mysqluse testdb;
接下来我们创建分布式表 , 命名以分布式拼音首字母命名
**建表语句1:**
MySQL testdb create table fbs ( a int, b int, c char(20),primary key (a),unique key u_1(a,c) ) shardkey=a;
Query OK, 0 rows affected (0.07 sec)
**建表语句2:**
推荐阅读
- 企鹅直播用什么直播伴侣,企鹅直播配置
- 包含拍视频的什么青蛙的词条
- visualc.net程序设计教程,visualcnet程序设计教程第3版课后答案
- erp系统切换仓库要注意什么,erp系统更换
- mysql怎么自加 ht3528h8dg5l
- 模拟经营游戏排名,模拟类经营游戏
- 如何提取所有的ppt图片,如何提取出ppt中所有图片
- java代码的超链接 java html的超链接标签
- 电视分屏怎么取消,电视分屏怎么取消