Skip to content

Commit f309d7e

Browse files
committed
doc: change readme
1 parent 0aa1fca commit f309d7e

File tree

1 file changed

+3
-68
lines changed

1 file changed

+3
-68
lines changed

README.md

Lines changed: 3 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,7 @@
11
# MiniSQL
22

3-
本框架参考CMU-15445 BusTub框架进行改写,在保留了缓冲池、索引、记录模块的一些核心设计理念的基础上,做了一些修改和扩展,使之兼容于原MiniSQL实验指导的要求。 以下列出了改动/扩展较大的几个地方:
3+
![](https://raw.githubusercontent.com/Yifei-Zhuang/minisql/master/assets/report_0.png)
44

5-
- 对Disk Manager模块进行改动,扩展了位图页、磁盘文件元数据页用于支持持久化数据页分配回收状态;
6-
- 在Record Manager, Index Manager, Catalog Manager等模块中,通过对内存对象的序列化和反序列化来持久化数据;
7-
- 对Record Manager层的一些数据结构(`Row``Field``Schema``Column`等)和实现进行重构;
8-
- 对Catalog Manager层进行重构,支持持久化并为Executor层提供接口调用;
9-
- 扩展了Parser层,Parser层支持输出语法树供Executor层调用;
5+
![](https://raw.githubusercontent.com/Yifei-Zhuang/minisql/master/assets/report_1.png)
106

11-
此外还涉及到很多零碎的改动,包括源代码中部分模块代码的调整,测试代码的修改,性能上的优化等,在此不做赘述。
12-
13-
注意:为了避免代码抄袭,请不要将自己的代码发布到任何公共平台中。
14-
15-
### 编译&开发环境
16-
17-
- Apple clang version: 11.0+ (MacOS),使用`gcc --version``g++ --version`查看
18-
- gcc & g++ : 8.0+ (Linux),使用`gcc --version``g++ --version`查看
19-
- cmake: 3.20+ (Both),使用`cmake --version`查看
20-
- gdb: 7.0+ (Optional),使用`gdb --version`查看
21-
- flex & bison (暂时不需要安装,但如果需要对SQL编译器的语法进行修改,需要安装)
22-
- llvm-symbolizer (暂时不需要安装)
23-
- in mac os `brew install llvm`, then set path and env variables.
24-
- in centos `yum install devtoolset-8-libasan-devel libasan`
25-
- https://www.jetbrains.com/help/clion/google-sanitizers.html#AsanChapter
26-
- https://www.jianshu.com/p/e4cbcd764783
27-
28-
### 构建
29-
30-
#### Windows
31-
32-
目前该代码暂不支持在Windows平台上的编译。但在Win10及以上的系统中,可以通过安装WSL(Windows的Linux子系统)来进行
33-
开发和构建。WSL请选择Ubuntu子系统(推荐Ubuntu20及以上)。如果你使用Clion作为IDE,可以在Clion中配置WSL从而进行调试,具体请参考
34-
[Clion with WSL](https://blog.jetbrains.com/clion/2018/01/clion-and-linux-toolchain-on-windows-are-now-friends/)
35-
36-
#### MacOS & Linux & WSL
37-
38-
基本构建命令
39-
40-
```bash
41-
mkdir build
42-
cd build
43-
cmake ..
44-
make -j
45-
```
46-
47-
若不涉及到`CMakeLists`相关文件的变动且没有新增或删除`.cpp`代码(通俗来说,就是只是对现有代码做了修改) 则无需重新执行`cmake..`命令,直接执行`make -j`编译即可。
48-
49-
默认以`debug`模式进行编译,如果你需要使用`release`模式进行编译:
50-
51-
```bash
52-
cmake -DCMAKE_BUILD_TYPE=Release ..
53-
```
54-
55-
#### docker
56-
57-
docker 是一个被广泛使用的容器化测试工具,可以在不同的系统中保持一致的测试环境,避免了环境配置的各种痛苦 如果在上述两(三)个环境中的配置都失败的话,可以在安装docker并启动docker引擎之后,在本目录运行`docker build . -t minisql`,建立docker镜像,之后运行`docker container runr -it -v YourPath:/minisql --name=minisql minisql /bin/bash YourPath:/minisql`(需要在linux环境中运行,windows的解释器应该不是/bin/bash,我不太清楚是啥),这里面YourPath表示你随便一个的文件目录,最好是本目录的上级目录,这样就建立了本地文件夹和镜像文件夹之间的映射关系,之后运行`docker start -a -i minisql`即可启动容器,开始快乐coding~。
58-
59-
### 代码风格
60-
61-
为了避免格式变更产生的冗余的的提交信息,减少我们的阅读障碍,建议使用clion进行开发,打开设置中的onsave: format功能(需要先安装onsave插件),统一代码风格,如果使用的不是clion的话,你应该在提交之前运行`find ./src | egrep ".*\.cpp" | xargs clang-format --style=Google -i`,将代码风格统一为Google
62-
63-
### 测试
64-
65-
**在提交代码之前,一定要确保自己编写的部分能够通过提供的测试!否则可能造成其他人编写的其他模块crash!**
66-
67-
**如果你编写了自己的工具类,并且在其他类中使用,你也应该编写相应的测试代码进行测试。!**
68-
69-
在构建后,默认会在`build/test`目录下生成`minisql_test`的可执行文件,通过`./minisql_test`即可运行所有测试。
70-
71-
如果需要运行单个测试,例如,想要运行`lru_replacer_test.cpp`对应的测试文件,可以通过`make lru_replacer_test`
72-
命令进行构建。之后运行`./test/lru_replacer_test`即可运行测试
7+
![](https://raw.githubusercontent.com/Yifei-Zhuang/minisql/master/assets/report_2.png)

0 commit comments

Comments
 (0)