├── README.md ├── articles ├── chapter1 │ ├── 变长记录.md │ ├── 块与记录.md │ ├── 定长记录.md │ ├── 磁盘上的数据.md │ └── 记录的crud.md ├── chapter2 │ └── 索引结构 │ │ ├── 什么是索引.md │ │ ├── 多级索引.md │ │ ├── 稀疏索引.md │ │ ├── 稠密索引.md │ │ ├── 辅助索引.md │ │ └── 顺序文件.md └── 什么是db.md ├── pic └── db_design.png ├── pom.xml └── src └── main └── java └── com └── github └── skyisbule └── db ├── Run.java ├── cache ├── PageCache.java ├── PageCacheContainer.java └── PageCacheLRU.java ├── callBack ├── MainLoopObserver.java └── SocketToIOobserver.java ├── concurrent ├── Backer.java ├── CentLocker.java ├── IdBuilder.java ├── LockFileIO.java └── Timer.java ├── config ├── BaseConfig.java ├── CacheConfig.java ├── DbStorageConfig.java └── LogConfig.java ├── exception └── InsertErrorEception.java ├── executor ├── Creater.java ├── Inserter.java ├── Selecter.java └── Updater.java ├── filter └── Filter.java ├── index ├── DenseIndex.java ├── Index.java ├── SparseIndex.java └── bptree │ ├── BPTree.java │ ├── Dictionary.java │ ├── NativeMethods.java │ └── Node.java ├── io └── DbRandomAccessIo.java ├── log ├── Command.java ├── REDO.java ├── SqlLog.java └── UNDO.java ├── page ├── Page.java ├── Segment.java └── SegmentPageContainer.java ├── result ├── DBResult.java └── DBResultType.java ├── struct ├── DbInfo.java ├── DbStruct.java ├── DbTableField.java ├── DbTableStruct.java └── SelectRange.java ├── task ├── CRUDTaskType.java ├── DbCreaterIO.java ├── InsertTask.java ├── IoTask.java ├── SelectTask.java └── Task.java ├── thread ├── DbIoThread.java ├── DbMainLoopThread.java ├── ServerSocketThread.java └── ServerSocketThreadImp.java ├── type ├── IoTaskType.java ├── StoredType.java └── TypeLen.java └── util ├── ByteUtil.java └── TypeUtil.java /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/README.md -------------------------------------------------------------------------------- /articles/chapter1/变长记录.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter1/变长记录.md -------------------------------------------------------------------------------- /articles/chapter1/块与记录.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter1/块与记录.md -------------------------------------------------------------------------------- /articles/chapter1/定长记录.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter1/定长记录.md -------------------------------------------------------------------------------- /articles/chapter1/磁盘上的数据.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /articles/chapter1/记录的crud.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter1/记录的crud.md -------------------------------------------------------------------------------- /articles/chapter2/索引结构/什么是索引.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter2/索引结构/什么是索引.md -------------------------------------------------------------------------------- /articles/chapter2/索引结构/多级索引.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter2/索引结构/多级索引.md -------------------------------------------------------------------------------- /articles/chapter2/索引结构/稀疏索引.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter2/索引结构/稀疏索引.md -------------------------------------------------------------------------------- /articles/chapter2/索引结构/稠密索引.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter2/索引结构/稠密索引.md -------------------------------------------------------------------------------- /articles/chapter2/索引结构/辅助索引.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/chapter2/索引结构/辅助索引.md -------------------------------------------------------------------------------- /articles/chapter2/索引结构/顺序文件.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /articles/什么是db.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/articles/什么是db.md -------------------------------------------------------------------------------- /pic/db_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/pic/db_design.png -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/pom.xml -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/Run.java: -------------------------------------------------------------------------------- 1 | package com.github.skyisbule.db; 2 | 3 | //主启动类 4 | public class Run { 5 | 6 | 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/cache/PageCache.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/cache/PageCache.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/cache/PageCacheContainer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/cache/PageCacheContainer.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/cache/PageCacheLRU.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/cache/PageCacheLRU.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/callBack/MainLoopObserver.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/callBack/MainLoopObserver.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/callBack/SocketToIOobserver.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/callBack/SocketToIOobserver.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/concurrent/Backer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/concurrent/Backer.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/concurrent/CentLocker.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/concurrent/CentLocker.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/concurrent/IdBuilder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/concurrent/IdBuilder.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/concurrent/LockFileIO.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/concurrent/LockFileIO.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/concurrent/Timer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/concurrent/Timer.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/config/BaseConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/config/BaseConfig.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/config/CacheConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/config/CacheConfig.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/config/DbStorageConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/config/DbStorageConfig.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/config/LogConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/config/LogConfig.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/exception/InsertErrorEception.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/exception/InsertErrorEception.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/executor/Creater.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/executor/Creater.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/executor/Inserter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/executor/Inserter.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/executor/Selecter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/executor/Selecter.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/executor/Updater.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/executor/Updater.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/filter/Filter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/filter/Filter.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/index/DenseIndex.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/index/DenseIndex.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/index/Index.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/index/Index.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/index/SparseIndex.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/index/SparseIndex.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/index/bptree/BPTree.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/index/bptree/BPTree.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/index/bptree/Dictionary.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/index/bptree/Dictionary.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/index/bptree/NativeMethods.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/index/bptree/NativeMethods.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/index/bptree/Node.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/index/bptree/Node.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/io/DbRandomAccessIo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/io/DbRandomAccessIo.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/log/Command.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/log/Command.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/log/REDO.java: -------------------------------------------------------------------------------- 1 | package com.github.skyisbule.db.log; 2 | 3 | public class REDO { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/log/SqlLog.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/log/SqlLog.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/log/UNDO.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/log/UNDO.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/page/Page.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/page/Page.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/page/Segment.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/page/Segment.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/page/SegmentPageContainer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/page/SegmentPageContainer.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/result/DBResult.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/result/DBResult.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/result/DBResultType.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/result/DBResultType.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/struct/DbInfo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/struct/DbInfo.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/struct/DbStruct.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/struct/DbStruct.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/struct/DbTableField.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/struct/DbTableField.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/struct/DbTableStruct.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/struct/DbTableStruct.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/struct/SelectRange.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/struct/SelectRange.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/task/CRUDTaskType.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/task/CRUDTaskType.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/task/DbCreaterIO.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/task/DbCreaterIO.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/task/InsertTask.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/task/InsertTask.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/task/IoTask.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/task/IoTask.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/task/SelectTask.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/task/SelectTask.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/task/Task.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/task/Task.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/thread/DbIoThread.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/thread/DbIoThread.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/thread/DbMainLoopThread.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/thread/DbMainLoopThread.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/thread/ServerSocketThread.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/thread/ServerSocketThread.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/thread/ServerSocketThreadImp.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/thread/ServerSocketThreadImp.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/type/IoTaskType.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/type/IoTaskType.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/type/StoredType.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/type/StoredType.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/type/TypeLen.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/type/TypeLen.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/util/ByteUtil.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/util/ByteUtil.java -------------------------------------------------------------------------------- /src/main/java/com/github/skyisbule/db/util/TypeUtil.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyisbule/my-db/HEAD/src/main/java/com/github/skyisbule/db/util/TypeUtil.java --------------------------------------------------------------------------------