- SpacetimeDB ist ein System, das Datenbank- und Serverfunktionen kombiniert
- Anstatt einen herkömmlichen Web- oder Gameserver separat zu betreiben, verbinden sich Clients direkt mit der Datenbank und führen dort die Anwendungslogik aus
- App-Logik kann über in Rust geschriebene gespeicherte Prozeduren in Form von „Modulen“ direkt in die Datenbank hochgeladen werden
- Die gesamte Anwendung kann als einzelnes Rust-Binary bereitgestellt werden; DevOps, Container, Server und Microservices sind dadurch nicht erforderlich
Hauptmerkmale
- Das Konzept ähnelt Smart Contracts, hat aber nichts mit Blockchain zu tun
- Deutlich schneller als bestehende Smart-Contract-Systeme
- Das Backend des MMORPGs BitCraft Online besteht aus SpacetimeDB allein
- Alle Elemente im Spiel werden in der Datenbank in Echtzeit verarbeitet und mit den Clients synchronisiert
- Für Echtzeit-Anwendungen optimiert und mit dem Ziel minimaler Latenz entwickelt
- Der Anwendungszustand wird im Speicher gehalten und zur Wiederherstellung im WAL (Write-Ahead Log) protokolliert
Installation
Installation unter macOS / Linux
Installation unter Windows
Mit Docker ausführen
- Falls Docker verwendet wird
docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start
Vier Schritte für den Einstieg
- Das CLI-Tool
spacetime installieren
- Mit dem Befehl
spacetime start einen einzelnen Node starten
- Ein Modul in einer der unterstützten Sprachen schreiben und hochladen
- Mit einer Client-Bibliothek eine Verbindung zur Datenbank herstellen
Sprachunterstützung
Serverseitige Module
Client-Bibliotheken
Lizenzinformationen
- Verwendet die Lizenz BSL 1.1
- Wechselt nach einer bestimmten Zeit zu AGPL v3.0 + Linking Exception
- Erfordert keine Offenlegung des Quellcodes von Anwendungen, die mit SpacetimeDB integriert sind
- Ein Free-Software-Lizenzmodell, das so gestaltet ist, dass Beiträge an die Community zurückfließen
Offizielle Dokumentation
5 Kommentare
Interessante Idee. Ich frage mich, wie sie Dinge wie DDoS oder Authentifizierung gut gelöst haben.
Allein der Name ist schon verdammt cool.
Ich dachte, das wäre wirklich originell und sähe großartig aus, aber anscheinend hatte ich es schon vor langer Zeit auf Gitstar markiert. Mein Gedächtnis …
SpaceTimeDB - DB und Server in einer Einheit kombiniert
Ich hatte es vor anderthalb Jahren schon einmal vorgestellt, und es wird weiterhin gut aktualisiert. Offenbar haben auch a16z und Supercell investiert.
Hacker-News-Kommentare
SpacetimeDB gehört zu einem technischen Genre der „kosmischen Neugestaltung des Denkens“. Das birgt die Möglichkeit, die Leistung durch strukturelle Neuordnung stark zu verbessern.
Bester Kommentar aus dem vorherigen Beitrag:
SpacetimeDB wurde entwickelt, um das große MMORPG BitCraft zu unterstützen.
Es ist schwer zu verstehen, wie man mit dieser Technologie Spieleserver schreiben soll.
BitCraft sieht niedlich aus.
YouTube empfiehlt SpacetimeDB, hat aber noch nie Videospiele entwickelt.
Dieses Projekt steht unter der BSL und hat eine etwas belastende zeitliche Einschränkung.
Man sollte das Schema relationaler Datenbanken nicht mit der Art verwechseln, wie Apps Daten verarbeiten.
Ich frage mich, ob es bei Singleplayer-Spielen sinnvoll ist, eine Datenbank lokal laufen zu lassen.
Es wirkt wie eine In-Memory-Datenbank mit einer WASM-Runtime zum Hosten von Domain-Logik.