Firebolt
Connect & Ingest data from / to a Firebolt database
Firebolt is a high-performance analytical database. Sling connects directly to the HTTP query endpoint of a self-hosted Firebolt Core engine, so the Firebolt SDK is not required.
Setup
The following credentials keys are accepted:
host(required) -> The hostname / ip of the engineport(optional) -> The port of the instance. Default is3473.database(optional) -> The database to run queries against. Default isfirebolt.schema(optional) -> The default schema Sling uses to resolve unqualified table names. Default ispublic.secure(optional) -> whether to use HTTPS / TLS (true/false). Default isfalse.skip_verify(optional) -> skip TLS certificate verification, for self-signed certificates (true/false). Default isfalse.user(optional) -> Accepted for URL compatibility (alias:username). Firebolt Core does not authenticate, so it is not sent.password(optional) -> Accepted for URL compatibility. Not sent.
Using sling conns
Here are examples of setting a connection named FIREBOLT. We must provide the type=firebolt property:
$ sling conns set FIREBOLT type=firebolt host=<host> port=3473 database=firebolt
# With TLS (and a self-signed certificate)
$ sling conns set FIREBOLT type=firebolt host=<host> port=3473 database=firebolt \
secure=true skip_verify=true
# OR use url
$ sling conns set FIREBOLT url="firebolt://:@host.ip:3473/firebolt?secure=false&skip_verify=false"Environment Variable
See here to learn more about the .env.sling file.
Sling Env File YAML
See here to learn more about the sling env.yaml file.
Examples
Notes
No plain indexes — Firebolt's secondary indexes are specialized (
FULL_TEXT,INVERTED_INDEX,HNSW,SKIP_INDEX) and are not declared through Sling'sindex:option. Usepre_sql/post_sqlto create them.Merge strategies —
insert,update,update_insert(the default) anddelete_insertare all supported, backed byMERGE INTO/INSERT ... SELECT.Transactions — each load runs inside a Firebolt transaction, so a failed load does not leave a partially written table.
Text columns — Firebolt
textis unbounded, so no length is enforced on writes; string columns are created astext.Views — Firebolt views can be read as streams.
Loads are staged — a full-refresh load creates a
<table>_tmptable, fills it, and only then moves the rows into the final object, so readers never see a half-loaded table.
If you are facing issues connecting, give sling assist a try, or reach out to us at support@slingdata.io, on discord or open a Github Issue here.
Last updated
Was this helpful?