# bzdb **Repository Path**: zhcms/bzdb ## Basic Information - **Project Name**: bzdb - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-29 - **Last Updated**: 2026-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bzDB `bzDB` 是一个轻量级、单文件核心源码的 C 语言数据库实验项目。 它的目标不是替代成熟数据库,而是提供一个便于学习、实验、嵌入式场景尝试和小型项目验证的数据库内核与配套管理工具。 ## 项目特点 - 单文件核心服务端源码,主逻辑集中在 `bzdb.c` - 支持基础 DDL / DML:`CREATE`、`ALTER`、`DROP`、`INSERT`、`UPDATE`、`DELETE`、`SELECT` - 支持普通索引与全文索引 - 支持中文全文检索 - 支持词典分词、词典热重载与词典发布打包 - 支持基于 `row_id` 的索引存储与增量更新 - 支持 `.off` 元数据、变长存储、重启恢复 - 提供 PHP 管理后台,适合 Web 方式做基础管理 - 提供 Linux / Windows 发布脚本与安装脚本 ## 当前主要能力 ### 数据库内核 - 表创建、删除、重命名 - `ALTER TABLE` 基础能力 - `ADD COLUMN` - `DROP COLUMN` - `RENAME COLUMN` - `MODIFY COLUMN` - `CHANGE COLUMN` - `RENAME TO` - 基础查询、条件过滤、聚合 - 普通索引创建、删除、查询 - 全文索引创建、删除、查询 - 中文分词检索 - 词典导入、查看、增删、重载 ### 存储与索引 - `.off` 结构维护 `row_offset + commit_version + deleted` - `row_id` 在 `UPDATE/DELETE` 后保持稳定 - 普通索引采用 `manifest + segment` 风格增量存储 - 全文索引采用 `manifest + segment` 风格增量存储 - 超过阈值时支持 compaction ### Web 管理 - 通过 socket 连接 bzDB 服务端 - 查看数据库列表、数据表列表 - 浏览表数据 - 查看表结构与 `CREATE TABLE` - SQL 控制台执行语句 - 新增 / 编辑 / 删除记录 - 数据库 JSON 导出 / 导入 - 单文件管理后台:`cms/bzdb_admin.php` ## 仓库结构 ```text bzDB/ ├─ bzdb.c ├─ dict.txt ├─ cms/ │ ├─ bzdb_admin.php │ ├─ index.php │ ├─ init_db.php │ ├─ includes/ │ └─ admin/ ├─ linux/ │ ├─ install_bzdb_service_v0.1.11.sh │ └─ upgrade_bzdb_service_v0.1.11.sh ├─ build_debug.bat ├─ build_debug.ps1 ├─ build_debug.sh ├─ build_release.bat ├─ build_release.ps1 ├─ build_release.sh ├─ build_release_win.sh ├─ publish_linux_install.bat ├─ publish_linux_install.sh ├─ publish_windows_install.bat ├─ publish_windows_install.ps1 ├─ publish_windows_install.sh ├─ install_systemd.sh ├─ upgrade_systemd.sh ├─ bzdb.service ├─ bzdb.env ├─ .gitignore └─ README.md ``` ## 快速开始 ### 1. 编译 bzDB #### Linux / Cygwin ```bash gcc -std=gnu99 -Wall -Wextra -O2 -o bzdb bzdb.c -lpthread ``` #### Windows PowerShell ```powershell .\build_debug.ps1 ``` ### 2. 启动服务 编译完成后启动 `bzdb` 可执行文件即可。 如果需要自定义端口或数据目录,请按你的运行环境设置对应环境变量或服务配置。 ### 3. 使用 PHP 管理后台 后台文件:`cms/bzdb_admin.php` 部署后,在浏览器中访问这个文件即可。 建议在页面中填写: - `host`:bzDB 服务地址 - `port`:bzDB 服务端口 - `username` / `password`:登录账号 - `database`:默认数据库,可留空 - `data_dir`:如果需要本地目录回退,可填写;如果只走 socket,可不依赖它 ## 发布与安装 ### Linux 安装包发布入口 ```bash ./publish_linux_install.sh ``` 或: ```bat publish_linux_install.bat ``` ### Windows 安装包发布入口 ```powershell .\publish_windows_install.ps1 ``` 或: ```bat publish_windows_install.bat ``` ### systemd 相关 仓库中已提供: - `bzdb.service` - `bzdb.env` - `install_systemd.sh` - `upgrade_systemd.sh` 可作为 Linux 服务部署模板使用。 ## 全文检索与词典 当前全文检索主策略为: - 中文:词典最长匹配优先 - 中文兜底:UTF-8 bigram - ASCII:连续 token 词典相关文件: - `dict.txt`:发布包携带的文本词典