I wrote a bit on the rationale behind selecting Sqlite in the docs, I'll copy it here.
> Two reasons primarily, ease of use, and massive multi-tenancy. Sqlite occupies a special niche among SQL database implementations, it's everywhere, and no where. Because it's an embedded database, it's typical not used for websites and mobile app backends. But it has been called the most widely deployed database on the planet due to being included in just about every mobile device. In our tests it has performed very well.
By 'multi-tenancy' I mean multiple databases per server, not multiple tenants per database. Each account gets it's own Sqlite db. We saw < 1ms requests for just about everything we tested (this is time to execute sql, the server adds some overhead). Of course our tables had indexes, and our sql was sane. To protect the service we will be rate limiting, and setting request timeouts. Details to be determined.
We've implemented application level caching with a 'X-Query-Cache' header, basically you'll only re-run a query if the data has change or the cache expires. More info in the docs.
6 comments
[ 3.0 ms ] story [ 25.5 ms ] thread> Two reasons primarily, ease of use, and massive multi-tenancy. Sqlite occupies a special niche among SQL database implementations, it's everywhere, and no where. Because it's an embedded database, it's typical not used for websites and mobile app backends. But it has been called the most widely deployed database on the planet due to being included in just about every mobile device. In our tests it has performed very well.
By 'multi-tenancy' I mean multiple databases per server, not multiple tenants per database. Each account gets it's own Sqlite db. We saw < 1ms requests for just about everything we tested (this is time to execute sql, the server adds some overhead). Of course our tables had indexes, and our sql was sane. To protect the service we will be rate limiting, and setting request timeouts. Details to be determined.
We've implemented application level caching with a 'X-Query-Cache' header, basically you'll only re-run a query if the data has change or the cache expires. More info in the docs.
https://www.lite-engine.com/docs.html#why-sqlite