核心技术
📄字数 4.7K
👁️阅读量 加载中...
强一致
通过事务一致性和数据一致性来保障整个数据库强一致。
事务一致性
事务层采用优化的二阶段提交协议来实现分布式事务,即在节点间的事务能根据数据分布方式自动进行事务切分。同时设置节点服务停止超时时间,不会让整个集群无限阻塞等待。
数据一致性
数据层则采用数据流同步复制方式结合可靠UDP技术,保证数据副本之间的强一致性。
高可用
拥有存储、计算、管理和网络等多层面多领域的高可用能力,从而保证整个集群的高可用。
数据存储高可用
采用数据存储切片技术实现分布式数据存储功能。虚谷数据库提供灵活的数据版本管理功能,数据存储版本数可按需进行配置,最多支持3个数据存储版本(默认1个主数据版本,2个备数据版本)。多版本数据存储模式下主版本轮转分布,副本随机分布的策略将数据均匀分布到整个集群节点中,从而保证存储的高可用,如图1所示。

工作计算高可用
在存算分离部署下,工作节点没有持久化数据,对外服务是完全对等同构的,意味着用户连接到任意一个工作节点即连接到整个数据库集群,如图2所示。
该架构带来的好处是用户在连接数据库的时候,允许工作节点服务停止且不惧单点故障,即使所有工作节点服务停止,也不会对数据存储造成影响,后续直接再次接入工作节点即可恢复访问,可实现自动故障探测和容灾处理。

主控管理高可用
虚谷数据库是中心化的分布式数据库,管理节点虽然没有业务数据,但是也保存了如存储映射等重要信息,所以在架构上设计了管理节点的双活冗余,当一个管理节点服务停止或者故障后,另一个管理节点自动接管,如图3所示。

变更日志高可用
用于收集集群数据变更信息的收集节点,也是采用主备双机方案,在保证事务粒度的情况下也能保证其可靠性。
网络传输高可用
提供多网络并行功能,同一集群内部可配置多路网络进行通讯交互。配置多路网络通讯端口不仅能够提供更高的集群通讯能力,也能为单网络故障(网线、网卡或交换机故障)提供容错,避免单网络故障引起节点服务停止误判或集群不可用,且网络故障修复后可自动重新接入,为集群提供网络服务,如图4所示。

高性能-事务技术
无限制级行级锁
数据存储最小粒度为记录行。管理锁的粒度可以从对象级到行级,行级锁的实现意味可提供极高的并发响应能力。任何情况下不允许锁升级,大幅降低死锁的可能性。
基于代价的路径优化
采用基于代价的路径优化模型,可以让用户的SQL语句根据具体的数据分布情况、索引使用情况、分区情况、联合查询情况来做最优的路径选取调整,从而使SQL执行时间最短。
多版本并发控制技术
完整实现MVCC多版本并发控制,维持一个数据的多个版本使读写操作没有冲突,避免复杂事务环境中的读写操作冲突,提供更好的数据库响应性能。基于MVCC技术,实现读已提交(Read Committed)隔离级别,支持高并发场景下的事务处理。
集群可靠UDP技术
采用UDP(User Datagram Protocol)封包格式通用接口,且在底层包装改造了一套可靠的UDP协议,大量减少性能损耗。
网络 RDMA 协议支持
提供的 RDMA 功能可直接进行内存访问,降低网络时延和CPU占用率,数据从一个系统快速移动到远程系统存储器中,达到高带宽、低时延和低资源占用。支持 Infiniband 和 RoCE v2 的 RDMA 协议支持,并非使用万兆接口简单调用。
存储数据压缩技术
当数据重复频繁或在各数据块中可预见的位置上出现时,这些冗余部分通过数据压缩技术除去或减少。利用数据相关规律周期性变换去冗余,加速数据传递效率。
多核NUMA优化
基于多核架构进行了深度优化,对关键数据结构分区,降低数据访问频次。利用 NUMA(Non Uniform Memory Access)优化降低底层数据流转冲突,关键业务线程绑核,避免核间线程漂移。
元数据分布式管理
将系统元数据表当做堆表,并分散到各个节点中进行管理,避免由于表过多导致访问元数据表成为性能瓶颈。
高性能-分析技术
并行扫描技术
能完全调度整个集群节点的计算和I/O能力来对用户发起的SQL请求进行处理,并行处理过程自动完成,以整个集群算力为用户提供高效的大数据查询分析能力,如图5所示。

