Artyom / 🗄 База данных — SurrealDB

Created Fri, 16 Aug 2024 00:00:00 +0000 Modified Wed, 21 May 2025 11:23:38 +0000

Картинка

🗄 База данных — SurrealDB

В мире, где PostgreSQL стал де-факто стандартом для многих проектов, множество интересных баз данных остаются в тени. Одной из таких недооценённых технологий является SurrealDB, и я хочу рассказать о её особенностях.

SurrealDB — это гибкая и мощная база данных, которую можно использовать как традиционную платформу с серверными языками и фреймворками, такими как Golang, Python, Rust, C, Java, .Net, Node.js и PHP. Но это ещё не всё! SurrealDB также может служить полноценной серверной платформой, позволяя напрямую подключаться к ней из интерфейсных языков и фреймворков, таких как JavaScript, WebAssembly, React.js, Next.js и Ember.js. В этом режиме можно задавать разрешения на уровне таблиц, записей и полей, что открывает возможность создания сложных схем доступа для различных типов пользователей.

SurrealDB по своей сути является документно-ориентированной базой данных. Каждая запись хранится в базовом хранилище «ключ-значение», что позволяет сохранять произвольные массивы, объекты и другие типы данных. Но SurrealDB — это не просто база данных документов. Благодаря продуманной системе работы с идентификаторами записей и выборкой данных, её можно использовать для хранения упорядоченных временных рядов и сильно связанных графов. SurrealDB также поддерживает **SQL-**подобный язык запросов — SurrealQL, который делает работу с данными простой и интуитивной.

Эта база данных может работать в самых разных средах и конфигурациях. SurrealDB поддерживает разделение уровней хранения и вычислений, что позволяет использовать её как встроенное решение, как вертикально масштабируемый одноузловой сервер, или как горизонтально масштабируемый многоузловой распределённый кластер. Встроенный режим позволяет запускать SurrealDB с использованием хранилища в памяти, а в веб-браузере — с использованием IndexedDB или файлового хранилища RocksDB. В режиме сервера базы данных SurrealDB поддерживает работу с хранилищами RocksDB, TiKV или FoundationDB.