Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tobidi0410/kysely-sqlite-http
An Kysely dialect for querying data from statically hosted sqlite databases
https://github.com/tobidi0410/kysely-sqlite-http
database dialect gh-pages http kysely sqlite static-site vfs
Last synced: 14 days ago
JSON representation
An Kysely dialect for querying data from statically hosted sqlite databases
- Host: GitHub
- URL: https://github.com/tobidi0410/kysely-sqlite-http
- Owner: ToBiDi0410
- Created: 2024-11-01T14:47:59.000Z (14 days ago)
- Default Branch: main
- Last Pushed: 2024-11-01T15:28:05.000Z (14 days ago)
- Last Synced: 2024-11-01T15:33:31.345Z (14 days ago)
- Topics: database, dialect, gh-pages, http, kysely, sqlite, static-site, vfs
- Language: TypeScript
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Kysely SQLite HTTP
Kysely SQLite HTTP allows you to run queries on a remote sqlite database without fetching the entire database by only fetching fragments relevant to the query.
It wraps the [sql.js-httpvfs](https://github.com/phiresky/sql.js-httpvfs) library and provides a simple kysely-compatible interface that is similar to the interface of [sql.js-httpvfs](https://github.com/phiresky/sql.js-httpvfs).# Features
- ๐งต Runs the queries in a web worker so queries do not block the main thread
- ๐ Only fetches data relevant to the queries, which reduces bandwidth usage
- ๐ Speeds up queries on remote HTTP(S) databases drastically
- ๐ Uses SQLite speed-optimizations (such as indices for queries)
- ๐ ๏ธ Works with Kysely for creating type-safe queries# Usage
## Example code
```javascript
import { Kysely } from 'kysely';
import { SqliteHttpDialect } from 'kysely-sqlite-http';
import { type Database } from './database.ts'; //Your database definitionconst dialect = new SqliteHttpDialect({
debug: true,
/* These options match the ones needed for sql.js-httpvfs */
maxBytesToRead: 10 * 1024 * 1024,
fileConfigs: [
{
from: "inline",
config: {
serverMode: "full",
requestChunkSize: 4096,
url: "./fancyRemote.db"
}
}
]
});export const db = new Kysely({
dialect,
});
```
Learn more about the options at https://github.com/phiresky/sql.js-httpvfs/tree/master?tab=readme-ov-file#usage## Installation
Installable via NPM Repository```sh
npm install kysely-sqlite-http
# or...
pnpm install kysely-sqlite-http
```## Optimization
To speed up queries you can run the following queries on your SQLite database:
```sql
-- first, add whatever indices you need. Note that here having many and correct indices is even more important than for a normal database.
pragma journal_mode = delete; -- to be able to actually set page size
pragma page_size = 1024; -- trade off of number of requests that need to be made vs overhead.insert into ftstable(ftstable) values ('optimize'); -- for every FTS table you have (if you have any)
vacuum; -- reorganize database and apply changed page size
```
There are other methods to speed up queries, please checkout the actual driver implementation for this.Learn more at https://github.com/phiresky/sql.js-httpvfs/tree/master?tab=readme-ov-file#usage
# โ ๏ธ Maintenance notice
This repository was created as part of a private project and therefore, it is not actively maintained!
I will do my best to fix bugs as quickly as possible and process your pull requests but i won't be adding new features.# Credits
- [sql.js-httpvfs](https://github.com/phiresky/sql.js-httpvfs) for creating the SQLite HTTP-VFS driver
- [kysely](https://github.com/kysely-org/kysely) for creating an awesome query builder
- [SQLocal/README.md](https://github.com/DallasHoff/sqlocal/blob/main/README.md) for inspiration on this README