软件架构
VexDB 系统采用分层架构设计,充分满足了解耦、复用、灵活扩展和高效运维的现代数据库设计原则。

- SQL引擎:负责 SQL 语句的解析、优化,并生成高性能的执行计划。
负责接收 SQL 语句,进行词法、语法解析及语义分析,生成抽象的查询树。随后,基于代价的优化器(CBO)结合数据统计信息、索引情况与系统资源状态,从多种执行策略中选择最优路径,生成高性能的执行计划。 - 执行引擎:高效执行 SQL 引擎生成的计划,调度计算资源。
调度 CPU、内存等计算资源,高效地执行由SQL引擎生成的计划。它实现多种数据操作算法(如连接、排序、聚合),以流水线或批处理方式处理数据,并将结果返回给客户端。 - 存储引擎: 保障数据安全,高效持久化存储和事务管理。
负责数据在磁盘上的持久化存储、缓存管理(Buffer Pool)、事务管理(ACID)、redo恢复及空间分配。它确保数据的一致性、持久性和高效访问。
VexDB 不仅支持用于加速查询的 B-Tree、Hash 等标量索引,更集成了 IVFFlat、IVFPQ、HNSW、DiskANN 等常见的向量检索索引和向标混合索引 HybridANN,用于高效处理高维向量数据的相似性搜索,极大优化了诸如以图搜图、语义检索、推荐系统等AI场景的查询性能。
除了上述模块外,VexDB 还支持如下功能:
- 安全管理:提供如身份鉴别、访问控制、全密态等数据安全保障机制。
- 线程管理:区别于PostgreSQL系数据库的多进程结构,VexDB 采用线程模式。主要线程类型如:
- 业务处理线程:负责接收客户端所有请求、解析SQL和生成执行计划等。
- 日志写线程:将预写日志写入磁盘文件。
- 统计线程:收集表和索引的空间信息和元组信息等,收集到的信息可以被优化器和 autovacuum 使用,还能作为数据库管理员的参考信息。
- 通信管理:支持进行通信协议处理和控制命令信号处理。
- 数据库扩展管理:VexDB 支持扩展机制,允许数据库突破其初始设计的内置功能限制,从通用的关系型数据存储,变成了一个提供强大专用模块的计算平台,支持如 ltree、hstore、PostGIS 等扩展。
- 通用组件:数据库提供的通用组件包括数据字典、内存管理、数据类型、内置函数,提供统一性和可靠性。
- 工具:VexDB 提供客户端管理工具、物理备份/恢复工具、逻辑导入/导出工具等辅助用户使用的封装工具,降低运维难度的同时提升了软件易用性。
- 客户端驱动:支持通过驱动将各种语言编写的应用接入 VexDB 。如JDBC、ODBC、Psycopg2,有助于提高用户的开发效率和可移植性。