All Projects → yixuaz → CMU-15445

yixuaz / CMU-15445

Licence: other
https://www.jianshu.com/nb/36265841

Programming Languages

C++
36643 projects - #6 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to CMU-15445

cmu15-445
💾 CMU 15-445/645: Intro to Database Systems (Fall 2017). A course on the design and implementation of database management systems.
Stars: ✭ 115 (-47.73%)
Mutual labels:  sqlite3, database-systems, buffer-pool, bplustree, write-ahead-log
usqlite
μSQLite library module for MicroPython
Stars: ✭ 52 (-76.36%)
Mutual labels:  sqlite3
Pydbgen
Random dataframe and database table generator
Stars: ✭ 191 (-13.18%)
Mutual labels:  sqlite3
sqllex
The most pythonic ORM (for SQLite and PostgreSQL). Seriously, try it out!
Stars: ✭ 80 (-63.64%)
Mutual labels:  sqlite3
React Native Sqlite 2
SQLite3 Native Plugin for React Native for iOS, Android, Windows and macOS.
Stars: ✭ 217 (-1.36%)
Mutual labels:  sqlite3
sqlite-createtable-parser
A parser for sqlite create table sql statements.
Stars: ✭ 67 (-69.55%)
Mutual labels:  sqlite3
Quick.db
An easy, open-sourced, Node.js database designed for complete beginners getting into the concept of coding.
Stars: ✭ 177 (-19.55%)
Mutual labels:  sqlite3
hybrid-disk-cache
A hybrid disk cache library that utilized both the solid SQLite3 and file system.
Stars: ✭ 19 (-91.36%)
Mutual labels:  sqlite3
xyr
Query any data source using SQL, works with the local filesystem, s3, and more. It should be a very tiny and lightweight alternative to AWS Athena, Presto ... etc.
Stars: ✭ 58 (-73.64%)
Mutual labels:  sqlite3
Mikro Orm
TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL and SQLite databases.
Stars: ✭ 3,874 (+1660.91%)
Mutual labels:  sqlite3
Sqleet
SQLite3 encryption that sucks less
Stars: ✭ 244 (+10.91%)
Mutual labels:  sqlite3
Notadd
A microservice development architecture based on nest.js. —— 基于 Nest.js 的微服务开发架构。
Stars: ✭ 2,556 (+1061.82%)
Mutual labels:  sqlite3
Luki
[Deprecated] The official repository for Luki the Discord bot
Stars: ✭ 21 (-90.45%)
Mutual labels:  sqlite3
Better Sqlite3
The fastest and simplest library for SQLite3 in Node.js.
Stars: ✭ 2,778 (+1162.73%)
Mutual labels:  sqlite3
SQLiteReverse
腾讯课堂《SQLite数据库逆向分析》
Stars: ✭ 118 (-46.36%)
Mutual labels:  sqlite3
Choochoo
Training Diary
Stars: ✭ 186 (-15.45%)
Mutual labels:  sqlite3
Rsqlite
R interface for SQLite
Stars: ✭ 225 (+2.27%)
Mutual labels:  sqlite3
HealthApp
A desktop application to fetch Wikipedia,Google,Disease results and save them as text file,in database.Have a Section to search details about doctors in location
Stars: ✭ 23 (-89.55%)
Mutual labels:  sqlite3
ionic2-PreDB
Simple Ionic 2+ with pre-populated database starter project
Stars: ✭ 14 (-93.64%)
Mutual labels:  sqlite3
ZXDataHandle
简单易用的数据转换和存储框架,支持一行代码将模型、模型数组、Json字符串、字典互转;支持模型映射到sqlite3数据库,无需书写sql
Stars: ✭ 13 (-94.09%)
Mutual labels:  sqlite3

CMU-15445

Schedule site https://15445.courses.cs.cmu.edu/fall2018/schedule.html

Study 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]

  • Lab 3: Concurrency Control Lack info when using 2018 project documentation, so change to 2017
  • Lab 4: Logging & Recovery Lack info during using 2018 project documentation, so change to 2017

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 and CREATE VIRTUAL TABLE 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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].