# NoYourSQL **Repository Path**: yangyioryy/no-your-sql ## Basic Information - **Project Name**: NoYourSQL - **Description**: 一个自定义的数据库管理系统,提供命令行界面进行数据库操作。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-08 - **Last Updated**: 2025-09-16 ## Categories & Tags **Categories**: database-service **Tags**: None ## README # NoYourSQL 数据库管理系统 一个基于C/S架构的自定义数据库管理系统,提供CLI命令行和Web浏览器两种客户端接入方式,支持高性能事务处理和并发控制。 ## 系统架构 ```mermaid graph TD %% 声明图表方向为从上到下 %% 定义客户端模块 subgraph "客户端 (Clients)" cli["CLI客户端 (命令行)"] web["Web客户端 (浏览器)"] end %% 定义服务端模块 subgraph "服务端 (Server)" webServer["Web服务器 (Flask:5000)"] end %% 定义数据库模块 subgraph "数据库 (Database)" dbServer["数据库服务器 (db_server.py)"] subgraph "内部组件" storage["🗄️ 存储引擎"] transaction["⚡ 事务管理"] bplus["🌳 B+树索引"] log["📝 日志恢复"] end end %% --- 核心连接关系 (已按您的图片修正) --- %% 1. Web客户端的访问路径 web --> webServer --> dbServer %% 2. CLI客户端的访问路径 (直连数据库) cli --> dbServer %% 3. 数据库与其内部组件的从属关系 dbServer --- storage dbServer --- transaction dbServer --- bplus dbServer --- log ``` ## 快速开始 ### 1. 启动数据库服务器(必需) 数据库服务器是系统的核心,必须首先启动: ```bash # 方式一:使用默认配置启动 python server/db_server.py # 方式二:自定义配置启动 python server/db_server.py --host 127.0.0.1 --port 8080 --max-connections 100 ``` **服务器参数说明:** - `--host`: 服务器绑定地址(默认: 127.0.0.1) - `--port`: 服务器监听端口(默认: 8888) - `--max-connections`: 最大并发连接数 - `--db-path`: 数据库文件路径 - `--buffer-size`: 缓冲池大小 ### 2. 客户端接入方式 #### 方式一:CLI命令行客户端(推荐) **安装CLI客户端:** 1. 以管理员身份运行命令提示符 2. 执行安装脚本: ```bash install.bat ``` 3. 重启命令提示符 4. 现在可以在任意位置使用: ```bash noyoursql ``` **CLI使用方法:** ```bash # 启动交互式CLI界面 noyoursql # 显示版本信息 noyoursql --version # 启用调试模式 noyoursql --debug ``` **CLI内置命令(部分):** - `help` - 查看所有可用命令 - `version` - 显示版本信息 - `connect ` - 连接到数据库服务器 - `explain ` - 显示SQL执行计划 - `quit` - 退出程序 #### 方式二:Web界面客户端 启动Web服务器: ```bash python web/back/app.py ``` 然后在浏览器中访问:http://127.0.0.1:5000 **Web API端点:** - `POST /api/login` - 用户登录 - `POST /api/logout` - 用户登出 - `GET /api/status` - 登录状态检查 - `POST /api/execute` - 执行SQL查询(需认证) - `GET /api/health` - 健康检查 ## 系统特性 ### 核心功能 - ✅ 完整的SQL解析和执行 - ✅ 事务ACID特性支持 - ✅ 并发控制和同步 - ✅ B+树索引结构 - ✅ 日志记录和事务回滚 - ✅ 主键和外键约束 ### 存储引擎 - **缓冲池管理**: LRU替换算法 - **页面管理**: 4KB页面大小 - **B+树索引**: 支持点查询性能优化 - **事务日志**: WAL(Write-Ahead Logging) ### 网络协议 - **消息格式**: TCP通信协议格式 - **连接复用**: 支持多客户端并发 - **会话管理**: session级别独立的事务上下文 ## 开发和测试 ### 运行测试 ```bash # 运行所有测试 python -m pytest # 运行特定模块测试 python -m pytest engine/storage/test/ python -m pytest sql_compiler/test/ python -m pytest client/test/ ``` ### 项目结构 ``` no-your-sql/ ├── cli/ # CLI客户端 │ └── main.py # CLI程序入口 ├── client/ # 客户端SDK │ ├── db_client.py # 数据库客户端类 │ └── test/ # 客户端测试 ├── engine/ # 数据库引擎 │ ├── executor/ # 查询执行器 │ ├── storage/ # 存储引擎 │ └── system.py # 系统管理 ├── network/ # 网络通信 │ ├── server.py # 网络服务器 │ ├── client.py # 网络客户端 │ └── protocol.py # 通信协议 ├── server/ # 服务器端 │ ├── db_server.py # 数据库服务器主程序 ⭐ │ ├── engine_adapter.py # 引擎适配器 │ ├── session_manager.py # 会话管理 │ └── sql_handler.py # SQL处理 ├── sql_compiler/ # SQL编译器 │ ├── lexer.py # 词法分析 │ ├── parser.py # 语法分析 │ ├── semantic.py # 语义分析 │ ├── planner.py # 查询规划 │ └── explain.py # 执行计划 ├── storage/ # 底层存储 │ ├── disk_manager.py # 磁盘管理 │ ├── buffer_pool_manager.py # 缓冲池 │ └── lru_replacer.py # LRU替换 ├── web/ # Web界面 │ ├── back/ │ │ └── app.py # Web服务器主程序 ⭐ │ └── front/ # 前端界面 ├── utils/ # 工具模块 ├── install.bat # 安装脚本 ⭐ ├── uninstall.bat # 卸载脚本 └── noyoursql.bat # Windows启动脚本 ``` ## 部署说明 ### 生产环境部署 1. **启动数据库服务器**: ```bash python server/db_server.py --host 0.0.0.0 --port 8080 --max-connections 200 ``` 2. **启动Web服务**(可选): ```bash python web/back/app.py ``` 3. **配置防火墙**: - 开放数据库端口(默认8080) - 开放Web端口(默认5000) ### 系统要求 - **操作系统**: Windows 10/11 (主要支持) - **Python版本**: 3.6+ - **内存**: 建议4GB以上 - **磁盘**: 至少1GB可用空间 ## 故障排除 ### 常见问题 1. **服务器启动失败** - 检查端口是否被占用 - 确认Python路径正确 - 查看错误日志 2. **客户端连接失败** - 确认服务器已启动 - 检查网络连接 - 验证端口配置 3. **CLI全局命令不可用** - 重新运行 install.bat - 重启命令提示符 - 检查PATH环境变量 4. **中文乱码问题** - 设置命令提示符编码:`chcp 65001` - 确保使用UTF-8编码 ### 日志查看 ```bash # 查看系统日志 tail -f noyoursql.log # 查看存储引擎日志 tail -f engine/storage/test/noyoursql.log ``` ## 版本信息 - **当前版本**: 1.0.0 - **架构**: C/S (客户端-服务器) - **许可证**: MIT ## 贡献指南 欢迎提交Issue和Pull Request来帮助改进项目! ## 联系我们 如有问题或建议,请通过项目Issue页面联系我们。