Kapitel · Daten verbinden

Jede Quelle.
Ein Eingang.

Ein Aufruf registriert eine Quelle, leitet ein typisiertes Schema ab und fixiert dessen Revision in jeden Plan, der sie berührt. Dateien und SQLite laufen im Prozess — kein Schlüssel, nichts verlässt das System. Live-Datenbanken verbinden sich über eine private SQAI-Bereitstellung — direkt, über das native Wire-Protokoll der jeweiligen Datenbank: Zugangsdaten verschlüsselt, keine Daten kopiert.

const sales = await sqai.connect("./data/sales.csv", { name: "sales" })

→ row_count 12 · schema_revision e4938027… · status ready

typisiert · hash-fixiert · schreibgeschützt

IIDie Typfälle

Zwei Schalen. Sechsundzwanzig Fächer.

Jedes Fach öffnet sich zum selben Vertrag: wie es sich verbindet, was es benötigt, was das System verlässt. Eines aufziehen.

Im Prozesskein Schlüssel · kein Daemon · kein Netzwerk

CSV
Fall
Datei
Verbinden
"./data/sales.csv"
Auth
Keine. SQAI liest die Bytes im eigenen Prozess.
Schlüssel
Schlüssellos für lokale Dateien — keine Karte. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel.
Daten
Nichts verlässt den Prozess.
TSV
Fall
Datei
Verbinden
"./data/orders.tsv"
Auth
Keine. SQAI liest die Bytes im eigenen Prozess.
Schlüssel
Schlüssellos für lokale Dateien — keine Karte. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel.
Daten
Nichts verlässt den Prozess.
JSON
Fall
Datei
Verbinden
"./data/sales.json"
Auth
Keine. SQAI liest die Bytes im eigenen Prozess.
Schlüssel
Schlüssellos für lokale Dateien — keine Karte. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel.
Daten
Nichts verlässt den Prozess.
Hinweis
Ein Pfad oder ein Objekt.
rows
Fall
Im Arbeitsspeicher
Verbinden
[{ region: "east", revenue: 512 }, …]
Auth
Keine. SQAI liest die Bytes im eigenen Prozess.
Schlüssel
Schlüssellos für lokale Dateien — keine Karte. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel.
Daten
Nichts verlässt den Prozess.
{ records }
Fall
Im Arbeitsspeicher
Verbinden
{ records: [ … ] }
Auth
Keine. SQAI liest die Bytes im eigenen Prozess.
Schlüssel
Schlüssellos für lokale Dateien — keine Karte. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel.
Daten
Nichts verlässt den Prozess.
SQLite
Fall
Eingebettete Datenbank
Verbinden
{ provider: "sqlite", path, table | query }
Auth
Keine. SQAI liest die Bytes im eigenen Prozess.
Schlüssel
Schlüssellos für lokale Dateien — keine Karte. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel.
Daten
Nichts verlässt den Prozess.
Hinweis
Eine vollständige Datenbank, weiterhin im Prozess. Tabelle oder schreibgeschützte Abfrage angeben.
Excel
Fall
Datei
Verbinden
"./data/sales.xlsx"
Auth
Keine. SQAI liest die Bytes im eigenen Prozess.
Schlüssel
Schlüssellos für lokale Dateien — keine Karte. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel.
Daten
Nichts verlässt den Prozess.
Hinweis
Nur Python.
Parquet
Fall
Datei
Verbinden
"./data/sales.parquet"
Auth
Keine. SQAI liest die Bytes im eigenen Prozess.
Schlüssel
Schlüssellos für lokale Dateien — keine Karte. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel.
Daten
Nichts verlässt den Prozess.
Hinweis
Nur Python.

Private SQAI-BereitstellungZugangsdaten verschlüsselt · keine Daten kopiert

