php分布式数据库 php分布式部署( 六 )


暂不支持CREATE TEMPORARY TABLE
暂不支持CREATE/DROP/ALTER SERVER/LOGFILE GROUP/
暂不支持ALTER对分表键(shardkey)进行重命名,不过可以修改类型
分布式表的DML部分的语句限制:
暂不支持SELECT INTO OUTFILE/INTO DUMPFILE/INTO LOAD DATA导出
暂不支持INSERT ... SELECT
暂不支持UPDATE 分布式shardkey列的值
本操作主要是面向传统数据库的开发者或者DBA用户 , 让大家能够初步入手php分布式数据库了解分布式数据库的特点 。另外分布式数据库在架构上提供了灵活的读写分离模式 , 在SQL上支持全局的order by,group by,limit操作,支持聚合函数,跨set节点的join、子查询、支持分布式事务,传统数据库所支持的大部分操作在分布式数据库中得到继承 。分布式数据库是在传统数据库的基础之上发展起来的,对传统集中式的数据库有较好的兼容性,对SQL语句语法的使用上兼容大部分SQL1999,SQL2003标准 , 且对SQL的ACID特性都予以支持 。分布式数据库在逻辑上是一个独立完整的数据库,但在架构上和物理上采用 多节点分片方式,经过内部算法将数据打散分布来到不同节点存储数据,对前端业务屏蔽后端的复杂架构,并且自身具备数据的最终一致性访问,可用性和分区容灾等特性的数据库 。希望本次操作能给大家带来一些对分布式数据库TDSQL的一些认识和收获 。
*禁止转载,可转发(转发文章请注明出处)
TDPub企业级分布式关系数据库
php mysql分布式数据库如何实现当前做分布式的厂商有几家 , 我知道比较出名的有“华为云分布式数据库DDM”和“阿里云分布式数据库” , 感兴趣可以自行搜素了解下 。
分布式数据库的几点概念可以了解一下 。
数据分库:
以表为单位 , 把原有数据库切分成多个数据库 。切分后不同的表存储在不同的数据库上 。
以表中的数据行记录为单位,把原有逻辑数据库切分成多个物理数据库分片,表数据记录分布存储在各个分片上 。
路由分发:
在分布式数据库中,路由的作用即将SQL语句进行解析,并转发到正确的分片上,保证SQL执行后得到正确的结果 , 并且节约QPS资源 。
读写分离:
数据库中对计算和缓存资源消耗较多的往往是密集或复杂的SQL查询 。当系统资源被查询语句消耗,反过来会影响数据写入操作,进而导致数据库整体性能下降,响应缓慢 。因此,当数据库CPU和内存资源占用居高不下,且读写比例较高时,可以为数据库添加只读数据库 。
Think3.2.3怎么配置多个数据库连接Think3.2.3配置多个数据库连接方法:
一、全局配置定义
常用的配置方式是在应用配置文件或者模块配置文件中添加下面的配置参数:
//数据库配置信息
'DB_TYPE' = 'mysql', // 数据库类型
'DB_HOST' = 'localhost', // 服务器地址
'DB_NAME' = 'thinkphp', // 数据库名
'DB_USER' = 'root', // 用户名
'DB_PWD' = '123456', // 密码
'DB_PORT' = 3306, // 端口
'DB_PREFIX' = 'think_', // 数据库表前缀
'DB_CHARSET'= 'utf8', // 字符集
数据库的类型由DB_TYPE参数设置 。
下面是目前支持的数据库设置:
DB_TYPE设置 支持的数据库类型
mysql或mysqli mysql
pgsql pgsql
sqlite sqlite
mssql 或sqlsrv sqlserver
oracle oracle
ibase ibase
mongo mongo
PDO PDO支持的所有数据库
如果DB_TYPE使用PDO类型的话,数据库类型则由DB_DSN配置决定 。
或者采用如下配置
'DB_DSN' = 'mysql://root:123456@localhost:3306/thinkphp#utf8'
使用DB_DSN方式定义可以简化配置参数 , DSN参数格式为: