Как стать автором
Поиск
Написать публикацию
Обновить
242.15

Базы данных *

Все об администрировании БД

Сначала показывать
Период
Уровень сложности

Нашел, проверил, убедил: как мы организовали генерацию SQL-запросов, проверку сложных данных и при чем здесь Allure

Время на прочтение22 мин
Количество просмотров3.2K

Привет, Хабр!

Я, Михаил Герасимов, инженер РСХБ-Интех. Уже два года занимаюсь автоматизацией тестирования, и за это время успел написать (и переписать) немало SQL-запросов. Вместе с моим коллегой Михаилом Палыгой мы развиваем инструменты для автоматизированного тестирования, и сегодня расскажем вам о том как мы справляемся с построением сложных SQL-запросов и проверкой объектов в базе данных, на примере нашей библиотеки CheckMateDB для автоматизации тестирования банковской системы ЦФТ-Банк.

В статье опишем проблемы, с которыми сталкивались при ручном написании SQL-запросов и проверке данных: дублирование кода, сложность поддержки, отсутствие единого стиля и низкая информативность тестов. Для решения этих проблем мы разработали инструмент QueryBuilder, который позволяет динамически генерировать SQL-запросы с помощью Java-кода.

Мы создали иерархию классов CriteriaBasic и Table для удобного описания критериев поиска данных в базе, используя паттерн fluent interface. Также мы разработали кастомные классы проверок на базе AssertJ с поддержкой Allure-шагов, которые позволяют проверять сложные многоуровневые объекты с возможностью погружения во вложенные структуры. Для облегчения рутинной работы создали плагин, автоматически генерирующий классы DTO и Table на основе структуры базы данных. Библиотека интегрирована с Hibernate через DaoCommon, что обеспечивает удобное выполнение SQL-запросов и управление сессиями. Результатом стало существенное улучшение читаемости тестов, повышение переиспользуемости кода, стандартизация подхода к тестированию и создание информативных Allure-отчетов.

Читать далее

JDBC: Как Java научилась дружить с Базами Данных

Время на прочтение4 мин
Количество просмотров9.5K

Представьте, что вы — гид в огромном городе под названием «Базы Данных». Ваша задача — помочь Java-приложениям найти нужную информацию, обновить данные или создать новые таблицы. Но как «разговаривать» с разными СУБД, если у каждой свой язык? Здесь на помощь приходит JDBC — универсальный переводчик, который знает все диалекты.  

Читать далее

SQL vs Excel: когда таблицы уже не справляются

Время на прочтение8 мин
Количество просмотров11K

Когда в компании работа выстроена в Excel, проблем нет, пока в таблице несколько тысяч строк. Но бизнес растёт, и вот в файле уже миллион записей. Поиск тормозит, сложные формулы зависают. А если сотрудник случайно удалит столбец — восстанавливать придётся вручную. Это первые сигналы, что Excel не справляется. 

В этой статье разберём, когда Excel перестаёт быть удобным инструментом и как SQL помогает решать эти проблемы. А приглашённые эксперты поделятся практическими примерами и советами по переходу.

Читать далее

Автоматизированное документирование баз данных на Markdown

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров5.3K

В работе с базами данных ключевым аспектом является не только отслеживание изменений в их структуре, но и подробная документация таблиц и их полей. Это особенно важно для проектов с быстро изменяющейся архитектурой, где ясность и точность данных играют решающую роль. Например, в крупных веб-приложениях часто требуется фиксировать новые таблицы, обновления полей или удаление устаревших элементов.

Для решения данной задачи разработаны два PHP-скрипта, предназначенные для работы с PostgreSQL. Эти скрипты выполняют две основные функции:

1.  Сравнение старой и новой структуры базы данных с выявлением добавленных, удалённых и изменённых таблиц.

2.  Создание Markdown-документации, которая содержит подробное описание назначения таблиц и характеристик их полей, что делает изменения в структуре базы данных прозрачными для разработчиков.

