Skip to content

Database Guides

FraiseQL supports multiple databases out of the box. This section provides database-specific guides to help you optimize, configure, and troubleshoot your chosen database.

The most feature-rich relational database. Recommended for most production deployments.

  • Best for: Production applications, complex queries, advanced features
  • Performance: Excellent for analytical and transactional workloads
  • Features: Native JSONB, advanced indexing, full-text search
  • Scale: Handles millions of records efficiently

Popular open-source relational database with strong ecosystem support.

  • Best for: Web applications, wide adoption across hosting providers
  • Performance: Fast for read-heavy workloads
  • Features: Stable, mature, excellent documentation
  • Scale: Production-ready for large-scale applications

Lightweight, serverless, embedded SQL database engine.

  • Best for: Development, testing, embedded applications, mobile apps
  • Performance: Fast for single-machine workloads
  • Features: Zero configuration, great for rapid development
  • Scale: Perfect for apps under 100GB

Enterprise-grade relational database with advanced features.

  • Best for: Enterprise environments, Windows-centric deployments
  • Performance: Excellent for OLTP and OLAP workloads
  • Features: Always On, partitioning, advanced analytics
  • Scale: Supports enterprise-scale deployments
FeaturePostgreSQLMySQLSQLiteSQL Server
TypeRelationalRelationalRelationalRelational
LicenseOpen SourceOpen SourcePublic DomainProprietary
Setup ComplexityMediumEasyVery EasyHard
PerformanceExcellentVery GoodGood (single-user)Excellent
FeaturesExtensiveGoodBasicExtensive
JSON SupportNative JSONBJSON typeJSON functionsJSON support
Full-Text SearchNativeNativeFTS5 extensionNative
ScalabilityVery HighVery HighSingle machineVery High
Production ReadyYesYesWith caveatsYes
CostFreeFreeFreeExpensive (licensing)
FraiseQL FeaturePostgreSQLMySQLSQLiteSQL Server
Relay cursor pagination❌ offset only❌ offset onlyv2.0.2+
Offset pagination
Rich filters
JSON field filters✅ JSONB operators✅ JSON_VALUE
Full-text search✅ FTS5✅ CONTAINS/FREETEXT
Mutations (functions)1
Row-level security✅ native RLSvia viewsvia views✅ native RLS
Subscriptions
Windows Authentication✅ native
Azure AD / Entra IDvia extension✅ native
Always On / HAvia streaming replicationvia replication✅ Always On AG
Transparent Data Encryptionvia pgcrypto✅ native TDE
Indexed views✅ materialized views✅ native
Compliance toolinggoodbasicminimalexcellent

Recommended: SQLite

  • Zero configuration
  • Fast startup
  • No server process needed
  • Perfect for rapid iteration

Recommended: PostgreSQL or MySQL

  • PostgreSQL if you need advanced features (JSONB, full-text search, complex queries)
  • MySQL if you prefer simplicity and proven stability

Recommended: PostgreSQL

  • Superior performance at scale
  • Advanced features for complex queries
  • Excellent reliability and uptime
  • Strong community support

Recommended: PostgreSQL or SQL Server

  • PostgreSQL for open-source, maximum flexibility
  • SQL Server if your organization already runs it — Windows Auth, Azure AD/Entra ID, Always On, and TDE work natively without any migration
  • PostgreSQL: pg_dump / pg_restore
  • MySQL: mysqldump / mysql
  • SQLite: File copy (built-in backup)
  • SQL Server: Native backup tools

For production applications, use connection pooling:

  • PostgreSQL: PgBouncer, pgpool
  • MySQL: ProxySQL, MaxScale
  • SQLite: Built-in (single connections)
  • SQL Server: Connection pooling (built-in)
  • PostgreSQL: pg_stat views, monitoring tools
  • MySQL: Performance schema, slow query log
  • SQLite: Built-in profiling
  • SQL Server: SQL Server Management Studio, DMVs

FraiseQL makes it easy to change databases without rewriting your schema definition.

  • Same schema definition — Python/TypeScript/Go/Java/Rust/PHP code is database-agnostic
  • Portable applications — switch databases by changing the connection string
  • Testing flexibility — use SQLite in tests, PostgreSQL in production

See each database guide for migration strategies and syntax differences.

  1. SQLite’s function-call layer returns Unsupported for mutations. SQLite is recommended for development and testing only.