🚀 Возвращение к трудовым будням после конференций!
Вот и позади конференция "Цифровая Промышленность России" и "Глобальный Цифровой Форум 2025". Время вернуться к разработке и новым задачам!
Сегодня я завершил работу над функцией для записи всех клиентских сообщений в базу данных YDB. Использую параметризованные запросы, и, как оказалось, с ними не всё так просто, как хотелось бы.
🔍 Что я сделал:
1. Декларация структуры: Для начала нужно было продекларировать структуру, которая будет записываться в базу. Это важный шаг, который позволяет YDB понимать, какие данные мы собираемся хранить.
2. Использование REPLACE INTO: Я применил запрос REPLACE INTO, который обновляет значения в столбцах, не читая строки. Это значит, что неуказанным полям присваивается NULL, что делает его быстрее, чем INSERT.
3. Массовая вставка: Запрос позволяет массово вставлять записи в базу, что значительно упрощает работу с данными.
Вот пример SQL-запроса:
DECLARE $clientMessage AS List<Struct<
field_1: Int64,
field_2: Int64,
field_3: Timestamp,
field_4: Timestamp,
field_5: Utf8,
field_6: Utf8,
field_7: Utf8,
field_8: Json>>;
REPLACE INTO ${tableName}
SELECT
field_1,
field_2,
field_3,
field_4,
field_4,
field_5,
field_6,
field_7
FROM AS_TABLE($clientMessage)
;
4. Создание модели: Далее я создал класс (модель) клиентского сообщения, который преобразует типы JavaScript в типы, поддерживаемые базой, и формирует коллекцию в нужном формате.
Теперь остаётся только выполнить запрос!
💡 Если вам интересно, как я реализовал логику запроса и какие сложности возникли, дайте знать, и я с радостью поделюсь подробностями!