一、YashanDB数据库介绍
1.1、YashanDB数据库概况
崖山数据库系统YashanDB是深圳计算科学研究院自主设计研发的新型数据库管理系统,在经典数据库理论基础上,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的要求。
1.2、YashanDB体系架构
1.2.1、部署架构
YashanDB支持三种部署形态,分别是单机(主备)部署(简称:单机部署)、分布式集群部署(简称:分布式部署)和共享集群部署。
1.2.2、单机部署
单机部署一般会在两台服务器上分别运行主实例和备实例,通过主备复制实现主库的修改同步到备库,也有一些场景对高可用要求较低,部署时只使用一台服务器仅运行一个实例。
单机部署是比较常见的形态,适用于大多数场景。
1.2.3、共享集群部署
共享集群在硬件层面需要依赖共享存储,所有实例均可读写,实例之间通过全局缓存实现数据交换。
共享集群部署常应用于对多实例数据库集群多写、高可用、性能以及可扩展能力均有较高要求的高端核心交易场景。
1.2.4、分布式部署
分布式部署中有更多不同类型的程序,包括MN组、CN组和DN组,同一服务器上可以同时运行多种不同类型的程序。
分布式部署适用于对处理能力要求较高且有较强线性扩展诉求的场景,例如海量数据分析业务场景。
1.2.5、逻辑架构
YashanDB的逻辑架构零层视图如下图所示:

