level_pivot

Speichererweiterung, die LevelDB mit Pivot-Semantik für strukturierte relationale Tabellen über Schlüssel-Wert-Paare umschließt

Maintainer: halgari

Installation und Laden

INSTALL level_pivot FROM community;
LOAD level_pivot;

Beispiel

-- Attach a LevelDB database
ATTACH '/tmp/mydb' AS kv (TYPE level_pivot, CREATE_IF_MISSING true);
-- Create a pivot table: rows decompose into LevelDB key-value pairs
-- Key pattern: users##<group>##<id>##<attribute_name> → attribute_value
CALL level_pivot_create_table('kv', 'users', 'users##{group}##{id}##{attr}', ['group', 'id', 'name', 'email']);
-- Insert data
INSERT INTO kv.users VALUES ('admins', 'u1', 'Alice', '[email protected]');
INSERT INTO kv.users VALUES ('admins', 'u2', 'Bob', '[email protected]');
-- Query with standard SQL (filter pushdown on identity columns)
SELECT * FROM kv.users;
SELECT * FROM kv.users WHERE "group" = 'admins' AND id = 'u1';

Über level_pivot

LevelPivot ist eine DuckDB-Speichererweiterung, die LevelDB mit Pivot- Semantik umschließt. Sie bildet relationale Zeilen auf LevelDB-Schlüssel-Wert-Paare ab, indem konfigurierbare Schlüsselmuster verwendet werden, sodass strukturierte mehrspaltige SQL-Tabellen auf einem Schlüssel-Wert-Speicher möglich sind.

Tabellen werden über level_pivot_create_table() mit einem Schlüsselmuster wie ‘users##{group}##{id}##{attr}’ erzeugt, das festlegt, wie Zeilen in LevelDB-Einträge zerlegt werden. Identitätsspalten ({group}, {id}) bilden das Schlüssel- präfix; Attributspalten (name, email) werden jeweils zu einem eigenen LevelDB-Schlüssel-Wert-Paar.

Wichtige Funktionen:

  • Pivot-Modus: zerlegt Zeilen in LevelDB-Einträge pro Attribut
  • Raw-Modus: einfacher zweispaltiger Schlüssel-Wert-Zugriff
  • Konfigurierbare Schlüsselmuster mit Identitätsspalten und Trennzeichen
  • Typisierte Spalten: VARCHAR, BIGINT, INTEGER, DOUBLE, BOOLEAN
  • Filter-Pushdown auf Identitätsspalten für effiziente Präfixscans
  • Volle DML-Unterstützung: INSERT, INSERT INTO…SELECT, UPDATE, DELETE
  • SIMD-optimiertes Schlüsselparsing (AVX2, SSE2, NEON)
  • Datenpersistenz über DETACH-/ATTACH-Zyklen

Hinzugefügte Funktionen

function_name function_type description comment examples
level_pivot_create_table table NULL NULL
level_pivot_dirty_tables table NULL NULL
level_pivot_drop_table table NULL NULL

Überladene Funktionen

Diese Erweiterung fügt keine Funktionsüberladungen hinzu.

Hinzugefügte Typen

Diese Erweiterung fügt keine Typen hinzu.

Hinzugefügte Einstellungen

Diese Erweiterung fügt keine Einstellungen hinzu.