Neon avec Symfony
Il est possible de créer une base de données sur Neon et de l'utiliser avec un projet Symfony.
Qu'est ce que Neon ?
Neon est une plateforme de base de données PostgreSQL serverless conçue pour simplifier et accélérer le développement d'applications.
Neon est entièrement compatible avec PostgreSQL et s'intègre facilement aux frameworks et langages existants.
Caractéristiques principales
-
Serverless: Neon gère automatiquement le provisionnement, la mise à l'échelle et la maintenance des bases de données, permettant aux développeurs de se concentrer sur leur code.
-
Mise à l'échelle automatique: Les ressources s'adaptent automatiquement à la charge, avec la possibilité de réduire à zéro en cas d'inactivité pour optimiser les coûts.
-
Branching instantané: Permet de créer rapidement des copies isolées de la base de données pour le développement, les tests ou les migrations de schéma.
-
Provisionnement rapide: Les nouvelles bases de données sont prêtes en quelques millisecondes.
-
Compatibilité: Entièrement compatible avec PostgreSQL, s'intègre facilement aux frameworks et langages existants.
Avantages pour les développeurs
- Productivité accrue: Élimine la gestion complexe des bases de données.
- Flexibilité: S'adapte facilement aux besoins changeants des applications.
- Économies: La facturation à l'usage et la mise à l'échelle automatique optimisent les coûts.
Neon vise à moderniser l'utilisation de PostgreSQL en offrant une expérience simplifiée et optimisée pour les workflows de développement modernes, tout en conservant la puissance et la fiabilité de PostgreSQL.
Création d'un projet Neon
Pour commencer, vous devrez créer un compte sur la plateforme Neon et configurer votre projet :
- Inscrivez-vous sur https://console.neon.tech
- Créez un nouveau projet
- Obtenez les informations de connexion à votre base de données
Intégration avec Symfony
Une fois votre base de données Neon créée, il est nécessaire de mettre à jour la configuration Doctrine dans config/packages/doctrine.yaml
.
Voici les étapes à suivre :
-
Ouvrez le fichier
config/packages/doctrine.yaml
-
Localisez la section
doctrine:dbal:
dans ce fichier -
Mettez à jour les paramètres de connexion comme suit :
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'
driver: 'pdo_pgsql'
server_version: '15'
charset: utf8 -
Si ce n'est pas déjà fait, copier votre fichier
.env
en.env.local
. -
Assurez-vous que votre fichier
.env.local
contient la variableDATABASE_URL
avec les informations de connexion Neon :DATABASE_URL="postgresql://username:password@ep-example-123456.eu-central-1.aws.neon.tech/neondb?sslmode=require"
Remplacez
username
,password
,ep-example-123456.eu-central-1.aws.neon.tech
, etneondb
par les valeurs spécifiques à votre projet Neon.
Si une erreur de type The endpoint ID is not specified
s'affiche,
vous pouvez modifier l'URL de la façon suivante :
DATABASE_URL="postgresql://NomDeBD_owner:endpoint=identifiant-de-projet;UnMotDePasseTresSecure@nom-du-serveur.nom-de-region.aws.neon.tech/NomDeBD"
Voici un exemple :
DATABASE_URL="postgresql://Portfolio_owner:endpoint=falling-voice-12345678;6Ufe6GC-gtcCx+^9~576G@ep-red-queen-a3li224p.eu-central-1.aws.neon.tech/Portfolio"
Cette erreur se produit si votre installation ne prend pas en charge le mécanisme d'indication du nom du serveur (SNI) dans TLS.
-
Si vous utilisez des entités, assurez-vous que la section
orm
est correctement configurée :orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: AppCette configuration permettra à votre projet Symfony d'utiliser la base de données PostgreSQL hébergée sur Neon.
Veuillez recréer vos migrations après avoir effectué ces changements.
Utilisation
Une fois la configuration terminée, vous pouvez utiliser votre base de données Neon avec Symfony comme vous le feriez avec n'importe quelle autre base de données PostgreSQL.
Vous pouvez créer des entités, effectuer des migrations, et interagir avec votre base de données via Doctrine.
Bonnes pratiques
- Sécurité : Assurez-vous que toutes les connexions à la base de données sont sécurisées par TLS/SSL.
- Variables d'environnement : Utilisez des variables d'environnement pour gérer les configurations sensibles comme les clés API et les URL de base de données.
- Encapsulation : Utilisez des services et des repositories pour encapsuler la logique d'accès aux données et aux API.