Kategorie: KI-News

  • Postgres LISTEN/NOTIFY – Der skalierbare Geheimtipp für Echtzeit-Kommunikation

    Postgres LISTEN/NOTIFY – Der skalierbare Geheimtipp für Echtzeit-Kommunikation

    Stell dir vor, du sitzt in einem grossen Büro und wartest auf eine wichtige Nachricht. Du könntest alle fünf Minuten bei der Zentrale anrufen und fragen: „Ist was Neues da?“ Das wäre ineffizient und würde nerven. Besser wäre ein System, bei dem die Zentrale dich sofort benachrichtigt. Das leistet Postgres mit LISTEN und NOTIFY – direkt in der Datenbank.

    Seit Jahren kursiert das Gerücht, dass Postgres LISTEN/NOTIFY nicht für grössere Systeme tauge. Zu viele Verbindungen, zu viel Overhead, zu langsam. Moderne PostgreSQL-Versionen haben die interne Mechanik verbessert. Mit der richtigen Architektur kannst du Tausende von gleichzeitigen Listenern betreiben, ohne dass die Datenbank überlastet wird.

    LISTEN und NOTIFY sind ein eingebautes Pub/Sub-System. Ein Client abonniert mit LISTEN einen Kanal. Ein anderer Client – oder ein Trigger, eine Funktion – sendet mit NOTIFY eine Nachricht. PostgreSQL leitet diese asynchron an alle lauschenden Verbindungen weiter. Kein Polling, keine zusätzliche Middleware, nur die Datenbank.

    Der Vorteil gegenüber Polling: sofortige Reaktion und geringere Datenbanklast. Statt alle paar Sekunden eine SELECT-Abfrage auszuführen, wartest du auf ein Ereignis. Das schont CPU, Netzwerk und Speicher. Besonders bei vielen Nutzern spart das Ressourcen.

    Warum zweifeln viele an der Skalierbarkeit? Der Grund liegt in der Vergangenheit. Ältere Postgres-Versionen hatten Probleme mit vielen LISTEN-Verbindungen. Jede lauschende Verbindung erzeugte Overhead im Shared Memory und im WAL. NOTIFY-Nachrichten konnten nur innerhalb einer Transaktion gesendet werden und kamen erst nach Commit an. Das führte zu Verzögerungen.

    Seit PostgreSQL 9.4 hat sich die Situation verbessert. Asynchrone Notifications und optimierte Queue-Strukturen steigern die Leistung. Heute lassen sich zehntausend gleichzeitige LISTEN-Verbindungen betreiben, ohne dass die Datenbank aus dem Takt gerät. Es gibt Grenzen – Shared Memory oder CPU – aber sie liegen höher als oft angenommen.

    Ein oft übersehener Faktor ist die Art der Verbindungen. Bei einem Connection Pool wie PgBouncer musst du aufpassen: Viele Pooler leiten LISTEN/NOTIFY nicht korrekt weiter, weil sie Verbindungen mischen. Die Lösung: ein dedizierter Pool-Modus (z. B. Session-Pooling) oder direkte Verbindungen für Listener. Auch kannst du Notifications in einer zentralen Worker-Webanwendung bündeln und per WebSocket verteilen. Das entlastet die Datenbank und skaliert horizontal.

    Die Nachrichten ersetzen keinen vollwertigen Message Broker. Sie sind maximal 8000 Bytes gross und nicht persistent. Bei einem Datenbank-Crash gehen nicht zugestellte Nachrichten verloren. Für viele Anwendungsfälle ist das akzeptabel: Cache-Invalidierung, Echtzeit-Updates für Dashboards, einfache Job-Benachrichtigungen oder das Triggern von Hintergrundarbeitern.

    Ein Beispiel: Eine KI-gestützte Empfehlungsplattform. Wenn ein Benutzer neue Daten eingibt, soll sofort ein Modell neu trainiert werden. Statt jede Minute einen Cron-Job laufen zu lassen, löst du beim Einfügen einen NOTIFY aus. Der Worker, der das Modell trainiert, lauscht auf diesem Kanal und startet die Berechnung. Das spart Zeit und Rechenleistung.

    Postgres ist das Rückgrat vieler KI-Systeme. Datenänderungen sofort zu kommunizieren, ist ein wichtiger Baustein für reaktive Architekturen. Machine-Learning-Pipelines, Echtzeit-Analysen und personalisierte Empfehlungen nutzen diese schlanke, datenbankintegrierte Kommunikation.

    Die PostgreSQL-Dokumentation listet LISTEN/NOTIFY als produktionsreif. Viele Unternehmen setzen es erfolgreich ein. Wichtig ist, die Erwartungen richtig zu setzen: Es ist kein Ersatz für Kafka oder RabbitMQ, wenn du hohen Durchsatz, Persistenz und komplexe Routing-Logik brauchst. Für den typischen Anwendungsfall einer einzelnen Datenbank als Single Source of Truth ist es oft die einfachste und performanteste Lösung.

    Ein konkretes Beispiel: Ein SaaS-Anbieter für Projektmanagement benachrichtigt mit LISTEN/NOTIFY alle Clients, wenn ein Teammitglied eine Aufgabe aktualisiert. Früher kam eine teure Polling-Lösung zum Einsatz – zehn Abfragen pro Sekunde pro Benutzer. Nach der Umstellung sank die Datenbanklast um 90 %. Die Benutzer erleben keine Verzögerung, der Betrieb läuft stabil mit mehreren tausend gleichzeitigen Verbindungen.

    Beachte einige Best Practices: Verwende aussagekräftige Kanalnamen, die die Applikationslogik widerspiegeln. Halte die Nutzlast klein – besser eine ID versenden und die Daten separat laden. NOTIFY wird nur innerhalb einer Transaktion gesendet; erst nach Commit werden Benachrichtigungen ausgeliefert. Das verhindert falsche Benachrichtigungen über Rollbacks hinweg.

    Ein weiterer Punkt: LISTEN und NOTIFY sind flüchtig. Verliert ein Client die Verbindung, bevor die Nachricht ankommt, ist sie weg. Für kritische Daten solltest du einen separaten, persistenten Mechanismus vorsehen. Für die meisten Echtzeit-Features ist das akzeptabel – ähnlich wie UDP: schnell, aber nicht garantiert.

    PostgreSQL 17 bringt weitere Optimierungen für den Async-Notify-Pfad. Wer bisher gezögert hat, kann es jetzt ausprobieren. Es skaliert gut und vereinfacht die Architektur.

    Letztlich geht es darum, die richtigen Werkzeuge zu wählen. Postgres LISTEN/NOTIFY ist eines dieser Werkzeuge, das in vielen Situationen eine elegante Lösung bietet. Es ist solide Technik, die seit Jahrzehnten gereift ist.

    Quelle: dbos.dev

  • Aiven Übernimmt Flow AI: Warum KI-Agenten Direkt an die Produktionsdaten Müssen

    Aiven Übernimmt Flow AI: Warum KI-Agenten Direkt an die Produktionsdaten Müssen

    Du bittest einen Assistenten um eine Zusammenfassung der aktuellen Verkaufszahlen. Er liefert Daten von letzter Woche. Nicht falsch, aber nutzlos. Du brauchst die Zahlen von heute Morgen, live. Dieses Gefühl beschreibt die Herausforderung vieler Unternehmen mit KI-Agenten im Einsatz. Ein Agent ohne frische, verlässliche Daten ist wie ein Koch mit Zutaten von gestern – das Ergebnis wird nie gut.

    Aiven, bekannt für verwaltete Open-Source-Datenplattformen, hat Flow AI übernommen. Das Unternehmen baut die Infrastruktur für produktionsreife, analysierende KI-Agenten. Der Schritt ist strategisch: Aiven will Agenten direkt neben die Produktionsdaten stellen, ohne komplexe Umwege. CEO Oskari Saarenmaa sagt: Agenten sind nur so gut wie die Infrastruktur, die sie versorgt – die Frische der Daten, die Zuverlässigkeit des Kontexts und die Qualität der Evaluierungen.

    Flow AI arbeitet seit 2020 an produktiven KI-Systemen. Ihr erstes Produkt Flowrite war eines der ersten KI-Produktivitätstools mit Hunderttausenden Nutzern. Später konzentrierten sie sich auf harte Infrastrukturprobleme: Wie bringen wir KI-Agenten dazu, sicher und zuverlässig mit strukturierten Daten in großem Maßstab zu arbeiten? Heute bietet Flow AI das Laufzeitsystem, die Datenebene und Evaluierungswerkzeuge, die SaaS-Teams brauchen, um kundenorientierte Agenten in ihre Produkte einzubetten.

    Die Übernahme sendet ein klares Signal: Der Zugang zu Daten verändert sich. Statt starren Abfragen oder Dashboards werden Agenten zum neuen Interface. Mitarbeiter fragen nicht mehr „Zeig mir den Report“, sondern „Was ist der aktuelle Umsatz?“. Das klingt einfach, technisch ist es anspruchsvoll. Ein Agent muss die Anfrage verstehen, die richtige Datenquelle finden, die Abfrage sicher ausführen und die Antwort in natürlicher Sprache formulieren – alles in Sekundenbruchteilen und mit hoher Genauigkeit.

    Viele KI-Projekte scheitern genau hier. Die Modelle sind gut, die Daten sind da – aber die Verbindung ist instabil, langsam oder unsicher. Aiven und Flow AI wollen diese Lücke schließen. Die Kombination aus Aivens verwalteter Datenplattform (Kafka, PostgreSQL, OpenSearch, ClickHouse und mehr) und Flow AIs Agenten-Infrastruktur schafft eine Umgebung, in der Agenten direkt auf frische, gepflegte Daten zugreifen – ohne dass Teams eigene komplexe Systeme bauen müssen.

    Ein wichtiger Aspekt ist die „Evaluierung“. Ein Agent muss nicht nur antworten, sondern auch wissen, ob seine Antwort richtig ist. Flow AI bringt Werkzeuge mit, die genau das messen und sicherstellen. Das trennt einen Assistenten, der einfach drauflos redet, von einem, der seine Arbeit selbst überprüft. Bei geschäftskritischen Anwendungen ist diese Qualitätssicherung unverzichtbar.

    Aivens Vision ist eine einheitliche Plattform: Agenten-native Werkzeuge und Produktionsdaten zusammen. Keine Insellösungen, kein Hype, sondern eine solide Grundlage, auf der Entwickler vertrauensvoll KI-Workloads in die Produktion bringen können. Flow AI-Mitgründer Aaro Isosaari sieht in Aiven das Potenzial für ein generationenübergreifendes KI-Infrastrukturunternehmen. Das ist ambitioniert, aber der Track Record beider Teams gibt dem Gewicht.

    Für Entwickler und Entscheider bedeutet das: Die Zeit des Experimentierens mit KI-Assistenten geht zu Ende. Es geht darum, diese Technologie sicher, skalierbar und direkt an den Daten zu betreiben. Aiven und Flow AI liefern die Infrastruktur dafür, ohne dass wir jedes Rad selbst drehen müssen. Kein Wundermittel, aber ein ernstzunehmender Schritt, um KI-Agenten aus der Sandbox in die echte Anwendung zu bringen.

    Quelle: aiven.io

  • Cache-Konsistenz: Strategien für frische Daten

    Cache-Konsistenz: Strategien für frische Daten

    Das Problem mit dem veralteten Spickzettel

    Sie notieren sich die Öffnungszeiten eines Cafés auf einem Post-it. Am nächsten Tag ändert das Café seine Zeiten, aber Ihr Zettel bleibt hängen. Sie stehen um neun vor verschlossener Tür. Darum geht es bei Cache-Konsistenz: Ein Cache speichert eine Kopie der Daten für schnellen Zugriff. Ändern sich die Originaldaten, wird die Kopie zur Falle. Der Cache liefert dann veraltete Preise, abgelaufene Berechtigungen oder nicht existierende Lagerbestände.

    Cache-Konsistenz hält die Abweichung zwischen Cache und Datenbank klein. Je schneller ein System sein soll, desto mehr ist es auf Caching angewiesen. Fast jeder hochfrequentierte Dienst setzt heute Caches ein. Entscheidend ist zu wissen, wie weit die gecachten Werte von der Quelle abweichen dürfen, und diese Abweichung im Rahmen dessen zu halten, was Ihre Anwendung verkraftet. Dieser Beitrag erklärt, was Cache-Konsistenz bedeutet, warum Caches altern, welche klassischen Muster es gibt und wie ereignisgesteuerte Synchronisation die Daten frisch hält, wenn Zeitfenster allein nicht ausreichen.

    Was Cache-Konsistenz bedeutet

    Ein Cache ist konsistent, wenn seine Werte mit der Quelle der Wahrheit übereinstimmen. Jede Konsistenzstrategie zielt darauf ab, das Zeitfenster zu verkleinern, in dem die beiden voneinander abweichen. Diese Abweichung heißt Staleness – sie ist kein binärer Zustand, sondern ein Fenster. Jede Strategie in diesem Artikel versucht, dieses Fenster zu verkleinern, zu begrenzen oder zu entscheiden, welche Daten das engste Fenster benötigen.

    Die Art, wie Sie Aktualisierungen propagieren, bestimmt, wie konsistent Ihre Lesevorgänge sind. Synchron bedeutet: Eine Änderung wird an alle relevanten Knoten weitergegeben, bevor ein Leser sie sieht. Asynchron bedeutet: Sie tauschen diese Garantie gegen Geschwindigkeit ein und landen in der Eventual Consistency, wo manche Knoten vorübergehend veraltete Daten ausliefern. Die meisten realen Systeme liegen irgendwo auf diesem Spektrum. Es ist besser, sich bewusst zu positionieren, als es erst bei einem Vorfall zu entdecken. Selbst Hyperscaler wie Meta haben Jahre investiert, um die Cache-Konsistenz ihres TAO-Systems von sechs Neunen auf zehn Neunen zu steigern.

    Warum Caches altern: TTL, Schreibreihenfolge und Instanz-Wettläufe

    Caches altern aus drei bekannten Gründen: TTL-Fenster, die länger leben als die Daten, Wettläufe bei der Schreibreihenfolge zwischen Cache und Datenbank sowie mehrere Anwendungsinstanzen, die sich bei Cache-Befüllungen gegenseitig behindern. Die Mechanismen unterscheiden sich, aber das Ergebnis ist gleich: Der Cache bedient einen Wert, nachdem die Quelle bereits weitergeschritten ist.

    TTL-Zeitfenster

    Im reinen Verfallsmodell bekommt jeder Eintrag eine Time-to-Live (TTL) – eine Lebensdauer, nach der er als veraltet gilt und entfernt oder erneuert wird. Ein Cache, der nur auf TTL setzt, liefert veraltete Daten für das gesamte Restfenster nach einer Datenbankänderung. Wenn Ihre TTL fünf Minuten beträgt und der Preis zehn Sekunden nach der Änderung abgefragt wird, sehen die Leser den alten Preis viereinhalb Minuten lang.

    Die Verfallsmechanismen selbst bringen zusätzliche Feinheiten mit sich. Ein gutes Beispiel ist Redis: Es löscht abgelaufene Keys auf zwei Arten – passiv, wenn ein Client auf einen bereits abgelaufenen Key zugreift, und aktiv durch einen Hintergrundzyklus, der alle 100 Millisekunden 20 Keys stichprobenartig prüft und die abgelaufenen entfernt. Keys werden also nicht im exakten Moment ihres TTL-Ablaufs gelöscht. Das Fenster der Veraltung ist immer etwas größer als die TTL vorgibt.

    Schreibreihenfolge-Wettläufe

    TTL-Fenster sind wenigstens vorhersagbar; Wettläufe sind es nicht. Ein Race Condition entsteht, wenn zwei Operationen zeitlich überlappen und das Ergebnis davon abhängt, welche zuerst fertig wird. Ein veralteter Set tritt auf, wenn gleichzeitige Aktualisierungen umsortiert werden und der Cache einen Wert aus dem falschen Moment behält. Ein Cache-Fill kann mit einer Datenbanktransaktion verschränkt werden, sodass der Cache eine Mischung aus alten und neuen Daten erhält. Fällt dann die Invalidation-Nachricht aus, korrigiert sich nichts bis zum nächsten Schreibzugriff oder TTL-Ablauf. Das Wettlauf-Fenster ist winzig, aber im Hyperscaler-Maßstab mit enormen Anfrage- und Cache-Fill-Volumina treten selbst seltene Races häufig genug auf, um zu stören.

    Multi-Instanz-Bevölkerungsrennen

    Horizontale Skalierung vervielfacht die Racer. Stellen Sie sich zwei App-Instanzen vor: Instanz A löscht einen Cache-Eintrag und wird gleich die Datenbank aktualisieren. Bevor As Schreibzugriff landet, bekommt Instanz B einen Cache-Miss, liest den alten Wert aus der Datenbank und schreibt ihn zurück in den Cache. Dann führt A sein Update aus. Jetzt hat die Datenbank den neuen Wert und der Cache den alten – ohne dass eine Invalidation kommt, um das zu korrigieren. Ein weiteres Phänomen ist die Thundering Herd: Viele Anfragen erleiden gleichzeitig einen Cache-Miss und stürmen die Datenbank, jede rennt darum, den gleichen Key mit dem gerade gelesenen Schnappschuss zu befüllen.

    Cache-Aside vs. Write-Through: Die klassischen Abwägungen

    Diese Ausfallmodi erklären, warum das gewählte Caching-Muster entscheidend ist: Jedes zieht die Konsistenzgrenze an einer anderen Stelle. Diese Grenze bestimmt, ob Schreibvorgänge warten müssen, Lesevorgänge riskieren, veraltet zu sein, oder Ihre Anwendung mehr Koordinationsarbeit leisten muss.

    Cache-Aside (Lazy Loading)

    Beim Cache-Aside-Muster verwaltet die App den Cache direkt. Sie lädt Daten nur bei Bedarf: Prüfe den Cache – bei einem Miss lies aus der Datenbank – schreibe in den Cache – gib zurück. Bei Schreibvorgängen aktualisiert die App die Datenbank und invalidert dann den Cache-Eintrag, sodass der nächste Lesevorgang ihn frisch nachlädt. Es ist flexibel, aber diese Flexibilität hat Kosten: Ein externer Prozess kann die Datenbank jederzeit ändern, und der Cache merkt es erst beim nächsten Laden. Der erste Request für ungecachete Daten zahlt die volle Latenz – so langsam wie ein normaler Datenbankaufruf. Und die Multi-Instanz-Races von oben sind die charakteristische Schwachstelle von Cache-Aside.

    Write-Through

    Write-Through dreht den Schreibpfad um: Schreibvorgänge gehen sowohl in den Cache als auch in die Datenbank in derselben synchronen Operation. Leser sehen also nach erfolgreichem Schreiben den neuen Wert – sofern beide Schreibvorgänge durchkommen. Das erkauft Read-your-Writes-Verhalten, was für Daten wie Kontostände und Bestellungen wichtig ist. Dafür zahlt man dreifach: Jeder Schreibzugriff wartet auf zwei Systeme. Ein teilweiser Fehler zwischen den beiden Schreibvorgängen hinterlässt eine Inkonsistenz, die Sie selbst auflösen müssen. Und jeder geschriebene Wert landet im Cache, egal ob jemals jemand ihn liest – das kann Speicher für kalte Daten verschwenden.

    Ein drittes Muster ist Write-Behind: Schreibvorgänge treffen zuerst den Cache und werden asynchron in die Datenbank gespült. Das bietet schnellere Schreibvorgänge, aber schwächere Konsistenz. Ein Cache-Absturz vor dem Spülen kann Datenverlust bedeuten. Es eignet sich für schreibintensive Workloads mit niedrigerem Risiko, wie Analyse-Events oder Zähler.

    Ereignisgesteuerte Synchronisation schließt die Lücke der TTL

    Keines der klassischen Muster hilft, wenn Daten außerhalb Ihrer App geändert werden: durch einen Batch-Job, einen Datenbankadministrator, einen anderen Dienst, der direkt in die Datenbank schreibt. Ereignisgesteuerte Invalidation reagiert auf die Änderung selbst, statt auf einen Timer zu warten.

    Keyspace Notifications für Cache-seitige Änderungen

    Redis liefert einen Baustein dafür: Keyspace Notifications. Clients abonnieren Pub/Sub-Kanäle und erhalten Ereignisse, wenn sich Keys ändern. So kann eine App-Instanz ihre lokale Kopie verwerfen, sobald eine andere Instanz einen Key modifiziert. Pub/Sub ist jedoch Fire-and-Forget: Ein Client, der die Verbindung verliert und wieder aufbaut, verpasst alle Ereignisse dazwischen. Eine Reconciliation-Strategie ist daher sinnvoll. Auch Expired-Events feuern erst, wenn Redis den Key tatsächlich löscht – nicht im Moment des TTL-Ablaufs – also kann es eine Verzögerung geben.

    Change Data Capture für datenbankseitige Änderungen

    Für Änderungen, die in Ihrer Quelldatenbank entstehen, ist Change Data Capture (CDC) die robustere Antwort. Log-basierte CDC-Tools wie Debezium lesen das Transaktionslog der Datenbank, wandeln festgeschriebene Zeilenänderungen in Ereignisse um und lassen einen Consumer Cache-Einträge nahezu in Echtzeit invalidieren oder aktualisieren. Debezium bietet At-Least-Once-Lieferung: Festschreibungen werden nicht verpasst, aber ein Datensatz kann mehrfach eintreffen – der Consumer muss Duplikate handhaben.

    Ubers CacheFront zeigt sowohl die Leistungsfähigkeit als auch den Aufwand. Sein früheres Design kombinierte TTLs mit CDC und hatte Read-your-Writes-Probleme: Eine Zeile, die gelesen, gecacht und dann aktualisiert wurde, konnte veraltete Werte ausliefern, bis eine Invalidation oder der TTL-Ablauf kam. Solche Races zeigen, warum Cache-Schreibvorgänge Frischeprüfungen brauchen, statt den zuletzt eintreffenden Wert zu akzeptieren. Später schichtete Uber ein Write-Through-Protokoll darauf, bei dem jeder Knoten vor der Auslieferung die Frische mit der Datenbank validiert. Das System erzielte dann eine höhere Trefferquote bei längeren TTLs. In diesen Systemen erledigen ereignisgesteuerte Signale oft den Großteil der Frischearbeit, während die TTL als Sicherheitsnetz bleibt. Die eigentliche Ingenieursarbeit steckt in der Ordnung, Deduplizierung und Wiedergabelogik.

    Die richtige Strategie wählen: Schreibvolumen und Veraltungstoleranz

    Sie brauchen wahrscheinlich nicht Ubers Drei-Mechanismen-Setup. Überlegen Sie, wie viel Veraltung Ihre Daten vertragen und wie schreibintensiv die Arbeitslast ist, und ordnen Sie dann ein Muster zu.

    Als Faustregeln: Bei leseintensiven Daten, die etwas Veraltung vertragen, reicht Cache-Aside mit TTL. Ein Produktkatalog, der ein paar Sekunden alt ist, fällt niemandem auf. Wenn Read-your-Writes erforderlich ist – etwa bei Kontoständen oder Zahlungen – passt Write-Through. Nutzer verkraften Schreiblatenz meist besser als Lese-Latenz, also liegt der Doppelschreibaufwand an der richtigen Stelle. Bei schreibintensiven, weniger riskanten Daten (Zähler, Events) absorbiert Write-Behind Schreibspitzen, gegen ein Datenverlustrisiko bei Cache-Ausfall. Ändern sich Daten außerhalb Ihrer App oder kostet Veraltung Geld, ergänzen Sie eine ereignisgesteuerte Invalidation – und behalten Sie eine konservative TTL als Rückfall für verpasste Ereignisse.

    Diese Startpunkte sind keine Gesetze. Schon die Länge der TTL kann eine Strategie von gut zu schädlich verschieben. Eine fünfminütige TTL, die für eine Startseite harmlos ist, wäre für Live-Bestände problematisch. Segmentieren Sie TTLs nach der tatsächlichen Änderungsrate der jeweiligen Daten.

    Ihren Cache mit Redis frisch halten

    Die Teams, die Cache-Konsistenz beherrschen, schichten ihre Mechanismen: ein Muster, das zur Arbeitslast passt, eine TTL als Sicherheitsnetz und ein ereignisgesteuertes Frischesignal. Der schwierige Teil ist zu entscheiden, wie viel von dieser dritten Schicht Ihr Team selbst bauen und betreiben will. Das manuelle Errichten bedeutet, CDC-Connectors zu betreiben, Ordnung und Duplikate zu verwalten und eigene Race-Condition-Logik zu schreiben.

    Redis Data Integration (RDI) übernimmt diese Schicht für Sie. RDI ist ein Change-Data-Capture-System, das Änderungen in einer Quelldatenbank verfolgt und auf Redis anwendet – zuerst durch einen vollständigen Snapshot, dann durch Streaming der Änderungen, sobald sie eintreten. In unterstützten RDI-Bereitstellungen können Aktualisierungen aus Ihrer Quelldatenbank den Cache innerhalb weniger Sekunden erreichen, abhängig von Quellenlast, Connector-Konfiguration und Netzwerkbedingungen. Sie definieren in Konfigurationsdateien, wie relationale Tabellen auf Redis Hashes, JSON oder Streams abgebildet werden. Die Lieferung erfolgt At-Least-Once, und RDI bewahrt die Änderungsreihenfolge pro Tabelle. So bleibt Ihr Cache frisch und Ihre Anwendung schnell – ohne dass Sie die Komplexität selbst stemmen müssen.

    Quelle: redis.io

  • Neo4j Virtual Graph: Daten als Knowledge Graph nutzen, ohne sie zu verschieben

    Neo4j Virtual Graph: Daten als Knowledge Graph nutzen, ohne sie zu verschieben

    Stell dir vor, du verwaltest Kundendaten, Kontobewegungen und Transaktionshistorien in einem Cloud Data Warehouse wie Snowflake oder BigQuery. Du willst Zusammenhänge verstehen: Welche Konten gehören zu derselben Person? Welche Transaktionen laufen über mehrere Schritte? Dafür wäre ein Knowledge Graph nützlich. Das Verschieben der Daten in eine separate Graphdatenbank wäre aufwendig, teuer und würde bestehende Governance-Regeln aufweichen. Bisher gab es ein Dilemma: entweder auf die Analyse von Beziehungen verzichten oder in komplexe ETL-Pipelines und eine zweite Datenhaltung investieren. Neo4j hat mit Virtual Graph eine Lösung vorgestellt, die diesen Konflikt auflöst – jetzt für alle Aura-Kunden in der öffentlichen Vorschau verfügbar.

    Eine Bibliothek ohne Bücher umzustellen

    Denk an eine riesige Bibliothek. Die Bücher stehen in den Regalen eines Data Warehouse. Du möchtest ein vernetztes Verzeichnis: welche Bücher thematisch verwandt sind, welche Autoren korrespondieren, welche Leser ähnliche Interessen haben. Normalerweise müsstest du alle Bücher umräumen. Virtual Graph funktioniert anders: Du erstellst ein Karteikartensystem – das Graphmodell –, das auf die vorhandenen Bücher verweist, ohne sie umzustellen. Bei einer Abfrage sucht das System im Karteikasten und holt die Informationen direkt aus den Regalen. Das ist die Idee der Zero-Copy-Architektur: Daten bleiben, wo sie sind, und du befragst sie als Graph.

    Wie Virtual Graph funktioniert

    Der Prozess beginnt mit der Verbindung zu einer Datenquelle. Virtual Graph unterstützt derzeit Snowflake, Databricks und Google BigQuery. Nach der Authentifizierung schlägt eine KI-gestützte Funktion ein Graphmodell vor: Sie analysiert Tabellen, erkennt, welche Spalten als Knoten (Entitäten) und welche als Beziehungen (Fremdschlüssel) infrage kommen, und weist Eigenschaften zu. Du prüfst und passt den Vorschlag an – die Kontrolle bleibt bei dir. Dann erstellst du den virtuellen Graphen. Von da an formulierst du Abfragen in Cypher. Im Hintergrund übersetzt eine deterministische Engine das Cypher in optimiertes SQL und führt es auf der Quelldatenbank aus. Die Übersetzung ist nicht KI-gesteuert, sondern regelbasiert. Dieselbe Abfrage liefert immer dasselbe SQL mit vorhersagbarer Leistung und Kosten. Die Ergebnisse kommen als Graph strukturiert über das Bolt-Protokoll zurück. Das System verhält sich wie eine normale Neo4j-Datenbank, sodass bestehende Tools und Clients direkt darauf zugreifen können.

    Drei Komponenten, die zusammenwirken

    Hinter Virtual Graph stecken drei Komponenten. Erstens das Graphdatenmodell, das du selbst definierst und bei Bedarf von der KI generieren lässt. Es gehört dir, du kannst es jederzeit bearbeiten. Zweitens die Cypher-to-SQL-Übersetzungsschicht, die die Abfragen auf die Quelle überträgt. Drittens eine Graph-Compute-Schicht, die Muster, Traversale und Pfade behandelt, die sich allein mit SQL nicht effizient abbilden lassen. Diese Schicht läuft auf Neo4j-Seite und ergänzt die Pushdown-Logik. Das Zusammenspiel erlaubt komplexe Graphabfragen wie mehrstufige Verkettungen („Welche Konten teilen sich einen wirtschaftlichen Eigentümer?“) korrekt zu beantworten, obwohl die Rohdaten in einem tabellarischen Warehouse liegen.

    Wofür du Virtual Graph einsetzen solltest

    Virtual Graph ist nicht für jeden Workload gedacht. Neo4j unterscheidet klar zwischen Workloads, die Sekunden tolerieren, und solchen, die Millisekunden brauchen. Virtual Graph eignet sich für GraphRAG (Retrieval-Augmented Generation), bei dem KI-Agenten Kontext aus einem Knowledge Graph abrufen. Antwortzeiten im Sekundenbereich sind akzeptabel. Auch für Batch-Analysen, explorative Datenanalysen durch Data Scientists oder das Anreichern von Referenzdaten ist Virtual Graph ideal. Du nutzt die Rechenleistung deiner bestehenden Warehouse-Infrastruktur und bleibst innerhalb der Governance-Grenzen. Keine zusätzlichen Kosten für Datenbewegung, kein Aufbau einer zweiten Datenhaltung.

    Wann du besser zum nativen Neo4j greifst

    Für Workloads, die Millisekunden erfordern – wie Echtzeit-Betrugserkennung, Online-Identitätsauflösung oder kontinuierlich aktualisierte Graphen mit ACID-Transaktionen – bleibt das native Neo4j (AuraDB oder selbstverwaltet) die richtige Wahl. Virtual Graph ersetzt es nicht, sondern ergänzt es. Faustregel: Wenn dein KI-Agent in Sekunden denkt, reicht Virtual Graph. Wenn er in Millisekunden handeln muss, brauchst du einen nativen Graphen. Wenn ein Teil deiner Daten beide Anforderungen stellt, kannst du Teilmengen aus dem virtuellen Graphen in einen nativen materialisieren, ohne das Modell neu zu erstellen.

    Was noch kommt: Roadmap und Preisgestaltung

    Die öffentliche Vorschau ist erst der Anfang. Neo4j hat weitere Funktionen angekündigt: virtuelle Graphen in native Neo4j-Datenbanken materialisieren, föderierte Abfragen über mehrere Quellen hinweg in einer Cypher-Abfrage, Graph-Algorithmen auf virtuellen Graphen, Integration weiterer Datenquellen (operative Datenbanken, selbstverwaltete Neo4j-Installationen). Die öffentliche Vorschau ist kostenlos. Ab dem 1. September plant Neo4j die Abrechnung zu Preisen, die denen von AuraDB Pro entsprechen. Die allgemeine Verfügbarkeit soll kurz danach folgen. Du kannst Virtual Graph jetzt im Aura Console einrichten: Verbinde deine Snowflake-, Databricks- oder BigQuery-Zugangsdaten, lass dir ein Graphmodell generieren, passe es an, erstelle den Graphen und führe deine erste Cypher-Abfrage aus – alles in wenigen Minuten.

    Einordnung: Pragmatischer Schritt für die Graph-Welt

    Mit Virtual Graph bewegt sich Neo4j weg vom Dogma, dass alle Daten in die Graphdatenbank migriert werden müssen. Stattdessen wird die Graph-Abstraktion dorthin gebracht, wo die Daten bereits liegen. Das senkt die Einstiegshürde für Unternehmen, die in große Data Warehouses investiert haben. Die Architektur bleibt transparent und deterministisch – kein Blackbox-Verhalten. Für Entwickler und Architekten, die GraphRAG oder wissensbasierte KI-Systeme aufbauen, bietet Virtual Graph einen praktischen Weg, ohne die Dateninfrastruktur zu revolutionieren. Es füllt die Lücke zwischen starren Tabellen und flexiblem Graphen.

    Quelle: neo4j.com

  • Der Relay-Markt: Wie gestohlene KI-Schlüssel zu einem Milliardengeschäft wurden

    Der Relay-Markt: Wie gestohlene KI-Schlüssel zu einem Milliardengeschäft wurden

    Sie bezahlen für einen KI-Dienst wie ChatGPT oder Claude einen Festpreis pro Monat oder nach Verbrauch. Hinter den Kulissen gibt es einen Schwarzmarkt von Wiederverkäufern. Sie bieten denselben Zugang zu einem Bruchteil des offiziellen Preises an. Das ist ein ausgewachsenes Ökosystem mit eigenen Preisvergleichsseiten, Affiliate-Programmen und täglichen Lotterien für API-Keys. Der Sicherheitsforscher Matt Lenhard von Vectoral hat dieses Netzwerk über Monate untersucht und seine Ergebnisse veröffentlicht.

    Der Markt funktioniert wie ein Schwarzmarkt für Konzerttickets. Dieselben Plätze werden mehrfach verkauft, die Künstler zahlen drauf, niemand merkt, dass die Tickets gestohlen sind. Offizieller Preis: 100 Euro. Der Wiederverkäufer bietet es für 10 Euro an. Er hat einen Zugang gefunden, den er unendlich oft kopieren kann.

    Was ist ein Relay?

    Der Kern dieses Marktes ist der sogenannte Relay – zu Deutsch „Transferstation“. Ein Relay leitet Traffic zu den offiziellen KI-Modellen der großen US-Anbieter (OpenAI, Anthropic, Google) weiter, aber zu einem starken Rabatt. Ein Beispiel aus Lenhards Recherche: Ein Anbieter listete ein Paket, das offiziell 3.333 Dollar wert wäre, für umgerechnet 425 chinesische Yuan – das entspricht etwa 0,13 Dollar Nutzung pro ausgegebenem Dollar. Bis zu 97,8 Prozent Rabatt.

    Technisch betreiben die Anbieter eine Proxy-Software. Sie sammeln Hunderte oder Tausende API-Keys – gestohlen, über Testkonten generiert oder mit kompromittierten Kreditkarten finanziert – und bündeln sie zu einem Pool. Jede Anfrage wird durch einen dieser Keys geleitet. Der Relay zieht eine Gebühr ab, meist weit unter dem offiziellen Preis.

    Die vier Schichten des Marktes

    Der gesamte Markt ist in vier Ebenen organisiert, die Lenhard beschreibt. Ganz oben stehen die Karten- und Account-Händler (卡商 und 号商). Sie verkaufen virtuelle Kreditkarten, die die Prüfungen der US-Anbieter bestehen, und liefern in großen Mengen registrierte Accounts.

    Darunter die Account-Pools (账号池). Diese Dienste aggregieren Dutzende oder Hunderte von Accounts, verwalten Authentifizierungstokens, überwachen Rate-Limits, wechseln bei Sperrungen automatisch auf den nächsten Account und stellen eine einheitliche API-Schnittstelle bereit. Die Pools sind nicht auf die großen Labs beschränkt: Auch Konsumentenprodukte wie Kiro oder antigravity werden systematisch rückentwickelt, um deren Modellzugänge zu nutzen.

    Die dritte Schicht sind die Relays selbst, die Transferstationen. Sie verpacken die API des Pools in ein chinesischsprachiges Produkt, kümmern sich um Abrechnung, Rechnungsstellung und Kundenservice per WeChat-Gruppen. Der Wettbewerb findet fast nur über den Preis statt.

    Ganz unten stehen die Endnutzer: chinesische Entwickler, kleine Startups und mittelständische SaaS-Unternehmen, die günstige Inferenz suchen. Und größere kommerzielle Käufer, die die Infrastruktur für Model-Destillation nutzen – das Trainieren eigener Modelle auf Basis der Ausgaben der Frontier-Modelle. In der Praxis sind die Grenzen fließend: Viele Betreiber führen sowohl Pool als auch Relay, in den Foren werden die Begriffe oft synonym verwendet.

    Die Software dahinter

    Die meisten Relays basieren auf zwei Open-Source-Projekten: one-api und new-api. Das sind OpenAI-kompatible Gateways. Ein Betreiber installiert das Panel, fügt Kanäle (渠道) hinzu – jeder Kanal repräsentiert einen Anbieter plus einen Pool von API-Keys – und stellt einen Endpunkt zur Verfügung, der exakt der OpenAI-API entspricht. Käufer müssen nur ihr bestehendes SDK auf die URL des Relays umstellen.

    Bei jeder Anfrage zieht das System einen Key aus dem Pool, leitet die Anfrage an den Originalanbieter weiter, gibt die Antwort zurück und zieht dem Nutzer Kontingent ab – bepreist nach Nutzung multipliziert mit einem Faktor (倍率). Das Panel verwaltet Benutzer, Tokens, Preisstufen, Logs und Abrechnung. new-api ist ein aktiver Fork von one-api und bringt Funktionen für Selbstbedienungszahlung, Aufladung sowie Bild-, Video- und Audiomodelle mit. Unter den beobachteten Relays kommt one-api etwa viermal häufiger vor als new-api – das originale Basisprojekt ist weiter verbreitet, auch wenn new-api speziell für den Verkauf gebaut wurde.

    Die Software an sich ist nicht illegal. Viele Unternehmen hosten one-api oder new-api auf eigenen Servern, um ihre Accounts hinter einem Gateway mit Team-Kontingenten und Ausgabenkontrolle zu bündeln. Missbrauch beginnt, wenn die Kanäle mit gestohlenen, geleakten oder gepoolten Schlüsseln bestückt werden und der Betreiber diesen Zugang gegen die Nutzungsbedingungen der Anbieter weiterverkauft.

    Die Methoden der Abuser

    Lenhard nennt mehrere Techniken zur Beschaffung von Keys. Free-Trial-Abuse: automatisierte Massenerstellung von Konten für kostenloses Guthaben. Chargeback-Angriffe: Betrüger lassen Kreditkartenzahlungen nach der Nutzungsperiode zurückbuchen oder verwenden gestohlene Karten. Prepaid-Karten: Konten werden mit Prepaid-Karten aufgeladen, die ein begrenztes Limit haben – der Schaden des Anbieters bleibt begrenzt, aber der Relay kann trotzdem Gewinn machen.

    Eine weitere Methode ist der „Open Inference“-Missbrauch: Jeder Support-Chatbot ohne strenge Guardrails ist ein Einstiegspunkt. Angreifer leiten Traffic durch den Chatbot und nutzen so die dahinterliegende KI. Dann gibt es „Denial of Wallet“: Eine Menge gleichzeitiger Anfragen, die nicht den Dienst stören, sondern das Kontingent des Anbieters verbrennen – aus Bosheit oder Konkurrenzgründen, ohne finanziellen Gewinn.

    Die Käufer und das Ausmaß

    Die Hauptabnehmer lassen sich in drei Gruppen einteilen: Entwickler, die günstige Tokens benötigen; Startups, die Geoblocking umgehen wollen – viele US-Modelle sind in China nicht offiziell verfügbar; und Unternehmen, die Model-Destillation betreiben. In einem chinesischen Forum (V2EX) diskutieren Nutzer darüber, wie sie mit destillierten Modellen Millionen verdient haben. „Wenn du schnelle Inferenz bra

    Quelle: vectoral.com