智能单元扫描技术
基于计算向存储靠拢的设计理念,开发了独特的智能单元扫描技术(算子下推),让数据在存储节点进行裁剪计算后再汇聚,从而减少了网络开销,降低了计算资源消耗,以提升数据库对SQL的响应速度和吞吐量,如图6所示。

当用户发起扫描请求并只对数据表的部分字段与限制条件进行检索的时候,定位到存储节点的存储单元将按照指定输出列与符合限制条件进行数据裁剪,仅仅向工作节点返回少量符合用户需求的数据,再将返回的数据用于统计运算,最后返回给用户。整个过程以最少的资源消耗达到高效迅速完成运算的效果。
复杂统计分析函数
提供一系列专门用于解决复杂报表统计需求的分析函数,支持排名分析函数与聚合分析函数。分析函数在一组与当前行相关的表行之间执行计算,与使用聚合函数可以完成的计算类型类似。但与常规的聚合函数不同的是,使用分析函数不仅可以保留所有原始行记录,还可以进行分组数据分析。
高安全
拥有高度安全的数据防控策略,包括访问控制、身份认证、存储加密等等。
自主研发安全可控
虚谷数据库是一款研发历时十数年,并投入市场经过近十年的验证的成熟商业化关系型数据库产品,其核心组件包括管理、存储和计算,均为自主研发,并未使用任何开源框架。数据库产品源码经过工信部赛普中心测评认证,除了通用字符集、标准SQL语法定义等部分代码,自有率达99.6%,完全避免了开源软件带来的安全风险和技术限制。
复杂密钥身份验证
能够根据用户在系统中的用户名和密码确定该用户是否具有登录的权限及其在系统中的系统级角色,以此决定该用户能够做什么和不能够做什么。
密码长度区间为[ 3 , 32 ],密码复杂度能设置多种字符、字母、数字混合,有效保证数据库身份登录的安全性,避免被字典攻击破解。用户登录失败3次后数据库将锁定该用户IP地址,在3分钟内禁用该IP地址登录请求,从而防御来自攻击IP地址的用户名和密码刺探,同时避免用户密码暴力破解攻击。
普通自主访问控制
根据用户的权限执行自主访问控制。用户权限是指用户在数据对象上能够执行的操作。规定用户权限要考虑三个因素:用户、数据库对象和操作,即什么用户在哪些数据库对象上可执行什么操作。所有的用户权限都要记录在系统表(数据字典)中,对用户存取权限的定义称为授权,当用户提出操作请求时,服务端根据授权情况进行检查,以决定是执行操作还是拒绝执行,从而保证用户能够存取用户权限范围内的数据,用户权限范围外的数据存取将被拒绝。
标记强制访问控制
利用策略和标记来实现数据库的强制访问机制。强制访问控制主要是针对用户和元组,用户操作元组时,不仅要满足自主访问控制的权限要求,还要满足用户和元组之间标记的相容性。这样,就避免了出现管理权限全部由数据库管理员一人负责的局面,同时也相应地增强了系统的安全性,因为自主访问控制权限只能达到列级,而安全策略可以控制到记录级。
存储传输加密保障
实现了对存储数据的加密,为用户的隐私数据提供更加可靠的保护。加密方法是一种既依赖算法又依赖密码的加密方法,即便加密算法被攻击者识破,在没有密钥的情况下,攻击者也无法解读数据文件。此外,启用存储加密后,对整个系统的运行效率影响很小。支持TCP/IP方式与SSL方式的数据库会话,SSL会话是在TCP/IP连接基础上,进行传输通道加密,保证传输安全。
网络访问规则控制
数据库需部署于复杂网络环境,因此实现网络访问控制,以准确控制数据库访问来源网络区域,设置黑白名单。黑白名单能对数据库(Database)和用户(User)按照指定的网络区域(IP地址或IP地址段)进行网络安全管理,有效保证了数据库在复杂网络环境的数据和行为安全。
高扩展
基于其优异的分布式架构特点,拥有动态增加节点的能力,可以在集群能力遇到瓶颈的时候进行扩展。如果计算能力不足可以扩展工作节点,存储能力不足则扩展存储节点,或存储计算同时扩展。计算节点由于本身不存储数据,所以扩展后即可参与计算任务从而增加整个数据库并发能力和计算能力。存储节点由于数据存储与逻辑表无关,是按物理CHUNK进行存储的,所以在扩展存储节点后,原集群存储可以按CHUNK流转至新的存储节点完成节点扩展,扩展后可有效缓解应用瓶颈,增加集群的容量和性能。
拥有在线动态扩展能力,数据的转移(复制)不需要人工干预,工作负载在存储节点之间动态分发,无需停机,实现系统的透明扩展,如图7和图8所示。