Читать далее

Чья фича лучше или как сравнить эффективность планов SQL-запроса

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров6K

Как сравнить? - измерить execution-time конечно! - скажет опытный читатель. И будет совершенно прав: с практической точки зрения эффективнее та СУБД, которая выдаёт больший TPS. Однако иногда нам требуется спроектировать систему, которой ещё нет или сделать прогноз поведения на нагрузках, которые ещё не пришли. В таком случае нам нужна некоторая характеристика, позволяющая выполнить качественный анализ плана или выполнить сравнение пары планов. Обсуждению одной такой характеристики - количество прочитанных страниц данных - и посвящён данный пост.

Читать далее

FastAPI и Vue.js 3: телеграм-бот с MiniApp для записи и автоматических уведомлений. Пишем бэкенд

Время на прочтение41 мин
Количество просмотров14K

Сегодня я рад представить новый масштабный проект, в рамках которого мы подробно рассмотрим технологии и подходы, ранее не освещенные в моих статьях.

На этот раз мы создадим телеграм-бота с MiniApp (ранее известным как WebApp) — это будет бот с интегрированным мини-сайтом прямо в Telegram. Для реализации проекта мы используем два основных фреймворка:

1. FastAPI — мощный Python-фреймворк, который мы задействуем для разработки API нашего телеграм-бота. Мы рассмотрим уникальный подход, позволяющий создать полноценный бэкенд, который будет закрывать как API-методы, так и функционал телеграм-бота.

2. Vue.js 3 — JavaScript-фреймворк, выбранный за его удобство разработки и возможности создания сложных визуальных элементов.

В этой статье мы сосредоточимся на описании бэкенда, а создание приложения на Vue.js 3 будет вынесено на следующую статью.

Читать далее

PSQLBuddy — резервное копирование и восстановление PostgreSQL

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров5.6K

Все мы так или иначе решаем вопросы резервирования наших данных. Но всегда хочется, чтобы думать об этом приходилось как можно меньше, стоило это дешевле, а восстановление было простой задачей. Это я и попытался сделать в своем проекте PSQLBuddy.

Опять-двадцать пять, или резервное копирование баз данных PostgreSQL по новому. Снова.

Читать далее. Опять

Быстрая обработка данных в data lake с помощью SQL

Время на прочтение15 мин
Количество просмотров4.2K

Кому пришла в голову идея отправлять SQL запросы в data lake? Оказывается, это позволяет компаниям более гибко и эффективно анализировать свои данные за счёт уменьшения потребности в ETL и снижения нагрузки на корпоративное хранилище. Рассмотрим, какие популярные SQL-движки умеют это делать и как им это удаётся.

Меня зовут Владимир Озеров, я руковожу компанией Querify Labs. Мы уже порядка 10 лет занимаемся распределённым SQL, делаем всевозможные SQL-движки, в частности CedrusData — коммерческий движок на основе опенсорс проекта Trino. Сегодня поговорим про то, каким образом устроен ряд SQL-движков, которые обрабатывают данные от data lake.

Читать далее

Интеграция LLM в корпоративное хранилище данных

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров6.7K

В данной статье рассматриваются способы интеграции Large Language Models (LLM) в корпоративные системы хранения данных. Основное внимание уделено использованию LLM для автоматического извлечения информации из текстовых данных с последующим формированием SQL-запросов. В рамках исследования также изучаются методы пост-обработки результатов SQL-запросов с целью улучшения точности и адаптивности моделей к конкретным характеристикам и особенностям баз данных.

Работа включает в себя анализ существующих решений и методов оценки эффективности LLM в контексте их интеграции в корпоративные информационные системы. Особое внимание уделяется применению Preference Learning via Database Feedback — подхода, направленного на обучение моделей на основе обратной связи от баз данных, что способствует более точному и адаптивному выполнению запросов пользователей.

