skysql

Frontend-only JSON database compatible with MySQL and Postgres

Usage no npm install needed!

<script type="module">
  import skysql from 'https://cdn.skypack.dev/skysql';
</script>

README

SkySQL

Demo: https://siasky.net/_AYYC9KGq009LF8mD1D2J6yjCoBm0i9yLR64pTX3aOWL6Q/index.html (13 million rows, 615 MB total size)

While MiniSearch and AlaSQL are great in-browser full-text & SQL engines, they can not handle GBs of data because of RAM limits. SkySQL is a bit different. It is a modified Radix-tree (or radix trie) based file index.

Performance

SkySQL stores the data in alphabetical order in multiple files, and even if you has a tons of data, it will make only a few HTTP AJAX requests to find something:

  • 1000 rows = 1 ajax request
  • 1 million rows = 2 requests
  • 1 billion rows = 3 requests
  • 1000 billion rows = 4 requests

To add/update 1 row, you need to change the same amount of files that are required for lookup (1-4). If you're building on Sia Skynet, it is recommended to store the link of the latest index file in a Skynet registry, so your users can access the updated database on the same link.

Use-case examples

Presonally, I'll use SkySQL to host SkyLive 100% to Skynet and to make a fully decentralized search engine, DappDappGo. You can create a searchable dictionary or a decentralized Twitter where users can find other users profile pictures, etc.

Tree index

Developer SETUP

  • Install PostgreSQL or MySQL. For MySQL testing, you can use the generator/examples/example_database.sql.

  • Install NodeJS

  • Include the code from generator/examples/example.js to your project.

Enjoy! SkySQL will