Aller au contenu principal

SpacetimeDB

Une base de données relationnelle pour les applications en temps réel

SpacetimeDB est une base de données relationnelle conçue pour fonctionner comme un "backend en une boîte" (backend-in-a-box). Son objectif principal est de simplifier le développement d'applications en temps réel, en particulier pour les jeux vidéo multijoueurs et les applications collaboratives.

Voici les points clés pour comprendre ce qu'est SpacetimeDB :

1. Une fusion entre la base de données et le serveur

Traditionnellement, pour créer une application multijoueur, vous avez besoin de plusieurs couches :

  • Une base de données (pour stocker les données).
  • Un serveur d'application (pour la logique métier, les autorisations).
  • Un système de networking/WebSocket (pour synchroniser les joueurs en temps réel).

SpacetimeDB fusionne ces trois couches. Vous écrivez votre logique métier (le code du serveur) directement dans la base de données sous forme de modules. La base de données gère elle-même la synchronisation en temps réel avec les clients.

2. Programmable via WebAssembly (WASM)

L'une des caractéristiques les plus innovantes est que vous pouvez écrire votre logique de base de données et vos "stored procedures" (procédures stockées) dans des langages classiques comme Rust ou C#. Le code est compilé en WebAssembly (WASM) pour s'exécuter à l'intérieur de la base de données. Cela permet d'avoir des performances très élevées (proches du code natif) tout en garantissant la sécurité et la portabilité.

3. SQL et Relationnel

Malgré sa architecture moderne, SpacetimeDB reste une base de données relationnelle. Elle utilise le langage SQL standard pour les requêtes. Si vous connaissez SQL, vous pouvez utiliser SpacetimeDB.

4. Synchronisation en temps réel

Active Queries

SpacetimeDB offre une fonctionnalité puissante appelée "Active Queries". Au lieu de demander des données une seule fois ("Select * from..."), un client peut s'abonner à une requête. La base de données enverra alors automatiquement les mises à jour au client chaque fois que les données changent. C'est idéal pour les jeux où l'état du monde change constamment.

Schéma de fonctionnement de SpacetimeDB

5. Cas d'usage principaux

Bien qu'il soit possible de l'utiliser pour diverses applications, SpacetimeDB cible principalement :

  • Les jeux multijoueurs (MMO, jeux de stratégie, FPS) : Il élimine la complexité du "netcode" (la gestion du réseau).
  • Les applications collaboratives : Similaires à Google Docs ou Figma, où plusieurs utilisateurs modifient les mêmes données simultanément.

En résumé

SpacetimeDB tente de résoudre le problème de la complexité des backends modernes en déplaçant toute la logique au plus près des données. Cela permet aux développeurs de se concentrer sur le code de leur application plutôt que sur l'infrastructure réseau.

SpacetimeDB est un projet open-source (sous licence Apache 2.0 pour le code, et license Business Source License pour certains aspects commerciaux) qui commence à gagner en popularité dans les cercles de développement de jeux vidéo et de systèmes distribués.