Pekka Enberg c28544530e Prepare for asynchronous I/O with page flags
We want to submit I/O asynchronously with io_uring, which means we can
have multiple concurrent lookups to the page that is under I/O.
Therefore, let's add three page flags: up-to-date, locked, and error, so
that the higher level layers can just look up a page, but wait if
there's I/O happening.
2023-11-18 12:19:44 +02:00
2023-11-09 21:11:48 +02:00
2023-09-10 13:48:23 +03:00
2023-08-27 09:59:12 +03:00
2023-09-30 15:40:35 +03:00
2023-09-30 15:40:35 +03:00
2023-09-30 15:40:35 +03:00
2023-09-30 15:40:35 +03:00
2023-10-26 15:02:56 +03:00

Limbo

A modern SQLite-compatible database library built with Rust.

Features

  • SQLite compatibility: SQL dialect (wip) and file format (read-only)
  • Asynchronous I/O support (wip)
  • WebAssembly bindings (wip)

Getting Started

Limbo is currently read-only. You can either use the sqlite3 program to create a database:

$ sqlite3 database.db
SQLite version 3.42.0 2023-05-16 12:36:15
Enter ".help" for usage hints.
sqlite> CREATE TABLE users (id INT PRIMARY KEY, username TEXT);
sqlite> INSERT INTO users VALUES (1, 'alice');
sqlite> INSERT INTO users VALUES (2, 'bob');

or use the testing script to generate one for you:

./testing/gen-database.py

You can then start the Limbo shell with:

$ cargo run database.db
Welcome to Limbo SQL shell!
> SELECT * FROM users LIMIT 1;
|1|Cody|Miller|mhurst@example.org|525.595.7319x21268|33667 Shaw Extension Suite 104|West Robert|VA|45161|`

Developing

Run tests:

cargo test

Test coverage report:

cargo tarpaulin -o html

Run benchmarks:

cargo bench

Run benchmarks and generate flamegraphs:

echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
cargo bench --bench benchmark -- --profile-time=5

Publications

  • Pekka Enberg, Sasu Tarkoma, and Ashwin Rao. 2023. Towards Database and Serverless Runtime Co-Design. CoNEXT-SW 23

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Limbo by you, shall be licensed as MIT, without any additional terms or conditions.

Description
No description provided
Readme 43 MiB
Languages
Rust 76.8%
Tcl 6.6%
C 6.4%
Dart 2.4%
Java 2.3%
Other 5.3%