NoSQL

SurrealDB, la base de données Full-Stack

Objectifs de la formation

  • Maîtriser le langage SurrealQL pour manipuler des données complexes.
  • Concevoir une architecture de données performante utilisant les Record Links et les relations Graphes.
  • Sécuriser l'accès direct à la base depuis le Frontend via les Scopes et les Permissions.
  • Implémenter des fonctionnalités avancées : recherche phonétique, Géo-spatial et Full-Text.
  • Déployer et administrer une instance SurrealDB sur le Surreal Cloud.


Programme de la formation

Introduction et Écosystème

  • Architecture Rust
  • binaire unique
  • modes d'exécution (In-memory, TiKV, RocksDB).
  • Présentation de Surrealist (GUI) et du CLI.

Travaux pratiques

Installation, lancement d'une instance locale et exécution de commandes CRUD basiques (CREATE, SELECT, UPDATE, DELETE).

Modélisation Document et Record IDs

  • Flexibilité du Schéma-less vs rigueur du Schéma-full.
  • Types de données étendus (Durations, Datetimes, Géométries).
  • La puissance des Record IDs : IDs numériques, textes (user:georges), ou complexes (object:['Paris', 2026]).

Travaux pratiques

Création d'une table lieu structurée avec des IDs sémantiques et gestion de données imbriquées pour les équipements.

Record Links (Relations 1-N)

  • Remplacer les JOINs par des pointeurs directs.
  • Performance des liens de records.
  • Navigation "Dot-notation" pour traverser les tables à l'infini.

Travaux pratiques

Création d'une table evenement liée à un lieu. Requête de récupération des informations du lieu directement depuis la table événement sans jointure.

Relations Graphes (Relations N-N)

  • Syntaxe RELATE.
  • Les tables de relations (Edges).
  • Stocker des propriétés sur les arcs (ex: date d'amitié, rôle dans un groupe).
  • Traversée bidirectionnelle (-> et <-).

Travaux pratiques

Modélisation du plan de table : lier les invités aux tables avec une table de relation affectation contenant le choix du menu.

Scripting et Fonctions JavaScript

  • DEFINE FUNCTION pour centraliser la logique.
  • Utilisation du moteur V8 embarqué pour écrire des fonctions complexes en JavaScript.
  • Passage de paramètres et typage de retour.

Travaux pratiques

Écrire une fonction fn::salutation($nom) en JS qui gère les cas particuliers d'affichage et de civilité.

Événements et Automatisation

  • Les EVENTS (Triggers) sur CREATE, UPDATE ou DELETE.
  • Utilisation de $before et $after.
  • Champs calculés dynamiquement avec la clause VALUE.

Travaux pratiques

Création d'un trigger qui met à jour automatiquement le nombre de places restantes sur une table dès qu'un nouvel invité y est lié.

Sécurité, Authentification et Scopes

  • Architecture "No-Backend".
  • Définition des SCOPES pour l'inscription et la connexion.
  • Variables $auth et $session.
  • Sécurité granulaire avec PERMISSIONS au niveau des tables et des champs.

Travaux pratiques

Créer un portail où un invité se connecte avec son email/pass et ne peut modifier que sa propre fiche (nom, menu) mais pas celle des autres.

Full-Text Search et Phonétique

  • Configuration des ANALYZERS (tokenizers, filters).
  • Indexation FULLTEXT.
  • Recherche floue avec l'opérateur @@.
  • Introduction à la phonétique (Phonex/Soundex).

Travaux pratiques

Mise en place d'une barre de recherche capable de trouver "Lefebvre" même si l'utilisateur tape "Lefevre" ou "Luvr".

Géolocalisation et Indexation Spatiale

  • Géométries GeoJSON.
  • Index MTREE 2D.
  • Fonctions de distance et opérateurs d'inclusion (INSIDE).

Travaux pratiques

Implémenter une recherche de proximité pour lister les parkings disponibles dans un rayon de 2km.

Temps Réel et Déploiement Cloud

  • LIVE SELECT et WebSockets.
  • Architecture distribuée.
  • Découverte de Surreal Cloud.
  • Stratégies de backup et migration.

Travaux pratiques

Déploiement de la base finale sur le Cloud et test d'une Live Query : voir les confirmations d'invités s'afficher instantanément sur un tableau de bord sans rafraîchir la page.

Please login to get access to the quiz
ArangoDB, la base de données NoSQL multi-modèle (Prev Lesson)
Back to NoSQL
Public

Développeurs (Back, Front ou Full-stack) et Architectes logiciel.

Pré-requis

Connaissances SQL ou NoSQL, avoir quelques notions de développement d'API