Исследование также охватывает разработку примеров интеграции LLM в реальные корпоративные хранилища данных с целью демонстрации практической применимости и эффективности предлагаемых подходов.

Читать далее

Greenplum, NiFi и Airflow на страже импортозамещения: но есть нюансы

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров4.3K

В статье описывается практическое применение популярных Open-Source технологий в области интеграции, хранения и обработки больших данных: Apache NiFi, Apache Airflow и Greenplum для проекта по аналитике учета вывоза отходов строительства.

Статья полезна специалистам и руководителям, которые работают с данными решениями и делают ставку на них в части импортозамещения аналогичных технологий. Статья дает обзор основных сложностей внедрения на примере реального кейса, описывает архитектуру и особенности при совместном использовании решений.

Читать далее

Как подойти к внедрению DWH, чтобы не было «больно»? Какие методологии использовать и какой стек выбрать?

Время на прочтение9 мин
Количество просмотров7.7K

В статье рассказываем о том, кому стоит задуматься о внедрении DWH, как сократить вероятность ошибок на этапе разработки проекта, выбрать стек, методологию и сэкономить ИТ-бюджеты. 

Читать далее

Инженер на минималках: установка и настройка ClickHouse

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров22K

Базы данных — один из важнейших инструментов в арсенале аналитика. А ClickHouse — это высокопроизводительная аналитическая СУБД, которая заточена на то, чтобы переваривать огромные массивы данных. Поэтому полезно будет разобраться, как самостоятельно установить ClickHouse в Yandex Cloud или на VDS-сервере, как создать пользователей и активировать веб-интерфейс и доступ по сети. Этим и займемся в статье.

Читать далее

Как мы судили на чемпионате России по спортивному программированию

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.6K

В начале ноября так сложились обстоятельства, что мне с коллегой довелось поучаствовать в качестве судей на мероприятии под строгим названием «Отборочный этап чемпионата России по спортивному программированию» в дисциплине «Продуктовое программирование». Или, говоря более простым языком — студенческий трехдневный онлайн-хакатон, победители которого поедут на финал чемпионата страны в Москву.

Вот об этом мероприятии, что на нём было интересного и каких-то выводах из увиденного сегодня и поговорим.

Читать далее

Ближайшие события

Хранение данных: как минимизировать риски с помощью DCAP

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.7K

Компаниям важно, чтобы личные данные сотрудников, конфиденциальная информация клиентов и документы с грифом «коммерческая тайна» были надежно защищены. С каждым годом такой информации становится больше и она подвергается все новым рискам. Параллельно ужесточаются наказания ответственных лиц за нарушения в отношении данных. Например, в Совете Федерации этим летом начали обсуждать закон, который предусматривает лишение свободы сроком до 10 лет и многомиллионные штрафы. Защита данных — тема обширная, выходящая за рамки статьи, поэтому сегодня я расскажу лишь об одном из инструментов, помогающих избежать некоторых рисков, связанных с хранением неструктурированных данных — о DCAP-системе.

Читать далее

Картина ясная: как мы визуализируем метрики Platform V DataGrid в Grafana

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.3K

Привет, Хабр! Меня зовут Илья Степанов, я работаю в СберТехе в команде продукта Platform V DataGrid — распределённой базы данных, основанной на Apache Ignite и доработанной до enterprise-уровня надёжности и безопасности. В статье расскажу, как мы обеспечиваем промышленный мониторинг критических систем и визуализируем метрики наших кластеров.

Периодически к нам обращаются пользователи и клиенты с вопросом: «Как лучше визуализировать то или иное состояние кластера?» В нашем продукте есть несколько способов получения метрик из кластера. В том числе «классические» для Java-приложений: можно прочитать метрики через JMX, экспортировать в формате Prometheus, сбрасывать в log-файл, получать в результате SQL-запроса или через вызов управляющего скрипта. То есть, с метриками может работать практически любая система мониторинга.

Читать далее

