
后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载本文围绕 Prisma 1 官方 FAQ 文档docs/1.11/05-FAQ/01-General.md展开系统回答“Prisma 是什么、如何使用、支持哪些语言与平台、适合谁使用”等核心问题并结合本仓库源码Scala 服务端、TypeScript CLI、Docker Compose 配置深入讲解其实现原理与部署方式。读完本文你将理解 Prisma 1 作为数据库抽象层的设计定位掌握其两种典型接入方式、CLI 安装与项目配置流程并了解其基于 Docker 的多云部署思路。适用前提说明本仓库为 Prisma 1README.md 中标注为维护模式/已弃用项目描述同样标记 deprecated。下文所述能力以本仓库实际代码与 1.11 文档版本为准新项目建议评估 Prisma 2 及后续版本。什么是 Prisma把数据库变成 GraphQL API 的抽象层官方 FAQ 的第一问给出了 Prisma 最核心的定义Prisma 是一层 abstraction layer抽象层它把你的数据库转化为一个 GraphQL API。开发者不再需要直接编写 SQL也无需调用 NoSQL 数据库的原生 API而是通过 GraphQL 这一统一的查询语言与数据交互。这一定义在仓库中得到了充分印证服务端主体是 server/servers/api 下的 Scala 工程负责接收 GraphQL 查询并翻译为对底层数据库的操作连接器模块 server/connectors/api-connector-jdbc、api-connector-mongo 等分别实现了对关系型数据库MySQL、PostgreSQL、SQLite与 MongoDB 的适配README 中同样强调其定位Prisma 1 替代传统 ORM简化数据库工作流提供“类型安全的 Prisma client 数据访问、声明式数据建模与迁移、可视化数据管理Prisma Admin”三大能力可用于构建 GraphQL、REST、gRPC API。FAQ 中还特别指出GraphQL 与 Prisma 都是完全开源的使用 Prisma 构建 GraphQL server 不存在供应商锁定vendor lock-in。这一特性与仓库的 Apache-2.0 许可见 cli/packages/prisma-cli/package.json相符。如何使用 Prisma两种典型接入方式FAQ 明确给出了 Prisma 的两种主流使用方式二者定位差异显著方式一作为自建 GraphQL server 的基础层将 Prisma 用作自己 GraphQL server 的“数据底座”你可以获得完整的控制力与灵活性自行实现业务逻辑resolver提供自定义的认证工作流与第三方 API 通信。在这一模式下Prisma 的 GraphQL API 作为底层数据访问层业务层例如基于 GraphQL bindings 或 schema stitching可以把它当作现成的数据源进行组合。FAQ 中给出的配套文档 Quickstart 即展示了从数据库到 GraphQL server 的完整搭建路径。方式二从前端直接访问 Prisma 的 GraphQL API第二种方式让前端直接对接 Prisma 提供的托管式 GraphQL API可以极快地跑起来。但它的能力边界也很清晰——API 只提供数据模型中各类型的CRUD 操作含排序、过滤、分页等特性不适合承载复杂业务逻辑。因此这种方式更适合只需求“存取数据”的简单应用原型验证prototyping学习 GraphQL 的入门场景。这一能力边界在源码中有直接体现服务端请求处理核心 server/images/prisma-image-shared/src/main/scala/com/prisma/image/SangriaHandlerImpl.scala 将请求分流到公共 APIhandleRequestForPublicApi与私有 APIhandleRequestForPrivateApi路径含private保留段并支持import/export/_datamodel等保留端点而面向数据模型的 GraphQL Schema 由 server/servers/api/src/main/scala/com/prisma/api/schema 下的SchemaBuilder、CachedSchemaBuilder等构建见 server/images/prisma-local/src/main/scala/com/prisma/local/PrismaLocalDependencies.scala。安装 Prisma CLI 并管理服务Prisma 服务通过 Prisma CLI 进行管理全局安装命令如下npm install -g prisma从本仓库的 CLI 实现可以看到其技术细节CLI 入口 cli/packages/prisma-cli/src/index.ts 在启动时会校验 Node.js 版本必须满足 package.json 中engines.node6.13.0的约束否则直接报错退出CLI 的可执行命令由prisma-cli-core插件提供见 package.json 中的cli-engine.plugins配置其命令集覆盖deploy、init、generate、introspect、import、export、seed、playground、login、logout、token、admin、reset等完整清单见 cli/packages/prisma-cli-core/src/commands服务的配置以prisma.yml为核心官方 CLI 文档docs/1.11/04-Reference/07-CLI-Command-Reference/01-Overview.md说明使用prisma init hello-world可交互式初始化一个新服务随后通过prisma deploy部署数据模型。FAQ 推荐的入门路径是官方 Quickstart 文档本仓库对应 docs/1.11/01-Quickstart。Prisma 支持哪些编程语言语言无关Scala TypeScript 实现FAQ 明确Prisma 与 GraphQL 一样是language agnostic语言无关的理论上可配合任何编程语言使用。但就构建 GraphQL server 的生态支持而言JavaScript/TypeScript 生态最为完善这得益于graphql-js、GraphQL bindings 等工具链。FAQ 同时透露了一个关键实现事实Prisma 本身是用 Scala 与 TypeScript 实现的。在本仓库中可以完整验证Scala服务端全部由 Scala 编写包括 GraphQL API 服务 server/servers/api、部署服务 server/servers/deploy、订阅服务 server/servers/subscriptions、Worker 服务 server/servers/workers以及 server/libs 下的基础设施库如 sangria-server、sangria-utils、akka-utils、message-bus 等TypeScriptCLI 客户端由 TypeScript 编写分布在 cli/packages 的prisma-cli、prisma-cli-engine、prisma-cli-core、prisma-client-lib、prisma-datamodel、prisma-yml等包中。这意味着无论你使用 JavaScript、TypeScript 还是其他语言都可以通过 HTTP 与 Prisma 暴露的 GraphQL 端点交互同时若想深入底层Scala 与 TypeScript 的双栈代码为理解其内部机制提供了完整素材。Prisma 支持哪些平台与云提供商基于 Docker 的任意部署FAQ 指出Prisma 建立在Docker之上因此部署位置与方式完全取决于开发者。FAQ 列举了常见的目标环境包括 Digital Ocean、Microsoft Azure、Google Compute Engine、AWS、Heroku 等并提示生产环境最省力的方式是 Prisma Cloud。在仓库中Docker 化部署的证据链清晰可见server/docker-compose 目录为 MySQL、PostgreSQL、MongoDB、SQLite 分别提供了 Docker Compose 编排文件例如 MySQL 的 server/docker-compose/mysql/dev-mysql.yml 启动mysql:5.6容器并暴露127.0.0.1:3306同时配套服务配置 server/docker-compose/mysql/prisma.ymlport: 4466 databases: default: connector: mysql host: 127.0.0.1 port: 3306 user: root password: prisma rawAccess: truePostgreSQL 版本见 server/docker-compose/postgres/prisma.yml其端口为5432镜像工程位于 server/imagesprisma-local单进程本地版、prisma-prod生产版、prisma-image-shared共享代码。本地版主程序 server/images/prisma-local/src/main/scala/com/prisma/local/PrismaLocalMain.scala 默认监听端口4466并通过SangriaHandlerImpl(managementApiEnabled true)同时启用服务 API 与管理 APIserver/images/prisma-local/src/main/scala/com/prisma/local/PrismaLocalDependencies.scala 注册了 MySQLMariaDB 驱动、PostgreSQL、SQLite 三种受支持驱动与 README 宣称的 MySQL、PostgreSQL、MongoDB 支持范围MongoDB 通过 api-connector-mongo 等独立连接器实现相互印证。一个值得注意的配置项managementApiSecret在 PrismaLocalDependencies.scala 中可以看到若未配置managementApiSecret服务会打印[Warning] Management authentication is disabled...并降级为DummyManagementAuth配置后则启用SymmetricManagementAuthJWT 对称密钥认证。这提醒我们在生产部署时务必通过 Prisma 配置为该密钥赋值以保护管理 API。谁应该使用 PrismaFAQ 的收尾问题给出了简洁结论Prisma 适合所有想要构建生产级、可扩展 GraphQL server 的团队与个人无论团队规模或项目范围大小。结合前文内容可以进一步理解为想快速获得一个带 CRUD、过滤、排序、分页能力的 GraphQL 数据层——两种使用方式皆可按业务复杂度取舍想专注业务逻辑、跳过数据库访问层繁琐样板代码——选择“自建 GraphQL server Prisma 底座”模式需要类型安全与编译期校验——GraphQL 强类型 API 层配合自动生成的 client能在编辑器中获得自动补全与构建期校验FAQ 与 docs/1.11/04-Reference/01-Introduction/01-What-is-Prisma.md 均强调了这一开发体验优势。延伸阅读Prisma 1 快速上手搭建 Prisma 服务与 GraphQL server 的分步指南Prisma 服务配置prisma.yml与数据模型datamodel的完整配置参考Prisma API 参考CRUD、过滤、排序、分页、订阅等 API 能力详解CLI 命令参考全部 CLI 命令的用法说明CLI 源码各命令的 TypeScript 实现服务端 API 源码GraphQL 请求处理与 Schema 构建的 Scala 实现赞分享后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载相关推荐Prisma 1 通用 FAQ 全解析GraphQL 数据库抽象层的定位、用法与部署生态Prisma 1 通用 FAQ 全解析GraphQL 数据库抽象层的定位、用法与部署生态 导读 Prisma 1 是一层将数据库变成GraphQL API后端数据库GraphQLPrisma 1 常见问题全解数据库抽象层、GraphQL API 与部署实践Prisma 1 常见问题全解数据库抽象层、GraphQL API 与部署实践 Prisma 是一个将数据库转变为 GraphQL API 的抽象层本文基于后端数据库GraphQLPrisma 1 通用 FAQ 深度解读从 GraphQL 数据库抽象层到生产级部署实践Prisma 1 通用 FAQ 深度解读从 GraphQL 数据库抽象层到生产级部署实践 Prisma 是一个将数据库抽象为 GraphQL API 的持久化后端数据库GraphQL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考