An open-source Iceberg Catalog that implements the REST API spec designed to be:
Written with ❤️ for Iceberg + Go, we want to build a REST catalog for the community with the community. Let's explore the full potential of Iceberg catalogs together. Open to contributions, feedback, and feature requests!
go install github.com/Bodo-inc/denali
To install to your $GOPATH/bin
directory.
git clone github.com/Bodo-inc/denali
cd denali
go build .
For manual builds.
1) Start the server: denali start
2) If the server does not find a config.toml
file, it will create one in the config directory (note, this depends on your OS on where it is). Your default text editor will be opened to edit the configuration file.
More details of configuration options are provided below in:
Type | Endpoint | Implemented |
---|---|---|
GET | /v1/config |
|
POST | /v1/oauth/tokens |
❌ Oauth Not Supported Yet |
GET | /v1/{prefix}/namespaces |
|
POST | /v1/{prefix}/namespaces |
|
GET | /v1/{prefix}/namespaces/{namespace} |
|
HEAD | /v1/{prefix}/namespaces/{namespace} |
|
DELETE | /v1/{prefix}/namespaces/{namespace} |
|
POST | /v1/{prefix}/namespaces/{namespace}/properties |
|
GET | /v1/{prefix}/namespaces/{namespace}/tables |
|
POST | /v1/{prefix}/namespaces/{namespace}/tables |
|
POST | /v1/{prefix}/namespaces/{namespace}/register |
🟡 Untested |
GET | /v1/{prefix}/namespaces/{namespace}/tables/{table} |
|
POST | /v1/{prefix}/namespaces/{namespace}/tables/{table} |
|
DELETE | /v1/{prefix}/namespaces/{namespace}/tables/{table} |
|
HEAD | /v1/{prefix}/namespaces/{namespace}/tables/{table} |
|
POST | /v1/{prefix}/tables/rename |
🟡 Untested |
POST | /v1/{prefix}/namespaces/{namespace}/tables/{table}/metrics |
❌ Implemented but Metrics Not Tracked Yet |
POST | /v1/{prefix}/transactions/commit |
❌ Multi-Table Transactions Not Supported Yet |
GET | /v1/{prefix}/namespaces/{namespace}/views |
|
POST | /v1/{prefix}/namespaces/{namespace}/views |
❌ Not Implemented Yet |
GET | /v1/{prefix}/namespaces/{namespace}/views/{view} |
🟡 Untested |
POST | /v1/{prefix}/namespaces/{namespace}/views/{view} |
❌ Not Implemented Yet |
DELETE | /v1/{prefix}/namespaces/{namespace}/views/{view} |
🟡 Untested |
HEAD | /v1/{prefix}/namespaces/{namespace}/views/{view} |
🟡 Untested |
POST | /v1/{prefix}/views/rename |
🟡 Untested |
To configure the database backend the server should use, set the following properties in the configuration file:
[database]
url = "..." # URL string to database. Env: $DENALI_DATABASE_URL
dialect = "..." # Database dialect / type. Env: $DENALI_DATABASE_DIALECT
The server currently supports the following databases / dialects:
Database | Supported | Dialect in Settings | Driver Used |
---|---|---|---|
PostgreSQL | postgres or pgx |
pgx | |
SQLite | sqlite or sqlite3 |
sqlite3 | |
MySQL | 🟡 In Discussion |
If you want to use a different database, please open an issue!
On initialization, the server will automatically set up the database with the necessary tables.
To configure where the warehouse is located, set the following properties in the configuration file:
[warehouse]
path = "..." # Absolute path to warehouse. Env: $DENALI_WAREHOUSE_PATH
Storage | Supported |
---|---|
Local Filesystem | |
S3 | 🟡 Untested |
Azure | 🟡 Untested |
GCS | 🟡 Untested |
Note:
OpenAPI-based generated docs are hosted by the server at http://<base-url>:<port>/docs