xmysql-server

command module
v0.0.0-...-d224df5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2022 License: MIT Imports: 8 Imported by: 0

README

XMysql-Server

介绍

xmysql-server 本项目是本人基于现有文档的一个练手项目,加以学习golang,对mysql innodb做一次深入的理解而写的准备。本项目大致分为两个分之 默认分支是参考了tidb的代码,省去了写优化器的麻烦,优化器涉及到了相关论文。

特性

1,存储方式参考innodb。与innodb有所不同,page页面虽然大小16KB,但是有所区别,在后面文档给出。
2, SQL 执行基于火山模型,为什么不是其他?是因为学习的需要。
3, 尽量还原innodb的特性

参考开源项目

1,项目参考了tidb,鉴于优化器的涉及繁琐,本人就不写了,非常复杂。另外tidb的早期版本优化器,去掉了分布式数据库计算节点鲜明的代码,做了些变更。
2,项目参考了https://github.com/AlexStocks/getty,做了一些变更
3,项目参考更改了https://github.com/timtadh/fs2,原版的fs2只是利用了varchar作为btree disk存储,对于mysql page16KB显然是不合适的
4,项目有选择http://github.com/goioc/di 作为IOC的框架,减少样板代码的编写
5,项目涉及etcd,就不手写raft算法了。

Roadmap
  • innodb page 页面的设计实现 index fsp dict xdes
  • innodb row的设计实现
  • innodb btree的设计实现 (未测试)
  • innodb 段的设计实现 (未测试)
  • innodb 区的设计实现 (未测试)
  • mysql的服务器端基于getty改造
  • SQL compiler
  • 基于成本的查询优化器 (基于tidb早期火山模型更改,未完工)
  • 基于成本优化器的执行器
  • mtr的设计实现
  • 事物管理器的设计实现
  • undo 和redo 的设计实现,目前已经实现一部分
  • binlog的设计实现
  • BufferPool的设计实现
  • mysql的tcp协议部分 (未测试)
  • 子查询,join查询,函数等待完成
  • 基于CP的高可用
  • 客户端的设计实现
  • 设计文档说明
安装教程
git clone -b xxx https://github.com/zhukovaskychina/xmysql-server.git

cd xmysql-server&& sh ./build.sh
启动效果

软件架构(待补充)

1,网络层负责解析tcp协议,默认采用大端处理方式。
2,SQL Compiler 负责编译SQL,校验SQL正确性。
3,基于成本的优化器,获取最优路径。
4,基于火山模型负责执行任务并返回结果。

文档(待补充)

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
server
innodb/ast
Package ast is the abstract syntax tree parsed from a SQL statement by parser.
Package ast is the abstract syntax tree parsed from a SQL statement by parser.
innodb/net
* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.
* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL