Nicolas Burke, Relations avec les développeurs prisme – la base de données ORM – a récemment annoncé que tous les outils Prisma (Prisma Client, Prisma Studio, Prisma Migrate) sont disponibles prêt pour une utilisation en production. Prisma Migrate a été prévisualisé et est terminé cette année maintenant généralement disponible.

Burk a résumé les raisons de la suite d’outils Prisma comme suit:

Chez Prisma, nous avons constaté que si l’écosystème Node.js devient de plus en plus populaire pour la création d’applications basées sur des bases de données, il ne fournit pas d’outils modernes aux développeurs d’applications pour accomplir ces tâches. [—data modeling, schema migrations, and writing database queries].

Les développeurs d’applications doivent s’en occuper Données – pas SQL.

Au fur et à mesure que les outils se spécialisent, les développeurs d’applications devraient pouvoir se concentrer sur la mise en œuvre Valeur ajoutée Fonctions pour leurs organisations plutôt que de passer du temps à rassembler les couches de leur application par écrit Code de colle.

Prisma propose trois outils qui abordent différents aspects de la gestion des données à distance. le Client Prism est un générateur de requêtes généré automatiquement et de type sécurisé qui permet aux développeurs d’effectuer des opérations de création, de lecture, de mise à jour et de suppression (CRUD) sur une base de données sous-jacente. Studio Prism est une application d’interface utilisateur qui permet aux développeurs d’examiner et de manipuler visuellement le contenu d’une base de données.

Le nouvellement disponible Migrer le prisme s’efforce d’optimiser un processus de développement itératif dans lequel un schéma de base de données est modifié avec l’application d’interrogation. Daniel Normal, avocat développeur chez Prisma, résume l’objectif de Prisma Migrate comme suit:

Les applications basées sur les données d’aujourd’hui nécessitent des changements constants. Lorsque vous travaillez avec une base de données relationnelle, maintenir un schéma en constante évolution peut être un défi.

Prisma Migrate est un outil de migration de schéma de base de données qui simplifie le développement du schéma de base de données en conjonction avec l’application. […] Prisma Migrate atteint l’équilibre entre productivité et contrôle en automatisant les aspects répétitifs et sujets aux erreurs de l’écriture des migrations de bases de données et en vous donnant le dernier mot sur leur fonctionnement.

Prisma Migrate fournit un schéma de base de données DSL dans lequel les développeurs peuvent exprimer les entités de base de données et les relations entre les entités:

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  birthdate DateTime @db.Date
  activated Boolean  @default(false)
}

Le schéma DSL est traduit en scripts de migration SQL:

 
 
CREATE TABLE "User" (
    "id" SERIAL NOT NULL,
    "email" TEXT NOT NULL,
    "name" TEXT,
    "birthdate" DATE NOT NULL,
    "activated" BOOLEAN NOT NULL DEFAULT false,

    PRIMARY KEY ("id")
);


CREATE UNIQUE INDEX "User.email_unique" ON "User"("email");

Au fur et à mesure que le schéma de base de données évolue, Prisma Migrate est généré une histoire de .sql Fichiers de migration dans un dossier dédié:

migrations/
  └─ 20210313140442_init/
    └─ migration.sql
  └─ 20210313140442_added_job_title/
    └─ migration.sql

Alors que Prisma Migrate couvre les modifications de schéma courantes (telles que l’ajout de champs), les développeurs peuvent avoir besoin de personnaliser les scripts de migration pour ajouter du code spécifique à un fournisseur de base de données ou fournir un cas d’utilisation non traité. La documentation Prisma Migrate mentionne quelques exemples: Renommez un champ, changez les types de champ ou changez la direction d’une relation un-à-un.

Les développeurs de Reddit ont souligné que si une abstraction ORM entre la ou les bases de données et l’application peut être utile, en pratique, ils doivent toujours connaître SQL et les spécificités de la base de données sous-jacente – en particulier à des fins d’optimisation des requêtes et de performances. Cela a conduit certains développeurs à préconiser de contourner complètement l’abstraction. Burk a soutenu que les cas où les fuites d’abstraction ORM sont rarement assez pour nuire significativement à la valeur ajoutée de Prisma::

SQL est complexe, il est facile de se tirer une balle dans le pied avec, et son modèle de données (données / tables relationnelles) est loin de ce que les développeurs d’applications (données / objets imbriqués) ont lorsqu’ils travaillent dans JS / TS. Associer des données relationnelles à des objets a des coûts à la fois mentaux et pratiques!

[…] Dans la plupart des cas (qui sont des opérations CRUD assez simples pour la plupart des applications), les développeurs ne devraient pas payer ce coût. Vous devriez avoir une API qui semble naturelle et qui vous rend productif. Pour 5% des requêtes nécessitant certaines optimisations, vous pouvez utiliser Prisma pour accéder au SQL brut et vous assurer que les instructions SQL souhaitées sont envoyées à la base de données.

Je vois Prisma quelque peu analogue à GraphQL dans le frontend, où une affirmation similaire pourrait être: « Les développeurs frontend devraient se soucier des données, pas des points de terminaison REST ». Avec GraphQL, les développeurs front-end ne peuvent plus réfléchir à l’origine de leurs données et à la manière de les combiner dans les structures dont ils ont besoin.

L’historique de migration généré par Prisma peut être versionné afin que les modifications apportées au schéma puissent être suivies avec le reste de l’application en cours de développement. Prisma Migrate prend actuellement en charge PostgreSQL, MySQL, SQLite et SQL Server (en Aperçu).

Prisma a ajouté un nouvel ensemble de frameworks et de méta-frameworks à leur pile. séquoia, un framework full-stack qui essaie d’intégrer l’expérience Ruby on Rails dans JavaScript;; Guêpe, un Application Web DSL écrite en Haskell;; et Blitz, un framework React full-stack basé sur Next.js, utilisent tous Prisma pour leur couche de données.

La documentation Prisma est Disponible en ligne et contient une introduction conceptuelle avec des tutoriels. Prisma est une société de capital-risque qui fournit des logiciels open source distribués sous la licence Apache 2.0.





Source link

Recent Posts