FQL v4 will be decommissioned on June 30, 2025. Ensure that you complete your migration from FQL v4 to FQL v10 by that date. For more details, review the migration guide. Contact support@fauna.com with any questions. |
What is Fauna?
Fauna is a relational database with a document data model built for modern applications and delivered as a cloud API. It combines support for semi-structured data with powerful relational features such as foreign keys, views, and joins.
Overview
The Fauna multi-region compute and data platform is fast, reliable, and secure. Inspired by Calvin, the distributed transaction engine provides strong consistency and multi-region replication so that application code doesn’t have to. Data temporality provides efficient reads and the ability to audit writes. Database multi-tenancy allows multiple databases per account with multiple Region Groups for isolation and data residency requirements. Intelligent routing in the service routes requests to the right database anywhere from a single, global endpoint. Fauna is a trusted platform compliant with GDPR, SOC2 Type II, and HIPAA.
With Fauna, creating a new database in any region group with a few clicks is easy. You can manage team roles with fine-grained access controls, track usage and consumption-based billing using the dashboard, upload schemas, run queries, and improve performance using indexes.
Fauna has a network of integrations to:
-
leading development tools
-
compute platforms
-
identity providers
-
serverless infrastructure partners
The API delivery model translates to 100 percent freedom from database operations at any scale so that you can say goodbye to managing servers, clusters, capacity planning, data partitioning, backups, replication, and unpredictable loads.
Fauna operates as a multi-tenant database service with multiple Region Groups as deployment options. In addition, for more demanding applications requiring a distinct geographic footprint, the Virtual Private Fauna option allows you to consume Fauna in your geographic region or cloud provider of choice.
How does Fauna address these requirements?
Fauna Capability | Benefit | Use Case Examples |
---|---|---|
Strictly serializable, multi-region transactions. |
Provides a consistent, unified, global view of all data in real-time. |
Global backend for operational SaaS or mobile applications. |
Single round consensus for writes. |
Lower write latency that is not impacted by multiple round trips across different regions. |
Transactional mobile and payment applications where a snappy user experience matters. |
Write serializability independent of the number of keys. |
Unlike some competitors, Fauna doesn’t have restrictions on the number of keys that can be part of a transaction. You don’t have to split transactions artificially into multiple batches of keys. |
Games or business applications where a transaction can impact multiple keys. |
Any replica can service serializable reads. |
Any region can service reads. This results in real-time visibility that gives you an accurate view. |
Location-based mobile applications that require low latency and consistent reads, irrespective of geography. |
No contention between serializable writes and reads. |
This leads to lower latency writes and a consistent view of data across the globe. |
Real-time business applications that feature data consolidation across the globe. |
Architectural innovations
Fauna innovates in multiple database areas.
Document data model
Fauna is the first relational database with a document data model, offering the benefits of document and relational databases in a package attractive to developers. Like other document databases, Fauna stores data as JSON documents that are initially schemaless, which gives you flexibility in early application development as schema evolves. Currently in development, Fauna intends to introduce optional schema support that allows developers to incrementally enforce the shape of data across groups of document collections.
Unlike other document databases, documents stored in Fauna can reference each other based on attributes, allowing developers to use arbitrarily complex joins in the database layer and eliminating the need for multiple round trips and custom join logic in application code. All requests execute in the context of a transaction, which means that the result is guaranteed to be consistent and up-to-date at the snapshot time of the request.
Database language and API
The developer interface is the functional database language called Fauna Query Language (FQL). While not a general-purpose programming language, FQL provides much of the capability expected from one. It allows for complex, precise manipulation and retrieval of data stored in Fauna. You execute a query by submitting it to Fauna, which computes and returns the result. Query execution is transactional. No changes are committed if an error occurs.
Multi-region, active-active by default
Under the hood, the Fauna service implements a masterless architecture. With replicas in a cluster geographically distributed across many locations, Fauna provides active-active transactions that allow applications to scale horizontally across multiple regions without adding code.
Modern security model
In addition to running a secure service, Fauna has a modern security model at the database level that you expect of an internet-facing API. It is designed for applications exposed to millions of untrusted and potentially malicious users or devices, which minimally require identity management, authentication, and row-level security. The Fauna database security model internalizes these concerns and provides administrative and application-level identity and security through API servers or directly to untrusted clients, such as mobile, browser, and embedded applications.
Next steps
Now that you know what Fauna is about, sign up for a free account and take Fauna for a spin. Try the Quick start tutorials for a quick, hands-on introduction to Fauna.
Is this article helpful?
Tell Fauna how the article can be improved:
Visit Fauna's forums
or email docs@fauna.com
Thank you for your feedback!