image de chargement
Retour au glossaire

Fauna

Base de données distribuée serverless offrant des transactions ACID, une scalabilité globale et une architecture multi-région.

Mis à jour le 14 janvier 2026

Fauna est une base de données distribuée serverless conçue pour les applications cloud-natives nécessitant une cohérence forte et une disponibilité globale. Contrairement aux bases de données traditionnelles, Fauna combine les avantages des bases NoSQL avec les garanties transactionnelles des bases relationnelles, tout en offrant une scalabilité automatique sans gestion d'infrastructure. Son architecture unique permet de déployer des applications réactives avec une latence minimale à l'échelle mondiale.

Fondements

  • Architecture distribuée native avec réplication multi-région automatique et cohérence forte garantie par le protocole Calvin
  • Modèle de données flexible combinant documents, graphes et relations avec indexation automatique et requêtes FQL
  • Transactions ACID complètes avec isolation sérialisable, permettant des opérations complexes sans compromis sur la cohérence
  • Serverless natif avec facturation à l'usage, élimination du provisionnement et scaling automatique instantané

Avantages

  • Cohérence globale garantie : transactions ACID sur toutes les régions sans latence additionnelle
  • Zéro maintenance opérationnelle : aucun serveur à gérer, pas de sharding manuel, mises à jour automatiques
  • Scalabilité transparente : adaptation instantanée aux pics de charge avec performance linéaire
  • Sécurité granulaire : système de permissions au niveau des documents avec ABAC et chiffrement end-to-end
  • Expérience développeur optimale : API GraphQL native, drivers officiels et requêtes temporelles intégrées

Exemple concret

Voici une implémentation typique d'un système de commandes avec transactions garantissant la cohérence des stocks :

order-service.ts
import { Client, fql } from 'fauna';

const client = new Client({
  secret: process.env.FAUNA_SECRET,
  endpoint: 'https://db.fauna.com'
});

// Transaction complexe avec vérification de stock
async function createOrder(userId: string, items: OrderItem[]) {
  try {
    const result = await client.query(fql`
      // Transaction atomique multi-collections
      Let(
        {
          user: Get(Match(Index("users_by_id"), ${userId})),
          
          // Vérifier stock pour chaque article
          stockCheck: Map(
            ${items},
            Lambda("item",
              Let(
                {
                  product: Get(Match(
                    Index("products_by_id"),
                    Var("item").productId
                  ))
                },
                If(
                  GTE(
                    Select(["data", "stock"], Var("product")),
                    Var("item").quantity
                  ),
                  true,
                  Abort(Concat([
                    "Stock insuffisant pour ",
                    Var("item").productId
                  ]))
                )
              )
            )
          ),
          
          // Créer la commande
          order: Create(
            Collection("orders"),
            {
              data: {
                userId: ${userId},
                items: ${items},
                status: "pending",
                createdAt: Now()
              }
            }
          )
        },
        Var("order")
      )
    `);
    
    return result.data;
  } catch (error) {
    console.error('Transaction échouée:', error);
    throw error;
  }
}

Mise en œuvre

  1. Création du compte et génération d'une clé API avec les permissions appropriées
  2. Définition du schéma : collections, indexes et relations via dashboard ou Infrastructure as Code
  3. Implémentation des règles de sécurité avec rôles ABAC et permissions granulaires
  4. Intégration applicative avec driver Fauna et implémentation des queries FQL ou GraphQL
  5. Configuration multi-région pour optimiser la latence globale
  6. Tests de charge et monitoring des métriques de performance
  7. Optimisation avec indexes composites et caching côté application

Conseil pro

Utilisez les User-Defined Functions (UDF) pour encapsuler la logique métier complexe directement dans la base. Cela réduit les allers-retours réseau et garantit l'atomicité des opérations multi-étapes.

Outils associés

  • Fauna Shell : interface CLI pour tester les requêtes FQL et automatiser les déploiements
  • Fauna Dashboard : console web avec explorateur de données et gestion des permissions
  • GraphQL Playground : interface intégrée pour tester les API GraphQL générées automatiquement
  • Terraform Provider : gestion de l'infrastructure Fauna as Code avec versioning
  • Drivers officiels : bibliothèques natives pour JavaScript, Python, Go, Java, C# avec typing fort

Fauna représente une évolution majeure dans l'architecture des bases de données modernes en éliminant le compromis traditionnel entre cohérence et disponibilité. Pour les organisations développant des applications globales nécessitant des transactions fiables sans complexité opérationnelle, Fauna offre une solution serverless véritablement distribuée qui réduit drastiquement les coûts d'infrastructure et le time-to-market.

L'argentestdéjàsurlatable.

En 1 heure, découvrez exactement combien vous perdez et comment le récupérer.