Overview
Prisma Engines uses a modular connector architecture to support multiple database systems. Connectors abstract database-specific operations for both query execution and schema management.Core Architecture
Query Engine Connectors
Query engine connectors implement the data access layer for executing CRUD operations, aggregations, and transactions.Main Traits
Connector Trait (query-engine/connectors/query-connector/src/interface.rs)
Connector trait provides:
- Connection pooling and management
- Database system identification for telemetry (OTEL spec compliant)
- Transient error retry logic (MongoDB-specific)
Schema Engine Connectors
Schema engine connectors handle migrations, introspection, and schema validation.SchemaConnector Trait
Location:schema-engine/connectors/schema-connector/src/schema_connector.rs
Key responsibilities:
- Migration management: Create, apply, and validate migrations
- Introspection: Generate Prisma schema from existing databases
- Schema operations: Create/drop databases, reset schemas
- Version compatibility: Check database version support
SchemaDialect Trait
Abstracts database-specific migration rendering and schema diffing:Operations
Read Operations
All connectors implement theReadOperations trait:
get_single_record: Fetch one record by filterget_many_records: Fetch multiple records with query argumentsget_related_m2m_record_ids: Fetch IDs from join tables for M2M relationsaggregate_records: Execute aggregation queries (count, sum, avg, min, max)
Write Operations
create_record: Insert single recordcreate_records: Bulk insert (with skip duplicates support)create_records_returning: Bulk insert with returned dataupdate_records: Update multiple recordsupdate_record: Update single recordnative_upsert_record: Database-native upsertdelete_records: Delete multiple recordsdelete_record: Delete single record with returned datam2m_connect/m2m_disconnect: Manage M2M join tablesexecute_raw/query_raw: Raw SQL/query execution
Schema Operations
- Migration: Create migrations by diffing schemas, render to SQL/scripts, apply to database
- Introspection: Scan database structure, generate Prisma schema
- Validation: Check migration compatibility, validate connection
- Database lifecycle: Create, drop, reset databases
Connector Capabilities
Connectors expose capabilities throughConnectorCapabilities bitflags:
- Query Features
- Schema Features
- Transaction Features
CreateMany: Bulk insert supportCreateSkipDuplicates: Skip duplicate rows on insertInsertReturning/UpdateReturning/DeleteReturning: Return affected rowsNativeUpsert: Database-native upsertJsonFiltering: JSON field filteringFullTextSearch: Native full-text search
Supported Databases
Prisma Engines currently supports:| Database | Provider | Schema Connector | Query Connector |
|---|---|---|---|
| PostgreSQL | postgresql | ✅ SqlSchemaConnector | Via Query Compiler |
| MySQL | mysql | ✅ SqlSchemaConnector | Via Query Compiler |
| SQLite | sqlite | ✅ SqlSchemaConnector | Via Query Compiler |
| SQL Server | sqlserver | ✅ SqlSchemaConnector | Via Query Compiler |
| CockroachDB | cockroachdb | ✅ SqlSchemaConnector | Via Query Compiler |
| MongoDB | mongodb | ✅ MongoDbSchemaConnector | Legacy (QC planned) |
Query Compiler Architecture: Prisma 7+ uses the Query Compiler (QC) architecture where query planning happens in Rust and execution runs in TypeScript using driver adapters. The native Rust query engine has been removed.
Migration Table
SQL connectors store migration history in the_prisma_migrations table:
id: Migration UUIDchecksum: Migration content hashfinished_at: Completion timestampmigration_name: Migration directory namelogs: Execution logsrolled_back_at: Rollback timestampstarted_at: Start timestampapplied_steps_count: Number of migration steps
Error Handling
Connectors translate database errors to user-facing errors:- SQL: Quaint errors mapped to
ConnectorErrorwith user-facing messages - MongoDB: MongoDB errors converted via
mongo_error_to_connector_error - Version incompatibility:
DatabaseVersionIncompatibilityerrors
Next Steps
SQL Connectors
Learn about SQL connector implementation
MongoDB Connector
Explore MongoDB connector specifics