{"repo":"lucavallin/gnaro","free":true,"listed":false,"github":"https://github.com/lucavallin/gnaro","clone":"git clone https://github.com/lucavallin/gnaro.git","description":"A proto-database inspired by SQLite for educational purposes.","language":"C","stars":89,"topics":["btree","c","database","sqlite"],"license":"MIT","category":"databases-storage","readme_excerpt":"gnaro A proto-database inspired by SQLite for educational purposes. gnaro takes SQLite as a reference because of the limited feature set, and therefore complexity, when compared to other databases. SQLite consists roughly of the following components: - Tokenizer - Parser - Code Generator - Virtual Machine - B-Tree - Pager - OS Interface Tokenizer, Parser and Code Generator are part of the front-end, which takes in a SQL query and returns bytecode for the SQL Virtual Machine. A separate front-end reduces the complexity of each component (e.g. virtual machine does not worry about syntax errors) and allows compiling common queries once and caching the bytecode for improved performance. The Virtual Machine executes the bytecode and interacts with the B-Tree, which is responsible for storing and retrieving data. The Pager is responsible for reading and writing pages to and from disk. The OS Interface is responsible for interacting with the operating system. Usage gnaro can be run using gnaro.db as database file as follows (with the optional -v for verbose output): Setup gnaro requires a number of tools and libraries to be installed to build the project and for development. Dependencies gnaro depends on the following \"non-standard\" libraries: - libcuni1 : used for testing with CUnit - argtable: used to parse command line arguments - rxi/log.c: used for logging gnaro uses a number of LLVM-18-based tools for development, linting, formatting, debugging and Valgrind to check for memory","default_branch":null,"files":null,"tree":[],"storefront":"/r/lucavallin","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/lucavallin/gnaro/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}