« Prisma remplace les ORM traditionnels et simplifie davantage les flux de travail de base de données », indique la documentation de l’outil en introduction. Selon sa documentation, Prisma est un outil pour la construction de serveurs GraphQL, ou simplement est une couche de données qui transforme une base de données en une API GraphQL. L’outil est semblable sur tous les points aux ORM traditionnels, mais présente en plus d’autres caractéristiques et fonctionnalités que ces derniers ne possèdent pas. Le client Prisma est compatible avec l'écosystème Apollo, prend en charge par défaut les abonnements GraphQL et la pagination de type Relay, fournit une sécurité de type de bout en bout et est livré avec un chargeur de données intégré pour résoudre le problème N+1 (c’est un problème de performance lié à des relations de type parent/enfant qui arrive souvent lorsqu’on utilise des ORM).
Il est utilisé pour construire GraphQL, REST, les API gRPC et bien plus encore. Prisma supporte actuellement MySQL, PostgreSQL, Amazon RDS et MongoDB (une base de données NoSQL) et d’autres supports sont annoncés pour les mois à venir (elasticsearch, cassandra, etc.). Prisma propose une API en temps réel pour chaque base de données prise en charge, vous permettant de vous abonner à tout événement de base de données, tel que la création, la mise à jour ou la suppression de données. Ainsi donc, le client Prisma simplifie l'accès à votre base de données et il vous permet de lire et d’écrire des données dans votre base de données en utilisant votre langage de programmation préféré. L’accès à votre base de données est sécurisé et vous pouvez gérer vos données de façon visuelle avec l’extension Prisma Admin.
Quel avantage vous apporte l’utilisation de Prisma ? En réponse, la documentation de l’outil indique que l'objectif global de ce dernier est de supprimer la complexité des flux de travail de base de données courants et de simplifier l'accès aux données dans vos applications. Il propose ainsi les caractéristiques ci-dessous :
- un accès sécurisé à la base de données grâce au client Prisma personnalisé et généré automatiquement en (TypeScript, JavaScript ou Go) ;
- une API simple et puissante pour travailler avec des données et des transactions relationnelles ;
- une gestion visuelle des données avec Prisma Admin ;
- Prisma uniformise l'accès à plusieurs bases de données à la fois (à venir) et réduit ainsi considérablement la complexité des flux de travail entre bases de données ;
- une diffusion en temps réel et un système d’événements pour votre base de données qui vous permet d’obtenir des mises à jour pour tous les événements importants se produisant dans votre base de données ;
- vous pouvez faire des migrations automatiques de bases de données (facultatives) basées sur un modèle de données déclaratif exprimé à l'aide du langage de définition de schéma (SDL) de GraphQL ;
- Prisma vous offre d’autres flux de travail de base de données tels que l'importation, l'exportation, etc.
L’autre chose que l’équipe de Prisma a indiquée est que l’outil diffère des ORM traditionnels parce qu’il prend également en charge plusieurs bases de données. « Nous constatons une tendance selon laquelle de nombreuses applications modernes sont construites sur une grande variété de bases de données. PostgreSQL, Elasticsearch, MongoDB et Neo4j peuvent être utilisés simultanément et à des fins différentes. Nous acceptons cela et avec le client Prisma il sera possible à l'avenir d'accéder à toutes ces sources de données au moyen d'une API unique, cohérente et sécurisée », a expliqué l’équipe.
Dans la communauté, Prisma séduit certaines personnes, mais pas d’autres. Pour certains, l’outil peut être considéré comme le prochain visage de la technologie ORM. « Vous pouvez penser à Prisma comme à la prochaine version de la technologie ORM. Prisma partage les mêmes objectifs d’un ORM (faciliter l’accès aux données), mais adopte une approche complètement différente de celle des anciens ORM. Prisma utilise l'introspection pour générer une bibliothèque riche en fonctionnalités et sécurisée autour du schéma de votre base de données afin de réduire ou d'éliminer la plupart des inconvénients que vous associez traditionnellement aux ORM », a déclaré l’un d’eux.
Par contre, d’autres ne comptent pas l’adopter de sitôt et font quelques remarques. « J'ai essayé Prisma au cours des derniers mois, mais j'ai finalement décidé de ne pas l'adopter dans notre produit, car il semble très rigide lorsque vous travaillez avec des relations many-to-many. En particulier, le filtrage sur des clés étrangères ne semble pas possible et nécessite des jointures de table SQL, ce qui (dans notre cas) a un impact extrêmement négatif sur les performances. En outre, l'API de chaînage de requêtes ne se prête pas bien au filtrage sur plusieurs relations. En dehors de cela, l'idée semble vraiment cool et je suis sûr que le projet a un bel avenir devant lui ! », a indiqué l’un d’entre eux.
Source : Prisma
Et vous ?
Que pensez-vous de ce nouvel outil ORM ?
Pourra-t-il remplacer les outils d’ORM traditionnels, selon vous ? Pourquoi ?
Voir aussi
Apprendre à construire et structurer une API GraphQL en Go un tutoriel de Vincent Composieux
Relay : le framework de data-fetching de Facebook utilisé par son framework React.js
La Linux Foundation annonce OpenJS Foundation, issue de la fusion des fondations Node.js et JS, pour soutenir la croissance de JavaScript
GraphQL, le langage de requête de Facebook se dote de sa propre fondation open source qui sera elle-même hébergée par la Linux Foundation