Best Practices für Datenspeicher

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Verwenden Sie diese Praktiken, um zuverlässige, skalierbare und beobachtbare Daten während ihres gesamten Lebenszyklus zu organisieren und zu verwalten.

Organisieren Sie Ihre Daten

Erstellen Sie weniger Datenspeicher

Datenspeicher verhalten sich ähnlich wie Tabellen in Datenbanken. Verwenden Sie eine kleine, feste Anzahl von Datenspeichern und organisieren Sie die Datensätze innerhalb dieser nach Schlüssel. Speichern Sie beispielsweise das Profil jedes Spielers in einem PlayerData Datenspeicher, anstatt für jeden Spieler einen eigenen Datenspeicher zu erstellen.

Verwenden Sie einen oder wenige Schlüssel pro Spieler

Speichern Sie die persistenten Daten für jeden Spieler unter einem Schlüssel, wann immer die Daten innerhalb des 4 MB Objektgrößenlimits liegen. Verwenden Sie beispielsweise einen Schlüssel wie User_123456 im PlayerData Datenspeicher. Dieses Muster reduziert Anfragen, ermöglicht es Ihnen, verwandte Werte atomar zu aktualisieren, und erleichtert das Nachvollziehen von Rollbacks.

Wenn verschiedene Teile der Daten eines Spielers unterschiedliche Zugriffs- oder Größen- bzw. Durchsatzgrenzen haben, teilen Sie den Datensatz in eine kleine Anzahl von deterministischen Schlüsseln auf. Halten Sie Daten, die atomar geändert werden müssen, im selben Schlüssel.

Verwenden Sie statische Schlüssel-Muster und Präfixe

Bauen Sie Schlüsselnamen aus stabilen Identifikatoren und statischen Mustern, wie User_{UserId}. Verwenden Sie keine Anzeigenamen oder andere Werte, die sich ändern können. Statische Muster machen Schlüssel über Server und Tools hinweg vorhersehbar. Für Datenspeicher ermöglichen sie auch, dass automatisierte Verfahren zum Recht auf Vergessen die Spieldaten identifizieren.

Verwenden Sie Präfixe, um verwandte Schlüssel zu gruppieren. Ein Erlebnis, das mehrere Charakterprofile unterstützt, könnte beispielsweise User_123456/Profile/Warrior und User_123456/Profile/Mage verwenden. Sie können dann User_123456/Profile an ListKeysAsync() übergeben, um die Profile dieses Spielers aufzulisten.

Scopes sind eine weitere Möglichkeit, einen Datenspeicher zu unterteilen. Ein Scope fügt jedem Schlüssel in dieser Datenspeicherinstanz einen String voran, und der Standard ist global.

Bewerten Sie Datenspeichermodule

Drittanbieter-Datenspeichermodule sind immer eine Option und in vielen Fällen möglicherweise vorzuziehen, als Systeme von Grund auf neu zu erstellen. Überprüfen Sie vor der Übernahme eines Moduls dessen Eigentum, Wartungsstatus und Funktionsumfang. Verstehen Sie, wie Sie auf Ihre Daten zugreifen und diese ohne das Modul migrieren können.

Reduzieren und verteilen Sie Anfragen

Puffern Sie Spieldaten im Speicher

Laden Sie die Daten eines Spielers zu Beginn einer Sitzung und halten Sie eine serverlokale Kopie für das Gameplay. Aktualisieren Sie die lokale Kopie, anstatt für jede Änderung eine Datenspeicheranfrage zu senden. Speichern Sie sie regelmäßig, wenn der Spieler das Spiel verlässt, wenn der Server heruntergefahren wird und an kritischen Punkten wie dem Kaufprozess. Wählen Sie ein regelmäßiges Speicherintervall, das innerhalb Ihrer Anfragegrenzen bleibt und kürzer ist als jede Sitzungssperrzeit; das Beispiel für Spieldaten und Käufe verwendet 180 Sekunden.

Versetzen Sie wiederkehrende Anfragen

Starten Sie keine wiederkehrenden Anfragen von jedem Server nach demselben Zeitplan. Weisen Sie jedem Server oder Spieler vor dem Start einer festen Frequenzschleife einen zufälligen anfänglichen Versatz zu. Fügen Sie für Abfrage- oder Koordinationsschleifen, die keinen genauen Rhythmus erfordern, begrenztes zufälliges Jitter zu jedem Intervall hinzu. Diese Muster verteilen Anfragen über die Zeit und reduzieren synchronisierte Verkehrsspitzen.

Wiederholen Sie vorübergehende Fehler

Umwickeln Sie Anfragen in pcall() und wiederholen Sie vorübergehende Fehler mit exponentiellem Backoff. Fügen Sie jedem Delay zufälliges Jitter hinzu, damit Server nicht gleichzeitig wiederholen. Begrenzt die Verzögerung und die Anzahl der Versuche und wiederholen Sie keine Fehler, die durch ungültige Anfragen oder Operationen verursacht werden, die keine nützlichen Ergebnisse mehr liefern können.

Verarbeiten Sie Datenspeicherwiederholungen in der Reihenfolge für jeden Schlüssel. Eine ältere Anfrage, die nach einer neueren Anfrage wiederholt wird, die erfolgreich war, kann neuere Daten überschreiben. Berücksichtigen Sie auch Schreibvorgänge mit unbekannten Ergebnissen: Ein fehlgeschlagener Aufruf bedeutet, dass der Server keine erfolgreiche Antwort erhalten hat, aber das Backend möglicherweise den Schreibvorgang abgeschlossen hat. Weitere Informationen finden Sie unter Fehlercodes und -grenzen für Datenspeicher und Wiederholungen.