PostgreSQL
Fall
Relational
Verbinden
{ type: "postgres", host, port, database, user, password, table | query }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
MySQL
Fall
Relational
Verbinden
{ type: "mysql", host, port, database, user, password, table | query }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Oracle
Fall
Relational
Verbinden
{ type: "oracle", host, port, database, user, password, table | query }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Hinweis
Mitgelieferter Thin-Mode-Treiber — kein Oracle-Client erforderlich.
SQL Server
Fall
Relational
Verbinden
{ type: "mssql", host, port, database, user, password, table | query }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Snowflake
Fall
Warehouse
Verbinden
{ type: "snowflake", connection_string, query }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
BigQuery
Fall
Warehouse
Verbinden
{ type: "bigquery", connection_string, query }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
ClickHouse
Fall
Warehouse
Verbinden
{ type: "clickhouse", connection_string, query }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Redshift
Fall
Warehouse
Verbinden
{ type: "redshift", connection_string, query }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
S3
Fall
Objektspeicher
Verbinden
{ type: "s3", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
GCS
Fall
Objektspeicher
Verbinden
{ type: "gcs", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Azure Blob
Fall
Objektspeicher
Verbinden
{ type: "azure_blob", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Redis
Fall
NoSQL · Graph · Suche
Verbinden
{ type: "redis", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Neo4j
Fall
NoSQL · Graph · Suche
Verbinden
{ type: "neo4j", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Elasticsearch
Fall
NoSQL · Graph · Suche
Verbinden
{ type: "elasticsearch", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
REST
Fall
API
Verbinden
{ type: "rest", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
GitHub
Fall
Code-Repos
Verbinden
{ type: "github", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
GitLab
Fall
Code-Repos
Verbinden
{ type: "gitlab", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.
Bitbucket
Fall
Code-Repos
Verbinden
{ type: "bitbucket", … }
Auth
SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.
Schlüssel
Ihre private Bereitstellungs-URL, plus optionaler API-Schlüssel.
Daten
Zugangsdaten verschlüsselt in Ihrer SQAI-Bereitstellung. Zeilen werden bei Bedarf gelesen — nie kopiert.

Modus wird aus der Umgebung abgeleitet

SQAI_DEPLOYMENT_URLdeployment

Eigene SQAI-Bereitstellung, eigenes Netzwerk.

SQAI_API_KEYapi

Ihre authentifizierte SQAI-Bereitstellung.

keines gesetztlocal

Nur im Prozess.

Dateien und SQLite funktionieren in jedem Modus. Live-Datenbanken erfordern eine private SQAI-Bereitstellung. SQAI stellt einmalig eine Verbindung bereit und bleibt warm — kein Cold Start pro Abfrage.

Keine Synchronisation. Kein Export.
Keine Drittanbieter-Bridge.

direkte Konnektivität über das native Wire-Protokoll der Datenbank

IIIDas Protokoll

Direkt. Bis zum Protokoll.

Ihre SQAI-Bereitstellung verbindet sich direkt und spricht das native Wire-Protokoll jeder Datenbank. Abfragen laufen vor Ort, auf Ihre Organisation beschränkt — Ihre Datenbank wird nie kopiert.

Abb. — das Protokoll
Ihre DatenbankZeilen bleiben vor Ort
natives Wire-Protokoll — direkt von der SQAI-Bereitstellung gesprochen
SQAI-Bereitstellungschreibgeschützte Abfragen

Vor Ort, im Scope.

Die SQAI runtime fragt Ihre Daten dort ab, wo sie liegen, auf Ihre Organisation beschränkt — und greift nie über das Konfigurierte hinaus.

Zugangsdaten versiegelt.

Verschlüsselt im Ruhezustand, auf die Organisation beschränkt, ausschließlich zur Bedienung eigener Abfragen verwendet. Ein Connector gibt seine Konfiguration nie zurück — nur Name, Typ, Status und das letzte Testergebnis.

nie kopiert

Die SQAI runtime kopiert Ihre Datenbank nie — Zeilen werden dort gelesen, wo sie liegen.

SELECT 1ok · connector: live

Jeder Test öffnet eine echte Verbindung — SELECT 1 für SQL, ein HEAD für Objektspeicher, ein Beispielabruf für REST. Ein Connector ist erst aktiv, sobald eine echte Verbindung gelingt; wird die Konfiguration bearbeitet, fällt er auf „ungetestet" zurück.

Das Flaggschiff-Protokoll · Oracle

Thin Mode. Nichts zu installieren.

Die SQAI runtime bündelt python-oracledb im Thin Mode und verbindet sich direkt — kein Instant Client, kein zusätzlicher Laufzeitprozess, kein weiteres Python-Paket. Die SQAI runtime besitzt das Wire-Ende vollständig: den Treiber, den begrenzten Connection-Pool, die Zugangsdatenprüfung, das Schema-Browsing und einen Arrow-kompatiblen Batch-Fetch-Pfad — nie eine versteckte ungepoolte Fallback-Verbindung.

  • Nur SELECT / WITH als Wurzeln
  • gebundenes ROWNUM-Limit
  • persistierte Probe · bei 0 ms wiederverwendet

Redshift antwortet über PostgreSQL.

Tabellen werden vor Ort über das PostgreSQL-Wire-Protokoll gelesen — der Cluster wird nie kopiert. Selbst die Erfolgsmeldung des Tests nennt PostgreSQL.

Ein Eingang, jeder Pfad.

Objektspeicher und Uploads teilen dieselben Parser — ein Parquet-Objekt in S3 und eine hochgeladene Parquet-Datei landen identisch in der SQAI-Bereitstellung.

Gleiche Anfrage → gleiche Zeilen, gleiche Reihenfolge · jeder Zugriff auditierbar · Egress ist eine fail-closed Allowlist pro Deployment

IVDie Einheitlichkeit

Downstream unterscheidet CSV nicht von Snowflake.

Jede Quelle gibt dasselbe typisierte SqaiSource zurück – gleiche Felder, gleiche Pins, gleiche Garantien. Tauschen Sie das Warehouse gegen die Datei aus, und downstream ändert sich nichts.

im Prozess"./data/sales.csv"
über eine private SQAI-Bereitstellung{ type: "snowflake", connection_string, query }

SqaiSource

gleiche Form · jede Quelle
name"sales"
source_ide135c6f7eec0e846c01c4ef8
fieldsregion · product · revenue · cost · units · order_date
typed_fields2 string · 3 number · 1 date
row_count12
schema_revisione4938027ddf0d2210f019770403efd45d350eac28100902ddd7c5191c9b8cfbe
statusready

Ein Zertifikat, unabhängig von der Quelle. Downstream-Code weiß nie, wo die Zeilen liegen.

Einmal registriert.
Nie neu definiert.

eine Neubindung eines Namens wirft einen Fehler source_already_registered

VDer Pin

Daten ändern sich. Der Replay zeigt es.

connect() verankert eine Schema-Revision in jeden Plan und jede Berechnung. Ein gespeicherter Plan, der gegen geänderte Daten wiederholt wird, macht die Änderung sichtbar – nie stillschweigend andere Zahlen.

schema_revision
Beim Verbinden in jeden Plan und jede Berechnung eingebunden, die die Quelle berührt.
schema_revision_mismatch
Was ein Replay zurückgibt, wenn sich die Daten darunter verändert haben.
source_already_registered
Quellen sind unveränderlich – ein Name kann nie stillschweigend auf andere Daten umgelenkt werden.

provenance.bindings[0]

source_name"sales"
fields["revenue"]
schema_revisione4938027…c9b8cfbe
row_count12
input_hash2ea5ede7…478e3212

Jedes gebundene Feld trägt seine Herkunft.

VIFragen

LLM-Datenbankzugriff – beantwortet.

Wie gebe ich einem LLM Zugriff auf meine Datenbank?

Registrieren Sie die Quelle im Code mit connect(). Das Modell sieht nie einen Connection-String – es erhält drei schreibgeschützte Tools über typisierte Quellen, und die Richtlinie entscheidet, welche Quellen und Felder es berühren darf.

Werden meine Daten beim Verbinden irgendwo kopiert?

Nein. Im-Prozess-Quellen verlassen Ihren Rechner nie. Quellen über private SQAI-Bereitstellungen speichern Zugangsdaten verschlüsselt; Zeilen werden bei Bedarf gelesen und nie kopiert.

Ist SQAI eine Synchronisierung, ein Export oder eine Drittanbieter-Brücke zu meiner Datenbank?

Nichts davon. Die Verbindung erfolgt direkt über das native Wire-Protokoll der Datenbank — die SQAI-Bereitstellung fragt Ihre Daten vor Ort ab, auf Ihre Organisation beschränkt, und kopiert Ihre Datenbank nie.

Benötige ich einen API-Schlüssel, um Daten zu verbinden?

Nicht für Dateien, In-Memory-Zeilen oder SQLite — diese laufen im Prozess, ohne Schlüssel. Lokales Compute verwendet den kostenlosen sqai login Geräteschlüssel. Live-Datenbanken und Warehouses benötigen SQAI_DEPLOYMENT_URL, mit SQAI_API_KEY nur wenn Ihre Bereitstellung Auth erfordert.

Kann das Modell meine Zugangsdaten sehen?

Nein. Zugangsdaten werden in Ihrem Code zum Zeitpunkt von connect() übergeben und in Ihrer SQAI-Bereitstellung verschlüsselt. Die Tool-Eingabe des Modells trägt typisierte Absicht — keine Verbindungsdetails, keine Richtlinienfelder.

Wird Oracle ohne Installation eines Clients unterstützt?

Ja. Die SQAI runtime enthält einen integrierten Thin-Mode-Treiber, sodass kein Oracle-Client installiert werden muss.

Was passiert, wenn sich die zugrunde liegenden Daten ändern?

Die beim Verbinden verankerte schema_revision stimmt nicht mehr überein, und ein Replay gibt schema_revision_mismatch zurück, statt stillschweigend andere Zahlen zu liefern. Das Neubinden eines registrierten Namens wirft source_already_registered.

Etwas verbinden.

Node ≥ 20 · Python ≥ 3.10 · Dateien & SQLite benötigen keinen Schlüssel