| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
从零开始的SQL
我们机器人学院团学的成员在收集和处理学生信息的过程中,会遇到各种各样问题和困难。例如将两张表的数据进行合并,我们会遇到表中有的列的内容是一样的,但是顺序不一样的情况,此时我们将两张表合并的过程便将变得困难。再例如我们要查询某个数据且与之相关的数据,或将表中的数据按照某个特定的顺序排列,且只输出我想要的部分时,这些操作将会变得复杂。所以我们想要做的项目是一个可以中断运行的了(数据存入硬盘不单单存入内存)的支持sql语法的数据库。
好的以上都是瞎扯的,做这个的原因纯粹是因为自己感兴趣,因此选为数据结构期末大作业的选题而已。
这个项目计划从最底层的文件读写、文件指针操作的数据库引擎(模仿InnoDB)写起,写到上层的web客户端(类似phpMyAdmin那种)。
老师表示:是谁给你的信心,让你觉得能在两周内把至少规划一个月的项目完成的?
。。。我无言以对。确实,我也觉得不可能完成,但当时我明明问过另一个老师做数据库可不可以,老师很愉快的表示当然可以,只要能体现数据结构和算法就行。于是项目就这样开始了。
更新这段README的时间是2020年12月30日,而答辩在29日就已经结束,很显然我没能完成。
但是这并没有什么关系,反正底层框架已经写得有模有样了,也能演示一些操作,用来应付15分钟的答辩是毫无压力,顺便还拿了个全班第一ヾ(•ω•`)o
虽然答辩已经结束了,但是这个项目我会继续做下去,应该也许大概会有同学朋友和我一起做,当然也欢迎各位提交pull request.
项目预计在下学期开学前完成。
以上需求分析和数据结构与算法毫无疑问也是用来应付答辩的,真实需求分析的话没有,反正做这个只是感兴趣玩玩,建来学习的而已。
项目使用CMake进行配置,目前通过的编译环境有WSL Ubuntu 20-gcc和Windows 10 - MSVC14.28.29333
项目有两个target:server 和 client,服务端和客户端。两个target的源文件分别位于Server_Src和Clinet_Src,头文件一并位于Inc.
环境:安装有cmake和完整c++工具链的Windows或Linux
新建一个文件夹 build作为项目生成目录,cd进目录,执行 cmake ${源码路径(相对路径或者绝对路径)},执行 cmake --build ./ --target ${server或cilent},然后项目编译就完成了。
大致上由三部分组成:服务器引擎、管理层、通信层。大致调用流程为:通信层初始化,接收到握手请求后新建一线程,构建管理层,负责解析,管理层再构建服务器引擎,进行具体的数据读写操作,去对接这一连接。
graph TD;
程序开始-->开始监听-->接收握手请求
接收握手请求-->创建线程1-->构造管理层1-->调用数据库引擎1
接收握手请求-->创建线程2-->构造管理层2-->调用数据库引擎2
接收握手请求-->more1-->more2-->more3
接收握手请求-->创建线程n-->构造管理层n-->调用数据库引擎n
三个部分都封装成三个类,分别写在三个文件里。
客户端就比较简单,只有一个socket通信层,客户端主要目标是构建多版本的客户端。目前能想到的客户端有:
classDiagram
class 头文件{
c/c++
java
python
php
}
链接库 <|--头文件
链接库:.lib
链接库:.dll
链接库:.so
Shell <|--头文件
Shell:Windows cmd
Shell:Linux bash
GUI <|--头文件
GUI:QT
GUI:XAML
GUI:php(web)
详见PPT
❤的话就点个star⭐呗ヾ(•ω•`)o
| Back | FazBrowse Home | New Git URL |