一:YashanDB简介
2023年11月8日,由深圳计算科学研究院(简称:深算院)自主研发的国产数据库YashanDB年度产品发布会正式召开,崖山数据库管理系统(YashanDB)是深算院在数据库前沿基础理论上融入新的原创理论,自主设计,自主研发的一款新型数据库管理系统,是国内率先实现自主可控技术突破的数据库系统之一。YashanDB既可以实现单机部署,还能实现分布式或共享集群式部署,满足各种场景需求。此外,YashanDB还具有透明多写、金融级高可用、高性能三大关键能力,拥有行式存储/列式存储、事务管理、原生HTAP内核、高性能查询、全自研优化器等核心特性。
二:YashanDB安装
1.服务器准备
笔者是个人开发者,所以安装使用单机部署即可,由于我们日常使用的都是Windows操作系统比较多,而YashanDB是不支持在Windows系统上进行安装的,我们可以在自己电脑安装一台虚拟机作为服务器使用,推荐的操作系统是Centos 7.6及以上,至于虚拟机怎么安装在网上都能找到相关教程。
需要注意的是,YashanDB的安装要求操作系统的内存最低为4G,硬盘最低为50G,所以在安装虚拟机时候要注意内存和硬盘的分配,当然你也可以在安装好后进行调整。此外,在安装Centos之后要将网络连接选择为NAT模式(共享主机的IP地址),不然访问不了外网,并且不能使用DHCP配置,不然每次启动IP地址都会发生改变,后面使用FinalShell时候也会很麻烦,我的系统配置信息见下图。
关于工具的选择,笔者推荐下载一个SSH工具进行操作,无论是安装数据库还是操作数据库都会更方便,可以选择SSH Secure Shell Client、Xshell、FinalShell等,我使用的是FinalShell,因为FinalShell是免费的,而且安装很简单,操作界面很简洁,关于具体的安装连接过程可以自行百度一下,成功连接虚拟机后显示下图信息:
2.参数调整
关于数据库安装这一块YashanDB官网有很详细的教程,这里就不再赘述了,可以点击这里跳转官网查看教程。关于官网提到的操作系统参数调整(最低要求见下表),为了方便大家查看需要注意的参数信息,可以直接对照下图红色框部分查看。
资源项 | 描述 | 最小要求 |
---|---|---|
open files | 文件句柄 | 65536 |
max user processes | 最大用户线程数 | 65536 |
max memory size | 最大内存限制 | unlimited |
stack size | 堆栈大小 | 8192 |
[root@localhost tbug]# ulimit -a
可以看到系统的默认配置已经能够满足最低要求。
3.安装包下载
①创建文件夹
关于安装包的下载,大家可点击这里跳转官网下载对应的安装包。笔者是直接下载到了Windows系统,但是需要将安装包拷贝到虚拟机上才能进行安装,执行如下命令切换用户并创建文件夹。
[root@localhost tbug]# su yashan
[yashan@localhost tbug]$ cd
[yashan@localhost ~]$ mkdir install
[yashan@localhost ~]$ cd install
[yashan@localhost install]$ pwd
/home/yashan/install
②上传文件
FinalShell具有文件下载上传功能,点击“底栏”按钮展开底栏,然后选择默认用户(选择yashan用户会提示Permission denied)的一个文件夹(我选择的是Downloads文件夹)进行文件上传,具体操作见下图:
③移动文件
上传成功后切换到root移动文件,否则会提示权限不够,执行如下命令:
[tbug@localhost root]$ su root
密码:
[root@localhost ~]# cd /home/tbug/Downloads
[root@localhost Downloads]# ls
yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
[root@localhost Downloads]# mv yashandb-personal-23.1.1.100-linux-x86_64.tar.gz /home/yashan/install
[root@localhost Downloads]# su yashan
[yashan@localhost Downloads]$ cd /home/yashan/install
[yashan@localhost install]$ ls
yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
至此安装包已经上传完成,接下来根据官网教程进行解压安装即可。
三:YashanDB数据库实战
1.启动数据库
执行如下命令启动数据库
yasboot cluster start -c yashandb
如果启动过程中出现connection refused的错误提示(见下图),根据墨天轮问答区一位大佬的解答,如果使用yasboot来管理YashanDB需要依赖yasom和yasagent两个进程,我们需要将这两个进程开启,执行如下命令:
yasboot process yasom start -c yashandb
yasboot process yasagent start -c yashandb
2.连接数据库
执行如下命令连接数据库
yasql sys/password
根据官网,笔者将password转换成sys的用户密码后出现了如下错误提示
笔者尝试将password不换成用户密码,则提示无效用户名和密码,此时会让你输入用户名,输入用户名后再输入密码(不显示)即可连接成功。
经过尝试,原来是我的密码里面带了个"!"号,此时加入一个单引号,即输入:
yasql 'sys/你的密码'
连接成功
3.数据表的创建
①创建如下Student表
CREATE TABLE STUDENT
(
Sno VARCHAR2(17)PRIMARY KEY ,
Sname VARCHAR2(10) NOT NULL ,
Sage INT ,
Ssex VARCHAR2(3) ,
Sdept VARCHAR2(20)
);
可以看到student表已创建成功。
②查看表
执行如下命令查看当前用户中已存在的表
SQL> SELECT TABLE_NAME,TABLE_TYPE FROM USER_TABLES;
可以看到刚创建的Student表已存在,由于我使用的用户是系统默认的用户,所以除了自己创建的表之外还有很多系统所需要的表,为了后续更好操作,可以自己另外创建一个用户用于练习和开发。
4.插入数据
①向表中插入三条数据
INSERT INTO STUDENT(Sno, Sname, Sage, Ssex, Sdept) VALUES ('1906145218', '张三', '19', '男', '网络安全');
INSERT INTO STUDENT(Sno, Sname, Sage, Ssex, Sdept) VALUES ('1904154568', '李四', '20', '女', '网络工程');
INSERT INTO STUDENT(Sno, Sname, Sage, Ssex, Sdept) VALUES ('1910245451', '王五', '21', '男', '软件工程');
如果性别字段长度设置为2,那么插入时候会出现下面的错误,可以看到字段超出了长度,如果是按照GBK编码,那么一个汉字的长度就是2个字节,但是如果是UTF-8,那么一个汉字则占3个字节,在YashanDB中,编码格式为UTF-8,因此性别字段最少需要3个字节。
5.查询数据
①查询所有
SQL> SELECT * FROM STUDENT;
②条件查询
查询名为“张三”的所有字段
SQL> SELECT * FROM STUDENT WHERE SNAME='张三';
③模糊查询
-
LIKE运算符
在SQL中可以使用“”和“%”通配符实现LIKE运算,通配符是一种在 WHERE 子句中拥有特殊意义的字符,“%”通配符可以匹配 0 到多个任意字符,“”通配符的功能与“%”类似,其仅匹配任意一个字符。如需匹配两个字符,则使用“_ _”。
查询专业名称以“网”开头的数据:
SELECT * FROM STUDENT WHERE SDEPT LIKE '网%';
-
IN运算符
IN 运算符也称为“成员条件运算符”,用于判断一个值是否在一个指定的数据集合之内。
查询专业为网络工程、软件工程的学生
SELECT * FROM STUDENT WHERE SDEPT IN('网络工程','软件工程');
-
BETWEEN…AND运算符
在 WHERE 子句中,可以采用 between…and 运算符选取介于两个值之间的数据,这些值可以是数字和日期类型(取值范围包括边界值)。
查询年龄在20至22岁之间的学生:SELECT * FROM STUDENT WHERE SAGE BETWEEN 20 AND 22;
6.修改数据
在SQL中,要修改某一字段的值可以使用UPDATE语句加上条件来进行修改。
修改王五的年龄为25
UPDATE STUDENT SET SAGE=25 WHERE SNAME='王五';
SELECT * FROM STUDENT;
7.删除数据
在SQL中,要删除某一记录可以使用DELETE语句加上条件来进行修改。
删除王五的信息
DELETE FROM STUDENT WHERE SNAME='王五';
SELECT * FROM STUDENT;
四:使用感想
笔者之前一直在使用OpenGauss数据库,无意间在墨天轮社区看到了YashanDB的产品体验活动,于是下载部署YashanDB并体验了几天,不得不说YashanDB的使用效果还是不错的,学过SQL的不需要再学习什么就能轻松上手,而且性能方面也很强大,自研的数据库管理系统能做到这样真的很令人佩服,不得不说国产数据库已经崛起了。不过笔者希望能将国产数据库带进大学里面,鼓励学生参与进来,持续发挥创新能力,提高国产数据库的知名度和使用率,这样也能更好推动国产数据库的发展。
无论从性能还是操作上来说YashanDB都能称得上一款优秀的数据库管理系统,不过由于是新生数据库,网上相关资料还不是很多,遇到问题只能在官方文档和社区查,有些问题还不一定能查得到,希望官方能多进行推广,让更多的开发者了解体验并参与改进。除此之外,YashanDB在安装便利性、生态完整性、使用简易性等方面还有很大的进步空间,相信在经过不断迭代升级之后在不久的将来能够媲美Oracle、MySQL等主流数据库,同时也希望YashanDB能够做的越来越好。