Running a wasm-ql Server
A wasm-ql system needs:
- nodeos running the state-history plugin, with either full or recent history
- A database: PostgreSQL or RocksDB
- A database filler
- 1 or more wasm-ql server processes
RocksDB-based system
combo-rocksdb
fills a RocksDB database and processes wasm-ql requests on multiple threads.
PostgreSQL-based system
fill-pg
fills a PostgreSQL database.wasm-ql-pg
uses the database to answer queries. It processes wasm-ql requests on multiple threads.
Connecting to a database
wasm-ql servers use the same connection methods and options as the database fillers.
- PostgreSQL:
fill-pg
sets up a bare database without indexes and query functions. Afterfill-pg
is caught up to the chain, stop it then runinit.sql
in this repository's source directory. e.g.psql -f path/to/init.sql
. - RocksDB:
fill-rocksdb
andcombo-rocksdb
automatically create a full set of indexes.
Testing wasm-ql
cd build
curl localhost:8880/v1/chain/get_table_rows -d '{"code":"eosio", "scope":"eosio", "table":"namebids", "show_payer":true, "json":true, "key_type": "name", "index_position": "2", "limit":100}' | json_pp
node ../src/test-client.js
Option matrix
Options:
RocksDB wasm-ql | PostgreSQL wasm-ql | Default | Description |
---|---|---|---|
--wql-threads | --wql-threads | 8 | Number of threads to process requests |
--wql-listen | --wql-listen | 127.0.0.1:8880 | Endpoint to listen for incoming queries |
--wql-allow-origin | --wql-allow-origin | Access-Control-Allow-Origin header. Use "*" to allow any. | |
--wql-wasm-dir | --wql-wasm-dir | . | Directory to fetch WASMs from |
--wql-static-dir | --wql-static-dir | (disabled) | Directory to serve static files from |
--wql-console | --wql-console | (disabled) | Show console output |
--pg-schema | chain | Schema to use | |
--rdb-database | Database path | ||
--rdb-threads | Increase number of background RocksDB threads. Recommend 8 for full history on large chains | ||
--rdb-max-files | Limit max number of open files (default unlimited). This should be smaller than 'ulimit -n #'. # should be a very large number for full-history nodes. | ||
--query-config | --query-config | Query configuration file |