1.2.6、单机主要子系统
1.2.6.1、客户端驱动
包括一系列客户端API,提供包括建立连接,执行SQL语句,获取结果集等一系列能力。
1.2.6.2、SQL引擎
SQL引擎包括解析器、优化器、执行器,负责客户端提交SQL文本的解析,生成执行计划,以及具体执行。SQL引擎提供丰富的内置函数库,方便在SQL中直接使用函数做表达式运算。
1.2.6.3、PL引擎
PL引擎提供用户自定义函数、类型管理,自定义类型等能力,包括高级包、存储过程、存储函数、触发器等。PL对象可持久化,创建后可以多次执行。
1.2.6.4、存储引擎
负责存储空间管理,采用段区页三级空间管理;负责事务管理,并控制并发访问,提供一致性访问能力;负责关系对象的管理,包括表、索引等。
1.2.7、共享集群主要子系统
在单机形态基础上,共享集群部署形态中新增了集群内核、集群管理和文件系统三个子系统:
1.2.7.1、共享集群内核
共享集群部署形态中集群运行时的核心组件,通过聚合内存技术负责各服务器运行期内存页面的协调,确保集群多实例高效实现一致性的访问。
1.2.7.2、文件系统
负责管理存储设备,提供类文件系统接口给数据库使用,处理上层应用的文件读写请求,经过地址转换转化为对存储设备的读写操作。
1.2.7.3、共享集群管理
共享集群部署形态中负责管理集群,提供配置管理能力。
1.2.8、分布式主要子系统
在单机形态基础上,分布式部署形态中新增了元数据节点管理、协调节点管理和数据节点管理三个子系统:
1.2.8.1、元数据节点管理
负责分布式集群的节点管理服务、元数据管理服务和全局时钟服务。
1.2.8.2、协调节点管理
负责处理客户端的连接请求,SQL命令请求,生成分布式执行计划,然后分发到数据节点执行,最后将执行结果汇总返回给客户端。
1.2.8.3、数据节点管理
负责持久化数据,以及执行分解后的SQL执行计划。
1.3、YashanDB部署形态
1.3.1、单机(主备)部署(简称:单机部署)
传统的关系型数据库理论与创新的底座引擎技术相结合,适用于集中式事务业务场景,支持主备形态。
1.3.2、分布式集群部署 (简称:分布式部署)
继承单机能力的原生分布式处理系统,适用于分布式分析业务场景,支持主备形态。
1.3.3、共享集群部署
基于共享存储的多活集群,提供计算/存储扩展和金融级高可用能力,适用于高端核心交易场景。
1.4、YashanDB核心特性
1.4.1、行式存储/列式存储
支持HEAP行存表、TAC列存表、LSC列存表。
支持LIST/RANGE/HASH/INTERVAL分区类型和多种组合二级分区能力。
支持向量化计算。
1.4.2、事务管理
支持完整事务ACID、细粒度锁管理、语句读写一致性,支持读已提交和串行化事务隔离级别、UNDO自管理、多版本并发控制。
1.4.3、高性能查询
提供基于代价和规则的优化器模型。
支持MPP分布式执行方式,具备数据排序、稀疏索引、预读与缓存、数据压缩等存储技术,加上SQL引擎使用了分区剪枝、并行查询、条件下推等特性,带来高性能查询。
1.4.4、数据复制
支持同步和异步两种复制模式,提供最大保护、最大性能等多种复制策略。
1.4.5、备份恢复
提供数据物理备份和逻辑备份能力,支持全量和二级增量备份,并且支持基于时间点恢复(PITR)功能。
1.4.6、高可用
提供一主多备、级联备高可用能力,支持手动切换和自动选主。
1.4.7、数据库闪回
支持闪回查询、闪回修改以及回收站闪回能力。
1.4.8、通用SQL能力
遵循ANSI SQL标准,支持常用SQL语法,提供丰富函数库和数据类型,支持高性能的PLAN算子。
1.4.9、PL
支持存储过程、自定义函数、匿名块、高级包、JOB、触发器等能力。
1.4.10、聚合内存
支持聚合内存(Cohesive Memory)核心技术,用于集群数据库各实例之间协同数据页的读写访问以及各种非数据类的并发控制。
1.4.11、文件系统能力
可直接管理裸盘提供文件系统服务,在共享集群部署时为多节点集群提供并行文件读写能力。
1.4.12、空间数据管理
支持ST_GEOMETRY数据类型,用于存储和访问符合开放地理空间信息联盟(Open Geospatial Consortium,简称OGC)制定的SFA SQL标准的几何对象。
1.4.13、在线扩缩容
分布式部署形态中,分布式集群支持在线扩缩容,以满足客户业务发展需求。
1.4.14、海量数据分析
YashanDB分布式分析体系基于有界计算理论的即时分析,专注解决大数据计算效率、数据生产即分析、海量数据存储成本及数据孤岛等数据库瓶颈难题(3V:Volumn、Velocity、Variety),为用户提供灵活的传统数仓加速、一站式数据仓库解决方案。
1.4.15、海量稳态数据分析
YashanDB的LSC表为列存表,通过列存结构组织数据,支持冷热数据分离,高压缩比的对象存储,通过数据排序,稀疏索引,下推过滤等技术实现海量数据的高性能查询,同时支持数据写入实时数据区提升事务性能,支持实时数据区与稳态数据区的静默转换和融合查询,主打海量稳态数据的交互式分析场景。
1.4.16、Ad-Hoc交互式自助分析场景
对业务进行交互式探索分析,通过高性价比列存引擎、向量化执行引擎、高效的分布式算法等全自研技术达到秒级响应的查询分析体验。
1.4.17、实时个性化推荐场景
基于海量用户历史行为日志数据进行多维分析,支持行为日志的实时入库,并完成历史标签和实时标签的秒级计算,支持通过各类标签组合进行用户圈选,提高营销成功率。
二、初始化安装环境
说明: 本章节将介绍企业版单机形态YashanDB服务端安装部署所需的前期准备,安装前请根据本文所述内容进行相关配置。
2.1、环境规划
| 项目 | 名称 |
|---|---|
| 操作系统 | Kylin Linux Advanced Server release V10 (Halberd) |
| CPU | x86_64 |
| 内存 | 8G |
| 硬盘 | 100G |
| 文件系统 | ext4或xfs |
| 网络 | 千兆以太网,支持TCP和UDP链接 |
### 2.2、创建安装用户
说明:建议创建一个新用户安装YashanDB数据库。切换至root用户,并执行如下命令创建新用户yashan:
groupadd yashan -g 6000
useradd yashan -g 6000 -u 6000
echo "SyAdmin@123456"|passwd --stdin yashan
[root@Node1 ~]# groupadd yashan -g 6000
[root@Node1 ~]# useradd yashan -g 6000 -u 6000
[root@Node1 ~]# echo "SyAdmin@123456"|passwd --stdin yashan
更改用户 yashan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@Node1 ~]#
2.3、配置sudo免密
sed -i.bak '100ayashan ALL=(ALL) NOPASSWD:ALL' /etc/sudoers
[root@Node1 ~]# sed -i.bak '100ayashan ALL=(ALL) NOPASSWD:ALL' /etc/sudoers
[root@Node1 ~]#
2.4、操作系统参数调整
说明:下表为YashanDB数据库所需的资源限制值的最小要求,请根据下表所示将资源限制值调整为大于或等于最小要求的值。
| 资源项 | 描述 | 推荐值 |
|---|---|---|
| open files | 文件句柄 | 1048576 |
| max user processes | 最大用户线程数 | 1048576 |
| max memory size | 最大内存限制 | unlimited |
| stack size | 堆栈大小 | 8192 |
执行如下命令查看系统的所有资源限制值:
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127952
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 65535
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
操作系统参数调整有如下两种方式,请根据自身需求选择其一进行配置:
配置参数临时生效
执行如下命令使新配置的资源限制值临时生效,重启操作系统后无效:
# ulimit -n 1048576
# ulimit -u 1048576
# ulimit -m unlimited
# ulimit -s 8192
配置参数永久生效
执行如下命令将参数写入/etc/security/limits.conf文件,重启操作系统后参数永久生效:
echo "
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 1048576
* hard nproc 1048576
* soft rss unlimited
* hard rss unlimited
* soft stack 8192
* hard stack 8192
" >> /etc/security/limits.conf
[root@Node1 ~]$ mkdir /install /yashanDB
[root@Node1 ~]$ chown -R yashan:yashan /install /yashanDB
[root@Node1 ~]$ chmod -R 750 /install /yashanDB
三、YashanDB部署
3.1、下载安装包
说明:
[yashan@Node1 ~]$ cd /install/
[yashan@Node1 install]$ wget https://linked.yashandb.com/upload1010/yashandb-23.2.4.100-linux-x86_64.tar.gz
--2024-12-25 16:29:37-- https://linked.yashandb.com/upload1010/yashandb-23.2.4.100-linux-x86_64.tar.gz
正在解析主机 linked.yashandb.com (linked.yashandb.com)... 119.23.210.86
正在连接 linked.yashandb.com (linked.yashandb.com)|119.23.210.86|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:189823431 (181M) [application/octet-stream]
正在保存至: “yashandb-23.2.4.100-linux-x86_64.tar.gz”
yashandb-23.2.4.100-lin 100%[===============================>] 181.03M 2.63MB/s 用时 36s
2024-12-25 16:30:14 (5.01 MB/s) - 已保存 “yashandb-23.2.4.100-linux-x86_64.tar.gz” [189823431/189823431])
[yashan@Node1 install]$
3.2、解压安装包到/yashanDB目录
[yashan@Node1 install]$ tar -zxf yashandb-23.2.4.100-linux-x86_64.tar.gz -C /yashanDB/
[yashan@Node1 install]$
3.3、生成参数文件
说明:
- 执行如下命令生成安装参数文件,ssh登录密码为创建yashan用户时指定的密码,请将–ip参数后面的值更换成安装服务端所在服务器的IP地址(使用127.0.0.1会导致客户端无法连接至服务端):
[yashan@Node1 yashanDB]$ ./bin/yasboot package se gen --cluster yashandb -u yashan -p SyAdmin@123456 --ip 192.168.1.71 --port 22 --install-path /yashanDB --data-path /yashanDB/data --begin-port 1688
host host0001 openssl version: OpenSSL 1.1.1f 31 Mar 2020
OpenSSL version is 1.1.1 or greater
192.168.1.71
ip: memory is less than 4096MB
hostid | group | node_type | node_name | listen_addr | replication_addr | data_path
---------------------------------------------------------------------------------------------------
host0001 | dbg1 | db | 1-1 | 192.168.1.71:1688 | 192.168.1.71:1689 | /yashanDB/data
----------+-------+-----------+-----------+-------------------+-------------------+----------------
Generate config completed
[yashan@Node1 yashanDB]$
3.4、执行安装
说明:
- 执行如下命令安装YashanDB数据库,如实际安装数据库版本与示例中版本不同,请将-i参数后的软件包名称更改成实际名称。
[yashan@Node1 yashanDB]$ ./bin/yasboot package install -t hosts.toml -i /install/yashandb-23.2.4.100-linux-x86_64.tar.gz
host host0001 openssl version: OpenSSL 1.1.1f 31 Mar 2020
OpenSSL version is 1.1.1 or greater
checking install profile.toml...
install version: yashandb 23.2.4.100
update host to yasom...
[yashan@Node1 yashanDB]$
3.5、执行部署
说明:
- 执行如下命令部署YashanDB数据库
[yashan@Node1 yashanDB]$ ./bin/yasboot cluster deploy -t yashandb.toml
type | uuid | name | hostid | index | status | return_code | progress | cost
------------------------------------------------------------------------------------------------------------
task | 72671c8da74872d9 | DeployYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 16
------+------------------+--------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
[yashan@Node1 yashanDB]$
3.6、配置环境变量
$ cd /yashanDB/conf
# 如~/.bashrc中已存在YashanDB相关的环境变量,将其清除
cat yashandb.bashrc >> ~/.bashrc
source ~/.bashrc
3.7、设置数据库密码
说明:
- 执行如下命令设置YashanDB数据库中sys用户的密码(命令中的newpasswd请替换为实际密码)。
- yasboot cluster password set -n SyAdmin@123456 -c yashandb
[yashan@Node1 yashanDB]$ bin/yasboot cluster password set -n SyAdmin@123456 -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | 996ff36f2607b772 | YasdbPasswordSet | - | yashandb | SUCCESS | 0 | 100 | 2
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
[yashan@Node1 yashanDB]$
3.8、查看YashanDB数据库状态
说明:
执行如下命令查看YashanDB数据库状态,如显示出数据库状态信息即为安装成功:
[yashan@Node1 yashanDB]$ yasboot cluster status -c yashandb
host_id | node_type | nodeid | pid
--------------------------------------
host0001 | db | 1-1:1 | 1927
----------+-----------+--------+------
[yashan@Node1 yashanDB]$
3.9、执行如下命令,查看数据库状态
[yashan@damengServer1 ~]$ yasboot cluster status -c yashandb -d
hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | data_path
--------------------------------------------------------------------------------------------------------------------------------------
host0001 | db | 1-1:1 | 3357 | open | normal | primary | 192.168.1.71:1688 | /yashanDB/data/db-1-1
----------+-----------+--------+------+-----------------+-----------------+---------------+-------------------+-----------------------
[yashan@damengServer1 ~]$
[yashan@damengServer1 ~]$
3.10、使用yasql工具测试登录数据库
说明:使用yasql工具连接数据库,查看实例状态。
[yashan@damengServer1 conf]$ yasql sys/password@192.168.1.71:1688
YashanDB SQL Enterprise Edition Release 23.2.4.100 x86_64
please input user name: sys
please input password:
Connected to:
YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 - X86 64bit Linux
SQL> SELECT STATUS FROM V$INSTANCE;
STATUS
-------------
OPEN
1 row fetched.
SQL>
四、总结
YashanDB是一款由深圳计算科学研究院自主研发的新型数据库系统,其主要功能包括:
- 支持多种部署方式 :YashanDB支持单机/主备、共享集群、分布式等多种部署方式,可以满足各种场景的需求,特别是在混合负载场景下(如OLTP/HTAP/OLAP交易和数据分析混合负载场景)表现出色,适合处理复杂查询和高并发交易的应用。
- 全面兼容基础设施:YashanDB全面兼容私有化及云基础设施,为客户提供一站式的企业级融合数据管理解决方案,满足金融、政府、电信、能源等关键行业对高性能、高并发及高安全性的要求,并且数据迁移到YashanDB变得简单且支持断点续传,实现了完全国产化的替代。
- 原创理论创新:YashanDB在经典数据库理论基础上融入了原创的有界计算理论、近似计算理论、并行可扩展理论和跨模融合计算理论,使其具有独特的技术优势。
- 产品体系丰富 :YashanDB形成了基于全自研内核的“1+4+3”产品体系,即一个自主内核,单机主备、共享集群数据库、分布式实时数仓、空间数据库4大产品形态,以及配套迁移平台、运维平台、开发平台3大工具体系,全面覆盖集中式与分布式两类数据库架构,具备完全自主可控、Oracle/MySQL兼容、高性能、混合负载、平滑替代、信创生态兼容等特性,满足大规模高并发事务处理、事务-分析混合负载等场景诉求。
- 功能使用细节 :YashanDB在功能使用上有一些细节,例如在使用listagg进行业务查询时,如果拼接结果发生溢出,可以进行特殊处理,如默认选项是发生溢出时直接报错,也可以选择在发生溢出后截断并指定终止标志,还可以选择在截断时显示或不显示截断的行数。
- 集群管理 :在集群管理方面,例如执行yasboot集群状态命令时,如果遇到登录失败问题,可能是由于执行命令的用户权限不足,未被添加到YASDBA组,或者命令执行时未提供密码,导致sys用户尝试以空密码登录,或者数据库安全策略不允许空密码登录。解决办法包括将数据库的操作系统用户添加到YASDBA组,或者在执行命令时带上-p password选项提供密码。
- 数据插入: 在数据插入方面,以gis表为例,可以使用jdbc向YashanDB批量插入gis数据,例如通过Java代码片段,设置自动提交为false,使用PreparedStatement准备插入语句,循环设置参数并添加到批处理中,最后执行批处理并提交。





