LinkedRecords — это NoSQL база данных, к которой можно подключаться напрямую из одностраничного приложения. Никакого бэкенда писать не нужно.
Разработчики опубликовали результаты нагрузочного теста. Он симулирует работу с документами в многопользовательской среде. Пользователь 1 создаёт 5 000 документов. Пользователь 2 — тот, за кем следят, — создаёт по одному документу на каждые 10 документов первого, пока не наберётся 300. Пользователь 3 вставляется редко.
Тест замеряет три операции. createDocument не зависит ни от общего числа документов в базе, ни от того, сколько видит конкретный пользователь. fetchDocuments (список из 300 документов пользователя 2) и fetchDocument (загрузка одного документа со всем содержимым) зависят только от количества документов, видимых пользователю, но не от полного размера базы. Графики выходят на плато около 3 000 документов.
Ключевая особенность LinkedRecords — авторизация встроена прямо в API. В отличие от традиционного SQL, здесь не нужно прописывать универсальные правила на бэкенде. Пользователь, который вставляет запись, сам указывает, кто может её читать. Разработчики называют это сменой парадигмы.
База настраивается через переменные окружения. Нужен PostgreSQL (PGHOST, PGUSER, PGPASSWORD, PGDATABASE). Можно подключить S3 для хранения блобов — это рекомендуется. Если S3 не настроен, данные хранятся в PostgreSQL.
Есть два режима аутентификации. В confidential client mode сессионный токен хранится в HttpOnly cookie. Это безопаснее, но требует, чтобы сервер и фронтенд были на одном домене. Иначе cookie становится сторонним и не работает. В public client mode токен доступа хранится в браузере, и можно работать с разных доменов.
Подключается LinkedRecords через SDK одной строчкой: new LinkedRecords(new URL('https://your-backend.com'), oidcConfig). SDK сам обрабатывает OIDC-редирект. Разработчики описывают LinkedRecords как SQL, который можно вызывать прямо из React, не думая о правах доступа, и который умеет делать живые обновления.