# MYG-SQL **Repository Path**: medihbt/mygsql ## Basic Information - **Project Name**: MYG-SQL - **Description**: 一个简单的数据库系统,使用C++编写。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-06 - **Last Updated**: 2024-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MYG-SQL数据库系统 --- 一个简单的数据库程序,基于C++/STL构建。本项目为白忠建老师C++课程的大作业。 > Medi吐槽:这玩意终——于——能正常运行了。这个程序我分了前中后端,后端还有时间做设计,中端与前端只能凭感觉写了。 ## 目录结构 - `bootstrap` -- 用于个人测试的代码, 如果建立git仓库, 那么`bootstrap`**不会被上传**. - `build` -- 构建目录. 在git仓库里**不会上传**. - `docs` -- 文档目录, 除了给各位组员看以外, 还要交差用. 我总有一种感觉, 一边写代码一边写文档似乎不会卡壳... - `src` -- 源码目录, 所有的项目代码都在这里. - `src/base` -- 基础类库 - `src/engine` -- 管理引擎, 提供增删查改的API. - `src/sql-lang` -- 前端&语法分析器, 把SQL源码转化为机器可以处理的形式. - `src/storage` -- 存储引擎, 打算自己写一个. 实际上`src`目录下除了`base`与`storage`文件夹以外各位看着不爽尽管改,毕竟效率第一,咱期末考还有一科嘛. ## 构建指南 该项目依赖CMake完成构建,不需要特定的依赖。构建所需的操作系统为Linux,不限发行版。由于在源码审核时要求使用Make构建,所以在提交作业时会单独创建一个`make-build`文件夹用于Make. **在使用CMake时,你需要:** - 在项目文件夹下新建一个`build`目录 - 执行: ```bash cd build cmake ../src make mv driver/mygsql ./mygsql # 在使用Ninja时,你可以这样: cmake ../src -G Ninja ``` 这样你就可以在构建根目录下获得可执行文件`mygsql`了。 **在使用Make时,你需要**: - 在项目文件夹下执行: ```bash cd make-build make -j10 # 或者你的CPU线程数。该数据库使用了大量的C++新特性,编译非常慢。 mv driver/mygsql mygsql ``` 这样你就可以在`make-build`目录下获得可执行文件`mygsql`了。 ## 关于C++项目的说明 这个项目只是满足任务书要求的一个实现,不保证性能、不保证数据安全,请勿用于生产用途。 该项目的运行平台限于Linux, 倘若未来支持其他平台,我们会在文档里详细说明。 倘若要阅读源码,请移步`src/driver/driver.cpp`, 这里是main函数存放的位置。如果想了解程序的架构,请移步`docs/`目录。 由于时间紧迫、架构设计大修过一次,文档的维护不足,你可能会遇到文档的描述与程序源代码不一致的情况。**凡是遇到文档与程序不一致的地方,一切以程序为准**。不论是文档还是程序中都可能有错误,倘若在审核的过程中发现,请多多包涵。倘若你是一个贡献者,请尽快指出错误。 ## 鸣谢 这是一个团队项目,我(medihbt,存储库持有人)负责架构设计、后端,并指导中端与前端的编写。非常感谢与下述组员的合作,没有他们的付出,我们的项目不可能实现: - [杨东炜](https://gitee.com/yang-dongwei2): 组长,负责文档汇总、中端管理引擎。 - [gypso](https://gitee.com/gyp-so): 负责前端、前端相关文档、需求分析、报告编写。 以上。