Перейти к содержимому

Клиентские интерфейсы

При выборе интерфейса сначала определите, где будет работать движок базы данных. ORM является прикладной абстракцией, а не третьим режимом развёртывания.

Интерфейс Где работает движок Ответственность приложения
Встраиваемый Rust API В процессе приложения Открыть базу, выполнить операции и закрыть её
Rust TCP-клиент В отдельном процессе сервера RadixDB Подключиться, пройти аутентификацию, выбрать базу и прочитать результаты
ORM Использует интерфейс выполнения операций БД Описать модели или записи и выбрать границы транзакций

Локальный CLI в начале учебника показывает встраиваемый доступ: он открывает базу в памяти или файлах без сетевого сервиса. Rust-приложения используют публичный API базы из radixdb-api, также доступный через верхнеуровневый крейт radixdb. Приложение управляет жизненным циклом движка и должно иметь доступ к файлам базы.

radixdb-client работает по бинарному протоколу RadixDB и не содержит движок хранения. Используйте клиент, совместимый с протоколом сервера; не предполагайте, что PostgreSQL-клиенты или URL подключения PostgreSQL подходят для RadixDB.

В серверном упражнении запускается готовый клиент. Его исходник examples/public/rust-client/basic.rs показывает подключение, аутентификацию, выбор базы, выполнение SQL, чтение курсора и закрытие соединения. Читайте до EOF или закрывайте незавершённый курсор перед отправкой другой команды. Путь базы локального CLI и имя базы сервера не взаимозаменяемы.

radixdb-orm предоставляет абстракции моделей и записей для прикладного кода. Он не отменяет необходимость понимать ограничения SQL, границы транзакций и ошибки. Выбирайте встраиваемый или серверный режим отдельно от решения использовать ORM. Подробные контракты и исполняемые примеры находятся в главах «Встраиваемый Rust», «Rust TCP-клиент» и «Rust ORM».

Этот обзор не является полным контрактом API. Подробные главы определяют типы параметров, prepared statements, ошибки транзакций и неопределённый исход при потере соединения. В частности, не повторяйте запись автоматически только потому, что ответ на неё не был получен.