Bases de données
Nous utilisons principalement PostgreSQL comme moteur de BDD relationnelle.
La qualité du modèle de données est cruciale dans le développement :
- simplification des applications qui vont exploiter ces données
- communication avec le reste de l'équipe (une sémantique commune)
- performance des requêtes
- intégrité des données
- sécurité...
Il est important de prendre le temps de concevoir un modèle de données cohérent et scalable que vous pourrez partager facilement avec les product owners (métier) et faire évoluer ensemble.
L'équipe SRE est à votre disposition pour vous aider dans cette démarche.
Recommandations
- Les ORMs ne sont pas recommandés, y préférrer des
query builders
. - En JS/TS, utiliser la lib Postgres.js si possible
- Utiliser un linter de tag SQL eslint-plugin-sql-pretty
- Utiliser un outil qui gère les migrations (ex: postgres-shift, hasura)
- Créer des fichiers de seed pour vos environnements de test/review
- Maintenir un diagramme du modèle dans le repo, quelque outils:
- draw.io language standard ouvert, bien pour démarrer la réflexion from sratch sur le modèle de données au démarrage du projet avant même de commencer à coder
- DBeaver outil d'administration complet de base de données, permettant d'exporter un ER modèle depuis une base de données existante pour pouvoir facilement retravailler dessus
- yEd gère le format de diagram exporté par DBeaver
- pg_diagram
Debug
PgHero
Vous pouvez lancer localement PGHero et le connecter à votre base de données:
- Ouvrir un port localement avec un
port-forward
outeleport
- Récupérer le secret
pg-app
dans votre namespace - Lancer PGHero avec Docker :
docker run -ti -e DATABASE_URL='postgresql://XXXX?sslmode=disable' -p 8080:8080 --net=host ankane/pghero
Puis ouvrir http://127.0.0.1:8080
Hasura
hasura est un composant battle-testé à la fabrique, qui se branche facilement sur votre base PostgreSQL.
Il permet d'exposer rapidement (low-code) une API GraphQL avec des modèles, migrations, souscriptions, RBAC...
Conventions
- SQL Style guide
- Positionner le diagramme dans
docs/db-model.png
sur votre repo yarn seed
pour executer les seeds
Chiffrement
[todo]
Skill up
- 🇫🇷 💙 Livre blanc de Dalibo : Bonnes pratiques de modélisation
- 🇫🇷 💙 Vidéos PostgreSQL de xavki : 34 vidéos sur PostgreSQL et ses internals
- awesome-postgres
- DB Modelization anti-patterns
- 🇫🇷 💙 Vidéo Devoxx "Ce que les développeurs doivent savoir sur les index"
- Tips & ebook SQLforDevs.com