Рассмотрение метода репликации в подготовке к интервью по проектированию системы: репликация без лидера

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.5K

До сих пор мы обсуждали метод репликации, основанный на лидерах, но существует и другая стратегия, при которой ни один из узлов системы не выступает в роли лидера. К числу баз данных, использующих репликацию без лидеров, относятся:

Читать далее

Почему SRE приносит пользу командам и клиентам

Время на прочтение6 мин
Количество просмотров4K

SRE объединяет группы разработчиков программного обеспечения и инженеров эксплуатации и помогает создавать надежные, отказоустойчивые и масштабируемые системы. Некоторые из преимуществ этой методологии:

• Улучшаются коммуникации в команде

• Совершенствуется культура

• Уменьшается доля ручного труда

• Клиенты чаще остаются довольны

Читать далее

Об опасности заимствования западной методологии нормализации и ведения Справочника МТР по шаблонам свойств-значений

Время на прочтение15 мин
Количество просмотров4.7K

 Об опасности заимствования западной методологии нормализации и ведения Справочника МТР по шаблонам свойств-значений

 

Досадную, непростительную ошибку мы совершили в далеком 2007 году: ФГУ «Федеральный центр каталогизации» Росстандарта (а мне довелось в те годы работать в этой организации) пригласил в Россию Южно-африканскую компанию “RAMIS”. Сначала – на Международную конференцию по каталогизации с целью информировать техсообщество о новом стандарте параметрического описания продукции ISO 22745, а затем – мы свели их с руководством одной из крупнейших отечественных металлургических компаний с целью «реализовать идеи на практике».

К тому времени на отечественном ИТ-рынке не только SAP/IBM/Oracle, но и ряд отечественных компаний стали активно продвигать практику нормализации и автосборки наименований закупаемой продукции по примитивным, односложным шаблонам свойств-значений. То, что с внедрением этой практики резко «просело» качество нормативно-справочной информации (НСИ) – это считалось временным явлением и объяснялось новизной методологии.

С другой стороны, традиционный подход, подразумевающий, что главное в описании продукции  – это формирование технически грамотного наименования (с разумной единообразностью внутри своей группы, конечно) – всячески очернялся как пережиток прошлого, как чрезмерно затратный, ибо требовал наличия грамотных технических специалистов.

Основная техническая часть этой статьи была написана еще весной 2022 года и имела целью исключительно узкопрофессиональную критику одной из привнесенных с Запада ИТ-методологий.  Сегодня же есть смысл взглянуть на проблему и с точки зрения «конспирологии»: а не случайны ли эти «закладки»? Не повторение ли это аферы с СОИ 80-х годов, приведшей к перегрузке нашей экономики непроизводительными затратами?

Читать далее

Детальное рассмотрение поведения при использовании INCLUDE

Время на прочтение14 мин
Количество просмотров10K

Некоторые базы данных такие, как Microsoft SQL Server, IBM Db2, а также PostgreSQL начиная с 11 версии – предлагают прибегнуть к оператору include для генерации индекса. Представление данного функционала в PostgreSQL (исходная статья вышла 30.04.2019) послужило поводом для этого объёмного рассуждения о работе с оператором include.

Содержание:

1)    Напоминание: btree-индексы

2)    Напоминание: Index-only сканирование

3)    Оператор include

4)    Фильтрация по полям в include

5)    Уникальные индексы при использовании include

6)    Сравнение

7)    PostgreSQL: Никакой фильтрации до проверки области видимости

Читать далее

Хранимые процедуры, функции и триггеры на Java

Время на прочтение14 мин
Количество просмотров8.8K

Всем привет! Сегодня мы расскажем о полезной возможности СУБД Ред База Данных - создании внешних подпрограмм, то есть процедур, функций и триггеров на языке Java. Например, язык PSQL не позволяет работать с объектами файловой системы или сети, а Java запросто решает такие задачи и существенно расширяет возможности встроенного языка.

Читать далее