Zum Hauptinhalt springen
Version: Weekly Build

Babelfish

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

EigenschaftWertHinweise
ProvidernamebabelfishWird in Landscape-Providerdefinitionen verwendet.
Versionv1Aktuelle vom Provider bereitgestellte Schemaversion.
KategorieDatabaseWird im Managed-Services-Katalog angezeigt.
GeltungsbereichglobalVerfügbar auf Resource-Group-Ebene statt an eine einzelne Workspace-Runtime gebunden zu sein.
Resource-Group-SingletonfalseResource Groups können mehrere Babelfish-Service-Instanzen erstellen.
Pause-UnterstützungtrueDieser Provider unterstützt das Pausieren.
Preview-Funktion

Dieser Provider ist derzeit eine Preview-Funktion. Er ist standardmäßig nicht aktiviert und muss vom Betreiber aktiviert werden. Als Preview befindet sich der Provider noch in der Weiterentwicklung; Schema, Pläne und Verhalten können sich in Zukunft ändern.

Funktionen​

FunktionUnterstütztHinweise
Backups✅Backups werden im Object Store als native PostgreSQL-Physical-Backups gespeichert und nutzen die standardmäßige PostgreSQL-Speicherarchitektur.
Point-in-Time Recovery✅Die Datenbank kann auf einen bestimmten Zeitpunkt zurückgesetzt werden.
Gut zu wissen
  • Hochverfügbarkeit ist noch nicht verfügbar; der Service läuft als Einzelinstanz.
  • Upgrades werden niemals automatisch angewendet. Manuelle Minor-Version-Upgrades werden über das Konfigurationsfeld version unterstützt.
  • Storage wächst nicht automatisch, kann aber jederzeit manuell über den Planparameter storage erhöht werden.

Architektur​

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

  • Fixierte Versionspaare: Das Konfigurationsfeld version fixiert ein kompatibles Paar aus PostgreSQL- und Babelfish-Version – zum Beispiel ist 17.6-5.3.0 PostgreSQL 17.6 mit Babelfish 5.3.0.
  • Gemeinsame Grundlage: Storage (replizierter Ceph-Block-Storage), Networking und der Backup-Mechanismus sind identisch zum PostgreSQL-Provider.

Schema​

Config​

FeldTypErforderlich bei ErstellungHinweise
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​

FeldTypErforderlich bei ErstellungHinweise
superuserPasswordstringJaPasswort für den administrativen Datenbankbenutzer.

Details / Output​

FeldTypVerfügbarkeitHinweise
hostnamestringVerfügbar nach der BereitstellungInterner Service-Hostname.
portintegerVerfügbar nach der BereitstellungTDS-Port.
dsnstringVerfügbar nach der BereitstellungTDS-Verbindungsstring für den Superuser gegen die Datenbank master.
readybooleanVerfügbar nach der BereitstellungGibt an, ob die Instanz bereit für Verbindungen ist.

Plan​

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

ParameterTypStandardMinimumMaximumStatischHinweise
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 der 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 mit einer Babelfish-DB herstellen​

Voraussetzungen​

Sobald die Babelfish-DB bereitgestellt ist, kann eine Verbindung aus den Codesphere-Workspaces hergestellt werden. Jeder Service listet nicht-sensible Verbindungsdetails auf der jeweiligen Einstellungsseite im Tab „Overview“ (oder in der Eigenschaft details im Public-API-Payload).

info

Vor dem Verbinden sicherstellen, dass der Service synchronisiert ist und läuft: in den Service-Einstellungen muss ready auf true stehen.

Verbindung über Terminal (tsql)​

tsql (Teil des FreeTDS-Pakets) kann zum Verbinden verwendet werden. Zu beachten ist, dass tsql eventuell im 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.rg-123 -p 1433 -U postgres -D master

Ältere Services verwenden stattdessen das Suffix ms-postgres, zum Beispiel ms-babelfish-v1-123-my-server.ms-postgres.

Diese Änderung ist nicht breaking: Neue Services sind zusätzlich über einen Alias mit dem Suffix ms-postgres erreichbar, sodass bestehende Konfigurationen und Skripte, die .ms-postgres-Hostnamen verwenden, weiterhin funktionieren.

Verbindung über Node.js​

Verwendung der mssql-Bibliothek:

const sql = require('mssql');

(async () => {
const config = {
user: 'postgres',
password: 'superSecret',
server: 'ms-babelfish-v1-123-my-server.rg-123',
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 zugrundeliegende Engine eines Babelfish-Service ein regulärer PostgreSQL-Server ist, funktionieren Backups genau wie Backups des PostgreSQL-Providers: Das CloudNativePG-Barman-Cloud-Plugin speichert native PostgreSQL-Physical-Backups im S3-kompatiblen Backup-Store und archiviert kontinuierlich das Write-Ahead-Log, wodurch Point-in-Time Recovery ermöglicht wird.

Konfiguration, Wiederherstellung, erforderliche S3-Berechtigungen und Einschränkungen sind identisch mit PostgreSQL – siehe die PostgreSQL-Backup-Dokumentation für Beispiele.