Zum Hauptinhalt springen
Version: Weekly Build

Babelfish

Babelfish stellt einen PostgreSQL-basierten Datenbank-Endpunkt mit Microsoft-TDS-Kompatibilität bereit, wodurch er sich für Workloads und Tools eignet, die SQL-Server-Semantik erwarten.

EigenschaftWertAnmerkungen
ProvidernamebabelfishIn Landscape-Provider-Definitionen zu verwenden.
Versionv1Aktuelle vom Provider bereitgestellte Schemaversion.
KategorieDatabaseWird im Managed-Services-Katalog angezeigt.
ScopeglobalAuf Team-Ebene verfügbar, statt an eine einzelne Workspace-Runtime gebunden zu sein.
Team-SingletonfalseTeams können mehrere Babelfish-Service-Instanzen erstellen.
Pause-UnterstützungtrueDieser Provider unterstützt das Pausieren.

Preview-Feature

Dieser Provider ist derzeit ein Preview-Feature. Er ist standardmäßig nicht aktiviert und muss vom Betreiber freigeschaltet werden. Als Preview-Feature entwickelt sich der Provider weiter, sein Schema, seine Pläne und sein Verhalten können sich in Zukunft ändern.

Funktionen

FunktionUnterstütztAnmerkungen
BackupsBackups werden im Object Store als native PostgreSQL-Physical-Backups gespeichert, unter Nutzung der Standard-PostgreSQL-Speicherarchitektur.
Point-in-Time-RecoveryDie Datenbank kann auf einen bestimmten Zeitpunkt zurückgesetzt werden.

Gut zu wissen

  • Hochverfügbarkeit ist noch nicht verfügbar; der Service läuft als einzelne Instanz.
  • Upgrades werden nie automatisch angewendet. Manuelle Minor-Version-Upgrades werden über das Konfigurationsfeld version unterstützt.
  • Speicher wächst nicht automatisch, aber der storage-Plan-Parameter kann jederzeit manuell erhöht werden.

Architektur

Im Hintergrund ist ein Babelfish-Service dasselbe verwaltete PostgreSQL-Setup wie der PostgreSQL-Provider — ein dedizierter PostgreSQL-Server, betrieben durch den CloudNativePG-Operator — mit installierten und aktivierten Babelfish for PostgreSQL-Erweiterungen. Babelfish fügt einen T-SQL-Dialekt und einen Microsoft-TDS-Wire-Protocol-Endpunkt auf Port 1433 hinzu, sodass sich SQL-Server-Clients und -Treiber direkt verbinden können.

  • Fest zugeordnete Versionspaare: Das Konfigurationsfeld version legt ein kompatibles Paar aus PostgreSQL- und Babelfish-Versionen fest — zum Beispiel steht 17.6-5.3.0 für PostgreSQL 17.6 mit Babelfish 5.3.0.
  • Gemeinsame Grundlage: Speicher (replizierter Ceph-Block-Storage), Netzwerk und der Backup-Mechanismus sind identisch mit dem PostgreSQL-Provider.

Schema

Config

FeldTypBei Erstellung erforderlichAnmerkungen
versionstringNeinKombinierte PostgreSQL- und Babelfish-Version. Standard: 17.6-5.3.0. Erlaubte Werte: 17.7-5.4.0, 16.11-4.8.0, 17.6-5.3.0, 16.10-4.7.0. Nur Minor-Upgrades.

Secrets

FeldTypBei Erstellung erforderlichAnmerkungen
superuserPasswordstringJaPasswort für den administrativen Datenbankbenutzer.

Details / Ausgabe

FeldTypVerfügbarkeitAnmerkungen
hostnamestringNach der Bereitstellung verfügbarInterner Service-Hostname.
portintegerNach der Bereitstellung verfügbarTDS-Port.
dsnstringNach der Bereitstellung verfügbarTDS-Verbindungszeichenfolge für den Superuser gegenüber der master-Datenbank.
readybooleanNach der Bereitstellung verfügbarZeigt an, ob die Instanz bereit für Verbindungen ist.

Plan

Der Provider bietet einen Plan an: Small (id: 0). Beispielplan: Small (id: 0).

ParameterTypStandardMinimumMaximumStatischAnmerkungen
cpunumber1--JaAbgerechnet als cpu-tenths.
memoryinteger128--JaAbgerechnet als ram-mib.
storageinteger1024512-NeinAbgerechnet als storage-mib.

Beispiel in einer Landscape

schemaVersion: v0.2

run:
sqlserver-compatible-db:
provider:
name: babelfish
version: v1
plan:
id: 0
parameters:
storage: 2048
config:
version: "17.7-5.4.0"
secrets:
superuserPassword: "${{ vault.babelfishSuperuserPassword }}"

Innerhalb anderer Runtimes kann die zurückgegebene dsn direkt mit SQL-Server-kompatiblen Treibern verwendet werden, oder hostname und port mit 1433-kompatiblen Tools. Derselbe interne Endpunkt ist auch von anderen Codesphere-Runtimes erreichbar, einschließlich Reactives, Managed Containern und Virtual-Cluster-Workloads.

Verbindung zu einer Babelfish-Datenbank herstellen

Voraussetzungen

Sobald deine Babelfish-Datenbank bereitgestellt ist, kannst du dich von deinen Codesphere-Workspaces aus mit ihr verbinden. Jeder Service listet nicht sensible Verbindungsdetails auf der jeweiligen Einstellungsseite im Übersichtstab auf (oder im details-Feld der öffentlichen API-Antwort).

info

Stelle vor dem Verbinden sicher, dass der Service synchronisiert ist und läuft: In den Service-Einstellungen muss ready den Wert true haben.

Verbindung über das Terminal (tsql)

Du kannst tsql (Teil des FreeTDS-Pakets) für die Verbindung verwenden. Beachte, dass tsql möglicherweise in deinem Workspace installiert werden muss.

# FreeTDS installieren
nix-env -iA nixpkgs.freetds

# Syntax
TDSENCRYPTION=required tsql -H <hostname> -p 1433 -U <username> -D <database>

# Beispiel
TDSENCRYPTION=required tsql -H ms-babelfish-v1-123-my-server.ms-postgres -p 1433 -U postgres -D master

Verbindung über Node.js

Mit der mssql-Bibliothek:

const sql = require('mssql');

(async () => {
const config = {
user: 'postgres',
password: 'superSecret',
server: 'ms-babelfish-v1-123-my-server.ms-postgres',
port: 1433,
database: 'master',
options: {
encrypt: true,
trustServerCertificate: false
}
};

await sql.connect(config);
const result = await sql.query`SELECT 1 as val`;
console.log(result.recordset[0].val);
})();

Backups

Da die zugrunde liegende Engine eines Babelfish-Services ein regulärer PostgreSQL-Server ist, funktionieren Backups genau wie Backups des PostgreSQL-Providers: Das CloudNativePG-Barman-Cloud-Plugin speichert native PostgreSQL-Physical-Backups in deinem S3-kompatiblen Backup-Speicher und archiviert kontinuierlich das Write-Ahead-Log, was Point-in-Time-Recovery ermöglicht.

Konfiguration, Wiederherstellung, erforderliche S3-Berechtigungen und Einschränkungen sind identisch mit PostgreSQL — Beispiele findest du in der PostgreSQL-Backup-Dokumentation.