Pekka Enberg
Pekka Enberg
We currently use file-backed SQLite databases because the basic in-memory SQLite does not seem to support concurrent reads: https://github.com/chiselstrike/chiselstore/commit/75ec0c75950499a91ef5dffcdc368cdc67924e38 Let's look at ways to turn on in-memory again. For example,...
Currently, the replicated Raft log grows unbounded. First, we need to add Raft snapshot support to Little Raft, which allows truncating the log. We then need to add snapshot support...
If a leader crashes after applying a command to the state machine, but before responding to a client, the client will re-try the command, which breaks exactly-once semantics. One way...
Non-deterministic SQL function such as `date()` and `random()` must be evaluated only once. We can do this by evaluating the functions only on leader and replicate the evaluated values to...
We need to persist key and value to a database to make event publishing transactional. To do that, let's switch the `ChiselEvent` to use the `Blob` type, which is a...
If I try to import something that does not exists: ``` import { foo } from "@chiselstrike/bar"; export default async function (req: Request): Promise { foo(); return await req.text() ||...
The documentation lacks any examples of how to update or delete entities: https://docs.chiselstrike.com/Intro/data-access#updating-objects https://docs.chiselstrike.com/Intro/data-access#deleting-objects
There's currently no API to update an entity in-place. Instead, you must first load an entity with a `find*()` call, and then `save()` it. Let's add an `update()` API similar...
We need a `ChiselIterator.skip()` to go with `take()`. The `skip` method can translate to SQL `OFFSET`, but the semantics are bit tricky. Even the simple case is not as simple...