Bien le bonjour Guillaume Loulier aka Guikingone Développeur chez SensioLabs Apprécie surtout PHP et Rust, parfois Go A hésité à faire ce talk, l’a fini dans le train
“ Tout ce que nous entendons est une opinion et non un fait. Tout ce que nous voyons est une perspective et non la vérité.” Moment philosophie Marc Aurèle
Servermore ? Infrastructure Application Worker Réseau Base de données Cache Base de données Cache Application Worker Application Worker Application Worker
Soyons transparents Qui se soucie des règles d’Edgar F. Codd ? Au fond, une BDD n’est qu’un empilement de couches Quid des ressources ? De l’infrastructure ? La mise en réseau ? Sharding ? Plait-il ?
Rappel historique Projet lancé en août 2000 par Richard Hipp Conçu pour résoudre un problème logiciel introduit par IBM Concurrent de fopen et non d’Oracle / MySQL / etc (Ré)inventer la roue pour la rendre plus résiliente
La rolls-royce des DB ? Environ ~150K ligne de code (> 600K pour PostgreSQL, ~2M pour MySQL) Résistant à la charge (> 10 mds lecture / J) Besoin d’un cache ? D’un filesystem ? Portable entre architecture (32 / 64 bits)
Vendez-moi ce stylo Avantages Inconvénients Rapide, léger, “serverless par conception” Complexe à mettre à l’échelle Supporte la majorité des specs SQL Quelques manquements / biais Aucun appel réseau Notion de cluster / réplication inexistante Très peu de dépendances système Extensibilité “complexe” (API en C) Peut gérer jusqu’à 281 terabytes Résilience “relative” Aucune configuration requise Liée à son langage / processus d’usage
Corrompre sans s’étaler SQLite stocke via un format de “page” de 4kb, chaque page contenant un B-Tree SQLite utilise une journalisation et / ou une approche WAL Mécanisme de lock natif pour éviter les conflits Une action a lieu ou n’a pas lieu
L’attaque des logs Journalisation ? Non, Write Ahead Log Ecrire, vérifier, synchroniser, renvoyer Plus efficient en écriture / discutable en lecture Facilement récupérable en backup
Soyons honnêtes Une disponibilité au-delà de 99.99% est contreproductive et coûteuse S3 se dit disponible 99.99999999999% du temps, pour quel usage ? Vous ne contrôlerez jamais le chat / chien de votre client Visez 99.99% et adaptez-vous
Vers l’infini et peut-être au-delà SQLite n’est pas une “silver-bullet” SQLite ne résoudra pas vos problèmes de performances SQL De par son approche, SQLite reste relativement fermé Le web évolue, SQLite devra évoluer
Concluons Soyez pragmatiques, si votre application marche, laissez-là en l’état Commencez petit et montez en taille au besoin Microservices ? Edge computing ? Serverless ? Doctrine est votre ami