数据采用的是3版本策略,本来均匀分布在5个节点上,此处加入了1个新节点,已有节点数据存储根据规则动态均衡到新加入节点且存储误差的比例控制在5%以内,实现主版本轮转分布,副本随机分布的特性。加上工作节点对等同构,所以应用连接任一工作节点即可接入数据库,那么就会对在线的动态扩展无感知,实现“热加入”。
高兼容
具备高兼容技术,能够与各种硬件平台、操作系统、应用程序、标准接口和字符集兼容,方便集成使用,如表1所示。
兼容类型 | 兼容说明 |
---|---|
硬件平台支持 | 兼容多种硬件体系,可运行于X86、SPARC、POWER、ARM、MIPS等硬件体系之上,并与各国产硬件平台进行过兼容性测试,测试平台包括:浪潮、联想、曙光、华为等。 |
操作系统支持 | 完全基于C/C++语言开发,具有良好的跨平台特性。 支持Windows系列、Linux系列、Unix、AIX等国外操作系统。 支持国产统信UOS、中标麒麟、银河麒麟、华为欧拉、中科方德、深度、普华、凝思等国产操作系统。 |
应用开发支持 | 支持多种主流集成开发环境和主流系统中间件。 开发环境:Visual Studio、.NET、C++ Builder、Qt、Eclipse、IntelliJ IDEA等。 中间件:WebLogic、Websphere、Tomcat、东方通、中创、金蝶等。 |
标准接口支持 | 符合SQL-92/SQL-99/SQL-2003、ODBC、JDBC等国际标准或行业标准,提供所有数据库标准接口。支持SQL-92标准的所有数据类型。 提供的数据库标准接口:ODBC接口驱动程序(符合ODBC 3.0标准)、JDBC接口驱动程序(符合JDBC 3.0标准)。 兼容的数据库特性:兼容其他数据库的数据类型、函数和语法特性,与Oracle数据库高度兼容,如包(package)、存储过程(PL/SQL)、存储函数等。 |
字符集支持 | 完全支持UTF-8、GB2312、GB18030、GBK、Binary等常用字符集。 |
高易用
易部署
采用轻量化、低依赖部署模式,基础环境检测评估、安装包集群下发及一键配置启动,降低部署难度,快速服务上线。易学习
提供易于学习和理解的各类操作手册、教程和文档,使新手能够快速上手并掌握基本操作。易操作
提供直观、易于使用的用户界面管理工具,使数据库管理员和开发人员能够轻松地进行各种操作,如数据操作、对象管理等。易维护
提供可视化数据库监控以及易于维护的功能,全面掌握数据库状态,降低数据库维护成本和减少停机时间。易扩展
基于无共享对等处理架构,节点动态扩展,存储可实现自动均衡,方便能力扩展,以适应不断增长的数据量和业务需求。兼容性
支持多种操作系统和编程语言,方便与其他系统的集成和开发。数据库周边生态适配丰富,国产化应用上线快速融入。配套齐
支持多样的数据库生命周期工具,数据库开发、开发工具支持、数据迁移支持、数据同步支持、数据校验比对、数据库监控及优化,全面辅助支持数据库各类配套操作。