Bevorzugen Sie UpdateAsync über SetAsync

Bevorzugen Sie UpdateAsync(), wenn ein Schreibvorgang vom aktuellen Wert abhängt oder wenn mehrere Server denselben Schlüssel schreiben könnten. UpdateAsync() liest den neuesten Wert in Ihren Callback, bevor er schreibt, was verlorene Aktualisierungen reduziert. SetAsync() überschreibt den Schlüssel, ohne zuerst zu lesen, und kann Inkonsistenzen verursachen, wenn zwei Server gleichzeitig schreiben.

Verwenden Sie SetAsync(), wenn Sie einen neuen Schlüssel erstellen oder einen Wert ersetzen, der nicht vom vorherigen Wert abhängt. Für einen Vergleich der beiden Methoden siehe Set vs Update.

Sharden Sie heiße Schlüssel

Jeder Schlüssel hat Lese- und Schreibdurchsatzgrenzen. Wenn ein logischer Datensatz diese Grenzen konstant erreicht, nachdem Sie unnötige Anfragen reduziert haben, shard ihn über deterministische Schlüssel. Wählen Sie einen stabilen Shard aus einem Identifikator, wie User_{UserId}_Inventory_{ShardId}, damit jeder Server dieselben Daten an denselben Shard weiterleitet.

Sharding macht die Aufrechterhaltung der Konsistenz und die Durchführung zukünftiger Migrationen komplexer. Sharden Sie keine Daten, die in einen Schlüssel passen und unter den Durchsatzgrenzen bleiben.

Erstellen Sie einen Betriebsworkflow

Verwenden Sie die verfügbaren Tools zusammen:

  1. Beobachten. Verwenden Sie das Data Stores Observability Dashboard, um Anfragen, Antwortstatus, Durchsatz und Speicher zu verfolgen. Konfigurieren Sie benutzerdefinierte Warnungen für wichtige Datenspeicherkennzahlen, damit Ihr Team auf anhaltende Fehler oder unerwartetes Wachstum reagieren kann. Benachrichtigungen im Creator Hub informieren Sie auch, wenn der Speicher die Grenzen erreicht oder überschreitet, und enthalten Anleitungen und Links zu Dashboards.
  2. Überprüfen. Verwenden Sie Data Stores Manager, um Datenspeicher, Schlüssel, Speichernutzung und geschätzte Kosten zu überprüfen. Wenn das Erlebnis mehr als 100 Datenspeicher hat, zeigt die Liste der Datenspeicher keine Größen- und Schlüsselanzahlen an. Verwenden Sie Open Cloud oder den Data Stores Batch Processor für diese Kennzahlen.
  3. Beheben. Verwenden Sie den Data Stores Manager für einzelne Datensätze. Verwenden Sie die Open Cloud Datenspeicher-APIs oder den Data Stores Batch Processor für wiederholbare oder großangelegte Workflows.
  4. Absichtlich skalieren. Reduzieren Sie zuerst unnötigen Speicher und Anfragen. Wenn die legitime Nutzung die Standardquoten überschreitet, bewerten Sie Erweiterte Dienste.

Open Cloud und Spieleserver teilen sich das anfragebudget auf Erlebnisebene. Begrenzen Sie operationale Open Cloud-Skripte, damit sie den Live-Verkehr nicht stören.

Verwalten Sie den Datenlebenszyklus

Verwenden Sie Datenspeicherversionen, anstatt für jede Revision einen neuen Schlüssel zu erstellen. Nur die neueste Version eines Schlüssels zählt zur Speichernutzung, und Versionen ermöglichen es Ihnen, frühere Werte zu überprüfen oder wiederherzustellen.

Verwenden Sie Speichermodule für temporäre und sich schnell ändernde Daten. Daten im Speichermodul verfallen automatisch und erhöhen nicht die Speichernutzung des persistenten Datenspeichers.

Löschen Sie Testdaten, wenn die Tests enden, und entfernen Sie Daten für abgelaufene Ereignisse oder eingestellte Funktionen. Nachdem Sie einen Datenspeicher zur Löschung markiert haben, gibt es eine 30-tägige Frist, in der Sie ihn wiederherstellen können. Nach diesen 30 Tagen löscht Roblox den Datenspeicher dauerhaft. Weitere Informationen finden Sie unter Data Stores Manager.

Richten Sie die Verarbeitung des Rechts auf Vergessen ein

Konfigurieren Sie die automatisierte Verarbeitung des Rechts auf Vergessen (RTBF) für Spieldaten, die statische Datenspeicher- und Schlüsselmuster folgen. Automatisierte RTBF ist der bevorzugte Workflow, da Roblox Ihre Löschvorlagen anwendet, wenn es eine berechtigte Anfrage bearbeitet.

Wenn die automatisierte RTBF Ihr Datenschema nicht unterstützt, verwenden Sie den Webhook zum Recht auf Löschung, um einen benutzerdefinierten Löschworkflow auszuführen. Stellen Sie sicher, dass entweder Workflow alle übereinstimmenden Spieldaten entfernt.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.