Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yixuaz/CMU-15445
https://www.jianshu.com/nb/36265841
https://github.com/yixuaz/CMU-15445
bplustree buffer-pool database-systems sqlite3 write-ahead-log
Last synced: about 2 months ago
JSON representation
https://www.jianshu.com/nb/36265841
- Host: GitHub
- URL: https://github.com/yixuaz/CMU-15445
- Owner: yixuaz
- Created: 2019-04-28T12:04:50.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-06-22T15:44:52.000Z (over 5 years ago)
- Last Synced: 2024-08-01T22:43:53.911Z (5 months ago)
- Topics: bplustree, buffer-pool, database-systems, sqlite3, write-ahead-log
- Language: C++
- Size: 16.7 MB
- Stars: 289
- Watchers: 3
- Forks: 70
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CMU-15445
Schedule site
https://15445.courses.cs.cmu.edu/fall2018/schedule.htmlStudy blog for cmu 15 445
https://www.jianshu.com/nb/36265841`cmu_15445_2017.rar` is the project origin source file.
`cmu_15445_2017_done.rar` is the project solution(including 4 projects). make sure pass all the tests including (tuple.test,vtable.test...)## Target
### 1. Correctness
My Solution make sure cover as most test cases as possible.
* project 1 14 tests
* project 2 ~30 tests
* project 3 20 tests
* project 4 9 tests
And pass at least 1000 times for project 2&3&4
* make check>16/16 Test #16: virtual_table_test ............... Passed 0.72 sec
>100% tests passed, 0 tests failed out of 16
>Total Test time (real) = 38.21 sec
>[100%] Built target check
### 2. Simple and Understandable
* Concise code is always my aim.## Blog [chinese]
- [x] Lab 1: [Buffer Pool](https://15445.courses.cs.cmu.edu/fall2018/project1/)
* [lab 1 study note](https://www.jianshu.com/p/ede089d3d8ad)- [x] Lab 2: [B+ Tree](https://15445.courses.cs.cmu.edu/fall2018/project2/)
* [lab 2a study note](https://www.jianshu.com/p/628a39d03b79)
* [lab 2b study note](https://www.jianshu.com/p/386e36991c64)
* [lab 2c study note](https://www.jianshu.com/p/b83272f7684b)
- [x] Lab 3: [Concurrency Control](https://15445.courses.cs.cmu.edu/fall2017/project3/) Lack info when using 2018 project documentation, so change to 2017
* [lab 3 study note](https://www.jianshu.com/p/087d23a17ce4)
- [x] Lab 4: [Logging & Recovery](https://15445.courses.cs.cmu.edu/fall2017/project4/) Lack info during using 2018 project documentation, so change to 2017
* [lab 4 study note](https://www.jianshu.com/p/88796027112b)
## For self-study, take care using it if u are a student
>Every student has to work individually on this assignment.
Students are allowed to discuss high-level details about the project with others.
Students are not allowed to copy the contents of a white-board after a group meeting with other students.
Students are not allowed to copy the solutions from another colleague.## Origin Readme
### Build
```
mkdir build
cd build
cmake ..
make
```
Debug mode:```
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
```### Testing
```
cd build
//make sure u setup libvtable.so
vim /etc/ld.so.conf
//add one line for /where/you/install/lib
sudo ldconfig
make check
```### Run virtual table extension in SQLite
Start SQLite with:
```
cd build
./bin/sqlite3
```In SQLite, load virtual table extension with:
```
.load ./lib/libvtable.dylib
```
or load `libvtable.so` (Linux), `libvtable.dll` (Windows)Create virtual table:
1.The first input parameter defines the virtual table schema. Please follow the format of (column_name [space] column_type) seperated by comma. We only support basic data types including INTEGER, BIGINT, SMALLINT, BOOLEAN, DECIMAL and VARCHAR.
2.The second parameter define the index schema. Please follow the format of (index_name [space] indexed_column_names) seperated by comma.
```
sqlite> CREATE VIRTUAL TABLE foo USING vtable('a int, b varchar(13)','foo_pk a')
```After creating virtual table:
Type in any sql statements as you want.
```
sqlite> INSERT INTO foo values(1,'hello');
sqlite> SELECT * FROM foo ORDER BY a;
a b
---------- ----------
1 hello
```
See [Run-Time Loadable Extensions](https://sqlite.org/loadext.html) and [CREATE VIRTUAL TABLE](https://sqlite.org/lang_createvtab.html) for further information.### Virtual table API
https://sqlite.org/vtab.html### TODO
* update: when size exceed that page, table heap returns false and delete/insert tuple (rid will change and need to delete/insert from index)
* delete empty page from table heap when delete tuple
* implement delete table, with empty page bitmap in disk manager (how to persistent?)
* index: unique/dup key, variable key