Iceberg
The Iceberg connector (CONNECTOR_TYPE=iceberg) translates GQL queries into
Trino-dialect SQL with fully-qualified table references
(catalog.schema.table) and executes them against Iceberg tables via Trino’s
REST API. It requires a
mapping file that maps graph patterns to
Iceberg tables.
1. Start Trino with Iceberg
docker network create memgql-net
docker run -d --rm \
--name trino-dev \
--network memgql-net \
-p 8080:8080 \
trinodb/trino:latest2. Seed data
docker exec -i trino-dev trino << 'SQL'
CREATE SCHEMA IF NOT EXISTS iceberg.default;
CREATE TABLE IF NOT EXISTS iceberg.default.persons (
id INTEGER,
name VARCHAR,
age INTEGER
);
CREATE TABLE IF NOT EXISTS iceberg.default.companies (
id INTEGER,
name VARCHAR
);
CREATE TABLE IF NOT EXISTS iceberg.default.knows (
from_id INTEGER,
to_id INTEGER
);
CREATE TABLE IF NOT EXISTS iceberg.default.works_at (
person_id INTEGER,
company_id INTEGER
);
INSERT INTO iceberg.default.persons VALUES (1, 'Alice', 30), (2, 'Bob', 25);
INSERT INTO iceberg.default.companies VALUES (1, 'Acme Corp');
INSERT INTO iceberg.default.knows VALUES (1, 2);
INSERT INTO iceberg.default.works_at VALUES (1, 1);
SQL3. Start MemGQL
docker run --rm \
--name memgql \
--network memgql-net \
--stop-timeout 2 \
-p 7688:7688 \
--env CONNECTOR_TYPE=iceberg \
--env TRINO_URL=http://trino-dev:8080 \
--env TRINO_CATALOG=iceberg \
--env TRINO_SCHEMA=default \
--env MAPPING_FILE=/data/mapping.json \
--env BOLT_LISTEN_ADDR=0.0.0.0:7688 \
-v ./mapping.json:/data/mapping.json \
memgraph/memgql:latest4. Connect
mgconsole --port 76885. Query
MATCH (p:Person) RETURN p.name, p.age;MATCH (p:Person)-[:WORKS_AT]->(c:Company) RETURN p.name, c.name;MATCH (a:Person)-[:KNOWS]->(b:Person) RETURN a.name, b.name;For environment variables, see Configuration.