一、前言
前面分析了那么多代码和原理,显得太过枯燥。那么,本章就来结合我在客户端基于一致性hash实现的数据库集群来一并演示一下diydb的实际运行情况。
二、演示
1、启动数据库服务器diydb
从服务器启动打印的信息,可以看到启动时间、进程id、线程id、日志打印函数是在哪个函数中被调用的、还有日志级别,最重要的还有启动的端口号。在启动完后,打印日志就会被写到日志文件中去。
下面是启动的另外两个数据库服务器:
注意上面diydb后的参数,-d data2是指定数据库的数据文件名是data2,-s 2221是指定数据库服务器启动的端口是2221.
2、据库客户端diy
(1)首先,看一下客户端配置文件diy.conf
原始版本的客户端是没有配置文件模块的,所有这里的参数命名都是我加的,hashenable表示是否开启集群功能,addrs表示服务器的ip地址和端口号,logpath是日志文件的路径
(2)然后,看一下客户端的启动
由上图可以看到客户端正常启动的情况,可以看到启动时会根据配置文件自动连接服务器(修改前的版本是要求用户通过connect命令自行连接服务器)。下面是没有连接成功的情况,我故意没有打开2221端口上的服务器
(3)help命令
可以看到目前数据库所支持的所有操作,但是snapshort快照功能并没有实现。
(4)数据插入操作
我们可以看到,key表示根据数据id值通过MD5算法求出来的hash值;hash size是表示key值映射带的服务器(实节点)拥有的虚拟节点的个数,默认每个服务器对应150个虚拟节点;port表示这行数据被插入到的服务器的端口号。
(5)数据查询操作
上面是数据查询命令的使用情况,当我们查到id=5的数据时,由于数据不存在,服务器返回了record is not exist的错误
(6)数据删除
(7)退出客户端
三、总结
上面是经过增加数据分片后的版本的演示
增加多机功能后的diydb的源码和库的下载地址:https://git.oschina.net/superlike/diydb-conhash.git(编译方法,执行build_boost.sh编译boost库,执行src/build.sh编译源码和bson库)
单机带注释版diydb源码下载地址:https://git.oschina.net/superlike/diydb-annotation.git