国产分布式数据库排名,数据库的发展简史

国产数据库都有哪些?

国产分布式数据库排名,数据库的发展简史

文章插图
国产数据库如下:
达梦数据库——传统数据库
GBase南大通用——传统数据库
神通数据库——传统数据库
金仓数据库——传统数据库
EsgynDB——新型数据库
SequoiaDB巨杉数据库——新型数据库
Oceanbase——新型数据库
K-DB数据库——传统数据库
OpenBASE
华易数据库Huayisoft DB Server
HUABASE-华鼎数据库
神州OSCAR(北京神舟航天软件技术有限公司研发)
TiDB (国内 PingCAP 团队开发的一个分布式 SQL 数据库)——新型数据库
ThinkPHP框架分布式数据库连接方法详解
国产分布式数据库排名,数据库的发展简史

文章插图
本文实例分析了ThinkPHP框架分布式数据库连接方法 。分享给大家供大家参考 , 具体如下:
Thinkphp作为国内的一款流行框架 , 相信使用的人一定不在少数 。本篇我们来分析一下Thinkphp中比较重要的一部分——分布式数据库的连接 。
当然了 , 我们在这里不是去将如何使用模型去对数据库进行增删改查 。我们是对其底层的连接代码做一个分析 , 可以帮助大家更好的理解thinkphp对数据库的操作 。方便我们以后的使用 。
一、单一数据库的连接
在使用的时候 , 单一数据库的连接配置非常简单 。我们只需要在配置文件中配置一下的信息即可 。'DB_TYPE' => 'mysql','DB_HOST' => '192.168.5.102','DB_NAME' => 'databasename','DB_USER' => 'user','DB_PWD' => 'password','DB_PORT' => '3306','DB_PREFIX' => 'onmpw_',
设置完成以后就可以使用了 。默认情况下就是单一的数据库连接 。
二、分布式数据库的连接
单一数据库的连接很简单 , 我们着重分析一下分布式数据库的连接 。'DB_TYPE' => 'mysql','DB_HOST' => '192.168.5.191,192.168.5.88,192.168.5.103','DB_NAME' => 'test,test,test','DB_USER' => 'masteruser,slaveuser,slaveuser','DB_PWD' => 'masterpass,slavepass,slavepass','DB_PORT' => '3306','DB_PREFIX' => '','DB_DEPLOY_TYPE' => 1, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'DB_RW_SEPARATE' => true, // 数据库读写是否分离 主从式有效'DB_MASTER_NUM' => 1, // 读写分离后 主服务器数量'DB_SLAVE_NO' => '', // 指定从服务器序号
按照以上配置就可以连接分布式数据库了 。
下面我们看下面几个选项
'DB_HOST'
分布式数据库 , 有几台服务器就要填写几个服务器地址 , 每个地址之间用逗号隔开 。如果是主从式分布的话 , 前面的地址要是主数据库的地址 。
对于下面的用户名和密码还有监听端口之类的 , 当然是有几个就写几个 。如果各个数据库的用户名和密码都一样的话 , 可以只写一个 。
对于这些选项的解析的代码如下$_config['username'] =explode(',',$this->config['username']);$_config['password'] =explode(',',$this->config['password']);$_config['hostname'] =explode(',',$this->config['hostname']);$_config['hostport']=explode(',',$this->config['hostport']);$_config['database'] =explode(',',$this->config['database']);$_config['dsn']=explode(',',$this->config['dsn']);$_config['charset']=explode(',',$this->config['charset']);
'DB_DEPLOY_TYPE'=>1
1 表示是分布式 ,  0 表示的是集中式(也就是单一服务器) 。
该选项的实现是在类 Think\Db\Dirver中protected function initConnect($master=true) {if(!empty($this->config['deploy']))// 采用分布式数据库$this->_linkID = $this->multiConnect($master);else// 默认单数据库if ( !$this->_linkID ) $this->_linkID = $this->connect();}