Skip to content

Latest commit

 

History

History

ibis-server

Ibis server

Ibis server is a server base on Python that provides the API for rewriting the queries with Modeling Definition Language (MDL) manifest and connect data source via Ibis. It is built on top of the FastAPI framework.
We still need to run the Java engine for rewriting the queries. In the future, we will redesign the modeling core of java engine to Rust and integrate the modeling core into the Ibis server.
We continuously integrate the Rust core with the Ibis server now.

Application structure

The application consists of three main parts:

  1. ibis-server: a Python web server powered by FastAPI and Ibis
  2. wren-core: a modeling core written in Rust powered by Apache DataFusion
  3. wren-core-py: a Python adapter for the modeling core

Quick Start

Running on Docker

You can follow the steps below to run the Java engine and ibis. Create compose.yaml file and add the following content, edit environment variables if needed (see Environment Variables)

services:
  ibis:
    image: ghcr.io/canner/wren-engine-ibis:latest
    ports:
      - "8000:8000"
    environment:
      - WREN_ENGINE_ENDPOINT=http://java-engine:8080
  java-engine:
    image: ghcr.io/canner/wren-engine:latest
    expose:
      - "8080"
    volumes:
      - ./etc:/usr/src/app/etc

Create etc directory and create config.properties inside the etc directory

mkdir etc
cd etc
vim config.properties

Add the following content to the config.properties file

node.environment=production
wren.directory=/usr/src/app/etc/mdl

Run the docker compose

docker compose up

Running on Local

Requirements:

Clone the repository

git clone [email protected]:Canner/wren-engine.git

Start Java engine for the feature rewriting-queries

cd example
docker compose --env-file .env up

Navigate to the ibis-server directory

cd ibis-server

Create .env file and fill in the environment variables (see Environment Variables)

vim .env

Install the dependencies

just install

Run the server

just run

Contributing

Please see CONTRIBUTING.md for more information.