La construction de backends robustes implique souvent un codage étendu pour les opérations de crud, l'autorisation et la logique commerciale - un processus long. Cet article explore comment Hasura et PostgreSQL rationalisent le développement du backend, permettant des lancements d'applications plus rapides avec un effort de codage minimal.
Hasura, un moteur GraphQL open source, génère automatiquement des API GraphQL et REST à partir de votre schéma de base de données. Il prend en charge la modélisation des données, les requêtes en temps réel, la programmation d'événements, l'autorisation basée sur les rôles et l'exécution de la logique métier personnalisée via des actions GraphQL.
PostgreSQL, une puissante base de données relationnelle open source, propose des fonctionnalités de niveau d'entreprise comparables à Oracle et Microsoft SQL Server, ce qui en fait un choix fiable pour les applications à grande échelle. Son utilisation par des sociétés comme Netflix et Spotify souligne ses capacités. Alors que Hasura prend en charge d'autres bases de données, cet article se concentre sur PostgreSQL en raison de son accessibilité et de sa nature open source. Le support MySQL est prévu.
Ce guide met en évidence les fonctionnalités de Hasura pour créer des backends évolutifs pour les applications Web et mobiles. Il montre également comment les capacités de PostgreSQL, accessibles via SQL, peuvent effectuer des calculs et des analyses complexes, réduisant le besoin de code côté serveur personnalisé.
Avantages clés:
- Développement du backend rapide: Les API générées automatiquement de Hasura réduisent considérablement le temps de codage.
- PostgreSQL Power: Tirez parti des fonctionnalités avancées de PostgreSQL (hérédité du tableau, contrôle de concurrence, types de données JSON / spatiale) pour une intégrité et des performances améliorées de données.
- Capacités en temps réel: La requête en temps réel de Hasura, la programmation d'événements et l'autorisation basée sur les rôles créent des applications très réactives.
- Déploiement facile: Déployer Hasura à l'aide de Docker pour le développement local ou le cloud Hasura pour des applications évolutives, sécurisées et distribuées dans le monde avec des fonctionnalités telles que la surveillance et la mise en cache.
- Console Web complète: Gérer la modélisation des données, les opérations CRUD et les requêtes complexes dans la console Web intuitive de Hasura. Intégrer avec les fournisseurs d'authentification et de stockage de fichiers.
- flux de travail rationalisés: Utiliser les outils de migration de Hasura et la mise en scène de l'environnement pour les transitions sans couture entre le développement et la production, soutenant CI / CD.
Pourquoi choisir PostgreSQL?
Les bases de données relationnelles comme PostgreSQL offrent des avantages par rapport à d'autres types de bases de données, y compris la modélisation du schéma, les opérations de jointure et les transactions acides - Crucial pour l'intégrité des données. PostgreSQL excelle encore avec:
- Héritage du tableau: Modélisation efficace des données.
- Contrôle de concurrence avancée: gère les données de données à volume élevé efficacement dans des environnements multi-utilisateurs.
- Tolérance aux défauts et intégrité des données: réduit les risques de corruption des données.
- Types de données uniques: prend en charge les types de données JSON et spatiaux, bénéfiques pour diverses applications.
PostgreSQL agit également comme un serveur de calcul, exécutant des fonctions personnalisées et déclencheurs pour les tâches analytiques, éliminant le besoin d'un code côté serveur séparé. Ceci est réalisé en utilisant:
- Vues: Simplifier les requêtes complexes.
- Fonctions et opérateurs: Effectuer la mise en forme de la date, la correspondance des modèles et les opérations arithmétiques.
- Extensions: étendent la fonctionnalité de PostgreSQL (par exemple, PostGis).
- Langages procéduraux: Écrivez des fonctions définies par l'utilisateur et des procédures stockées (par exemple, PL / PGSQL).
Hasura expose cette logique PostgreSQL via GraphQL, ce qui le rend facilement accessible aux applications de frontend.
Exemples postgresql:
- Exemple 1 (View des utilisateurs en ligne): Une vue pour récupérer les utilisateurs actuellement actifs:
<code class="language-sql">CREATE OR REPLACE VIEW "public"."online_users" AS
SELECT users.id, users.last_seen
FROM users
WHERE (users.last_seen >= (now() - '00:00:30'::interval));</code>
- Exemple 2 (Géolocation avec PostGIS): Trouvez les magasins dans un rayon de 1000 mètres:
<code class="language-sql">SELECT id, name, address, geom
FROM Seattle_Starbucks
WHERE ST_DWithin(geom, ST_MakePoint(-122.325959,47.625138)::geography, 1000);</code>
Qu'est-ce que Hasura?
Hasura est un moteur GraphQL open-source en temps réel qui génère des API pour votre base de données. Sa console Web permet:
- Modélisation du schéma: Créer des tables, définir les relations et gérer les données.
- Opérations crud: effectuer des actions de création, de lecture, de mise à jour et de suppression.
- Contrôle d'accès basé sur les rôles: Implémentez les autorisations granulaires.
- Création de point de terminaison GraphQL / REST: Générer des API pour vos données.
- Exécution SQL: Exécuter des requêtes SQL personnalisées.
- Définition de l'action et du déclencheur: Automatiser les tâches et gérer les événements.
Remarque: Hasura nécessite une intégration avec un fournisseur d'authentification distinct (par exemple, Auth0, Firebase) et un service de stockage de fichiers. NHOST propose une solution intégrée.
Lancement de Hasura:
- docker: recommandé pour le développement local, offrant une configuration facile et sans limitation de taux.
- Cloud Hasura: simplifie le déploiement avec l'évolutivité, la sécurité et la distribution globale, y compris les fonctionnalités de surveillance et de mise en cache. Un niveau gratuit est disponible avec des limitations.
fonctionnalités de Hasura (aperçu détaillé):
- Gestionnaire de données: Concepteur de schéma visuel pour créer des tables, définir les relations et gérer les types de données (y compris les types JSON et personnalisés).
- Autorisation: Contrôle d'accès basé sur les rôles avec les autorisations granulaires pour les opérations d'insertion, de sélection, de mise à jour et de supprimer.
- requêtes: Exécuter diverses requêtes GraphQL (simple, imbriquée, agrégation, filtrage) directement dans la console.
- Mutations: Effectuer des opérations d'insertion, de mise à jour, de mise à jour et de suppression avec la prise en charge des transactions.
- abonnements: Implémentez les mises à jour de données en temps réel à l'aide d'abonnements GraphQL sur WebSockets.
- schémas distants: INTRÉSIRER AUX API TIRTY PARTY POUR DONNÉES ET LOGIQUE.
- Actions: Exécuter la logique métier personnalisée via des webhooks à l'aide de n'importe quel langage de programmation.
- Déclencheurs de l'événement: Invoquez des webhooks basés sur les événements de base de données (insérer, mettre à jour, supprimer). Prend en charge l'invocation manuelle.
- TROCHERS PLUS PLANDS: Exécutez les tâches périodiquement (CRON) ou une fois (unique) via des webhooks.
- Migrations et environnements: Gérer les modifications de schéma à l'aide de fichiers de migration pour la base de données et les métadonnées Hasura, prenant en charge les flux de travail CI / CD.
Options de déploiement:
- Cloud Hasura: Déploiement de production le plus facile.
- Hébergement externe: Heroku, Ocean numérique, rendu, azure, kubernetes, aws (plus complexe).
- nhost: Solution BAAS tout-en-un, y compris PostgreSQL, Hasura, authentification et stockage.
Résumé:
Hasura et Postgresql offrent une combinaison puissante pour le développement rapide du backend. L'effort de codage réduit, les capacités en temps réel et les fonctionnalités robustes en font une solution convaincante pour construire des applications évolutives et maintenables. Bien qu'il ne soit pas aussi riche en fonctionnalités que certaines alternatives dans tous les aspects, sa facilité d'utilisation, son accent sur les performances et sa nature open source sont des avantages importants.
Questions fréquemment posées (FAQ): (Les FAQ fournies sont déjà complets et bien écrits; aucune modification nécessaire.)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!