XSQUAREDAC

Автономный REST API сервер
который позволяет автоматизировать процесс создания REST API, предоставляя доступ к таблицам, представлениям, хранимым процедурам и функциям на стороне поддерживаемых баз данных.

Требования к разработчку

  • Необходимо знать только SQL и процедурные расширения SQL, используемых баз данных.
  • Минимальное время обучения программиста с Oracle Developer – 2-5 дней с MySQL/PHP Developer – 14 дней c MS SQL Developer – 14 – 28 дней
  • 1 команда для установки - yum install xdac
  • 10 параметров для настройки

Требования к окружению

  • 15 МБ RAM для работы 10-ти HTTP клиентов
  • 100 МБ RAM для работы 1000-ти HTTP клиентов
  • 2-5% дополнительной нагрузки на базу данных
  • Любая RPM/DEB операционная система
  • Любая архитектура - X86 / ARM / E2K / LoongArch

Требования к запуску

  • 10 минут на создание сервиса на получения данных по клиенту curl http://host/api/getClient?id=2342
  • Создание корпоративных приложений в 20 раз быстрее, используя в 100 раз меньше кода
  • MVP микросервисного приложения за 2-3 дня

Архитектура решения

Архитектура XDAC
REST API из базы данных

XDAC автоматически превращает ваши базы данных в полноценный REST API

RPC

Вызов процедур и функций

DML

Операции Insert, Read, Update, Delete с таблицами и представлениями

Ключевые возможности XSQUARE-XDAC

Multi-Datasource

Единый REST API для PostgreSQL, MS SQL, Oracle, Firebird и YDB из одного инстанса сервиса

RPC Engine

Автоматическая публикация хранимых процедур и функций базы данных в виде REST-эндпоинтов

DML Engine

CRUD для таблиц и представлений с операторами фильтрации и проекции

Множественный экспорт

экспорт Выгрузка данных в форматы CSV, XLSX, JSON и XML одним заголовком запроса

Гибкие форматы запросов

Приём данных в JSON, form-data, x-www-form-urlencoded, octet- stream и plain text

Stateless-архитектура

Кэширование метаданных, пул соединений и горизонтальное масштабирование без хранения состояния

HTTP-контекст в БД

Прямой доступ к заголовкам, методам и путям HTTP-запроса из хранимых процедур и функций

Обслуживание и балансировка

HTTP запросов между Веб клиентом и базой данных

Стриминг

Потоковая выгрузка больших выборок через Chunked Transfer Encoding без нагрузки на память сервера

Примеры RPC вызовов

GETЗапросбез аргументов

Каждая процедура и функция, полученная в результате сканирования схемы, публикуется сервисом с префиксом [datasource_name]/rpc/

CURL:
curl "http://127.0.0.1:8887/xdac/pg_db/rpc/f_hello" -X GET

Ответ от сервера

Содержимое:Hello world!!
-- Функция в PostgreSQL CREATE OR REPLACE FUNCTION api.f_hello() RETURNS json LANGUAGE plpgsql AS $function$ BEGIN RETURN '{"GET_RETURN": "Hello world!!"}'::json; END; $function$;
GETЗапрос1 bigint-аргумент

Получаем в JSON сведения о клиенте по ID из списка клиентов

CURL:
curl "http://127.0.0.1:8887/xdac/pg_db/rpc/f_get_client?p_id=" -X GET
Выберите клиента:Быков Артём Романович

Ответ от сервера

ФИО:Быков Артём Романович
Дата рождения:11.04.1968
Номер телефона:+7 (999) 123-45-67
Электронная почта:info@xsquare.ru
-- Функция в PostgreSQL CREATE OR REPLACE FUNCTION api.f_get_client(p_id bigint) RETURNS json LANGUAGE plpgsql AS $function$ DECLARE l_client_info json; BEGIN SELECT json_build_object('fio', CONCAT(c.last_name,' ',c.first_name,' ',c.second_name), 'date_of_birth', to_char(c.date_of_birth, 'dd.mm.yyyy'), 'phone', c.phone, 'email', c.email) INTO l_client_info FROM cli.t_clients c WHERE c.id = p_id; RETURN l_client_info; END; $function$;

Примеры DML вызовов

GETЗапросс аргументами

Получаем данные о 5-ти клиентах младше 19 лет

CURL:
curl "http://127.0.0.1:8887/xdac/pg_db/dml/t_clients?select=first_name,age&age=lt.19&limit=5" -X GET
select:first_name,age
age:lt.19
limit:5

Ответ от сервера

[ { "age": 18, "first_name": "ЕФИМ" }, { "age": 18, "first_name": "ДАРИМА" }, { "age": 18, "first_name": "ВЛАДИСЛАВ" }, { "age": 18, "first_name": "НИКОЛАЙ" }, { "age": 18, "first_name": "ЕВГЕНИЙ" } ]
POSTЗапросс аргументами

Добавление в таблицу t_clients данных о новом клиенте

CURL:
curl "http://localhost:8888/xdac/pg_db/dml/t_clients" -X POST -H "Content-Type: application/json" -d @- << EOF [ {"age":77,"birthdate":"1950-02-27T00:00:00Z","description":"insert by xdac","first_name":"Maks","id":27800,"last_name":"Xdac","salary":41622.90,"second_name":"Donald"} ] EOF
id:27800
first_name:Maks
last_name:Xdac
second_name:Donald
age:77
birthdate:1950-02-27T00:00:00Z
description:insert by xdac
salary:41622.90
GETЗапросбез аргументов

Экспорт данных в CSV

CURL:
curl -s http://localhost:8888/xdac/red_db/dml/t_clients -H "X-Format: csv" -o clients.csv

Лицензионное соглашение

Передача прав на использование программного обеспечения производства ООО "Хи-Квадрат" для конечного пользователя на коммерческое использование осуществляется на основании Лицензионного соглашения

Лицензии на использование обеспечения необходимо приобретать у официальных партнеров.