DuckLake auf Leafcloud

Dieses Tutorial überträgt „Public DuckLake on Object Storage“ auf den Object Storage von Leafcloud, einem Cloud-Anbieter aus Amsterdam.

Object Store einrichten

  1. Öffnen Sie das Leafcloud-Dashboard.

  2. Gehen Sie zu Object Store, Containers und legen Sie einen neuen Container an. Wir verwenden den Namen ducklake-storage.

  3. Aktivieren Sie das Kontrollkästchen Public Access und kopieren Sie den Link. Er sieht zum Beispiel so aus:

    https://leafcloud.store/swift/v1/AUTH_f84982a3c5d04bd0846197d8e8ce3ddd/ducklake-storage

OpenStackClient einrichten

  1. Laden Sie die Zugangsdaten von Leafcloud. Gehen Sie oben rechts auf Ihren Benutzernamen, Settings, Identity, Application Credentials, oder öffnen Sie einfach https://create.leaf.cloud/identity/application_credentials/.

  2. Wählen Sie Create Application Credential und laden Sie die entstehenden Dateien app-cred-<your_credential_name>-cred-openrc.sh und clouds.yaml herunter.

  3. Sourcen Sie die Zugangsdaten in Ihrer Shell, um die Umgebungsvariablen zu setzen:

    Terminal window
    source app-cred-<your_credential_name>-cred-openrc.sh
  4. Installieren Sie OpenStackClient in Ihrer bevorzugten Python-Umgebung:

    Terminal window
    pip install python-openstackclient
  5. Legen Sie die Zugangsdaten für den Bucket an:

    Terminal window
    openstack ec2 credentials create
  6. Die Ausgabe sieht etwa so aus:

    +------------+----------------------------------+
    | Field | Value |
    +------------+----------------------------------+
    | access | <32-character hexadecimal value> |
    | links | {'self': '...'} |
    | project_id | <32-character hexadecimal value> |
    | secret | <32-character hexadecimal value> |
    | trust_id | None |
    | user_id | <32-character hexadecimal value> |
    +------------+----------------------------------+
  7. Speichern Sie die ausgegebenen Zugangsdaten.

Rclone einrichten

  1. Installieren Sie Rclone.

  2. Starten Sie die Einrichtung mit rclone config und legen Sie ein neues Remote an. Wir nennen es lc.

  3. Wählen Sie Amazon S3 Compliant Storage Providers (s3), Any other S3 compatible provider (other).

  4. Setzen Sie access_key_id auf den Wert des Felds access aus der Tabelle oben.

  5. Setzen Sie secret_access_key auf den Wert des Felds secret.

  6. Bearbeiten Sie ~/.config/rclone/rclone.conf von Hand und setzen Sie den Endpoint auf https://leafcloud.store.

  7. Der Eintrag in rclone.conf sieht so aus:

    [lc]
    type = s3
    provider = Other
    access_key_id = <32-character hexadecimal value>
    secret_access_key = <32-character hexadecimal value>
    endpoint = https://leafcloud.store

DuckLake anlegen

  1. Legen Sie ein Verzeichnis namens ducklake-storage an und wechseln Sie hinein.

  2. Legen Sie ein DuckLake nach der DuckLake-Anleitung „Using a Remote Data Path“ an.

  3. Beim DATA_PATH verwenden Sie den zuvor erhaltenen Pfad https://leafcloud.store/.../ducklake-storage.

  4. Synchronisieren Sie das DuckLake so mit dem Object Storage:

    Terminal window
    rclone sync ducklake-storage lc:ducklake-storage

Testen

  1. Verbinden Sie sich so mit dem DuckLake:

    Terminal window
    duckdb ducklake:https://leafcloud.store/swift/v1/AUTH_f84982a3c5d04bd0846197d8e8ce3ddd/ducklake-storage/sf1.ducklake
  2. Listen Sie die Tabellen mit .tables. Sie sehen eine Mischung aus Daten- und Metadatentabellen:

    D .tables
    Comment ducklake_column_tag
    Comment_hasTag_Tag ducklake_data_file
    ...
  3. Führen Sie eine beliebige SQL-Abfrage aus:

    SELECT firstName FROM person LIMIT 1;
    ┌───────────┐
    │ firstName │
    │ varchar │
    ├───────────┤
    │ Jun │
    └───────────┘

Ausblick

Auf der Website von Leafcloud steht, dass ein Managed-Database-Dienst demnächst kommt. Damit ließe sich DuckLake mit Postgres für DuckDB mit mehreren Schreibern einrichten.