Fauna — распределённая серверная база данных, предоставляемая как облачный сервис с доступом через API. Она сочетает элементы документо-ориентированных систем и реляционных баз данных, предлагая модель данных, ориентированную на документы и наборы, при этом поддерживая транзакции и агрегированные запросы. В архитектуре Fauna заложены принципы глобально распределённого хранения, согласованности на уровне транзакций и управления версиями данных, что позволяет использовать её в приложениях с требованиями к доступности и предсказуемому поведению при конкурентном доступе.
Платформа ориентирована на разработчиков и предоставляет богатый API, включая поддержку GraphQL и собственный функциональный язык запросов. Fauna реализует модель контроля доступа и безопасности на уровне схемы и запросов, а также встроенные механизмы для управления транзакциями и целостностью данных. Исторические сведения о проекте включают его джентельменское позиционирование как базы данных как сервиса, ориентированной на облачные и распределённые приложения; в случае недостатка публичной информации о некоторых деталях реализации, в тексте отмечается, что общие характеристики и сценарии использования описаны на основе доступных описаний и документации поставщика.
- Модель данных: документо-ориентированная с возможностью представления отношений и ссылок между объектами.
- API-доступ: предоставление REST- и GraphQL-интерфейсов, а также собственного языка запросов для выражения сложной логики на стороне сервера.
- Транзакции: поддержка атомарных операций и согласованности в пределах транзакций.
- Распределённость: архитектура, ориентированная на глобальное распределение данных и низкоуровневое управление копиями для отказоустойчивости.
- Безопасность и контроль доступа: механизмы аутентификации, авторизации и разграничения прав на уровне запросов и схемы.
- Масштабируемость: возможности горизонтального масштабирования и управления нагрузкой через облачную инфраструктуру.
- Интеграция: поддержка платформенных SDK и инструментов для распространённых языков программирования и сред разработки.
- Управление схемой и миграциями: средства для описания структуры данных, версионирования и внесения изменений в моделях приложений.