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

Базы данных *

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

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

Как мы автоматизировали обновление, развёртывание и настройку Postgres-like СУБД для пользователей

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

Привет, Хабр! Меня зовут Роман Аминов, я руковожу группой автоматизации бизнес-сценариев в команде СУБД Pangolin в СберТехе. Это специальная доработанная сборка PostgreSQL, целевая СУБД в Сбере и не только. СУБД — сложный продукт, обновление, настройка и другие рутинные действия, связанные с её сопровождением, сопряжены с риском потери данных. Чтобы облегчить жизнь пользователям (и вдобавок разгрузить нашу техподдержку) мы разработали инструмент для автоматизации кластеров СУБД, их настройки и конфигурирования, обновления версий компонентов в их составе и обслуживание. Решение уже прошло проверку на тысячах кластеров в Сбере и я готов поделиться тем, как всё это работает.

Уточню, что мы используем систему управления конфигурациями Ansible. Всё, что нужно для её работы — это возможность устанавливать SSH-соединения и Python на удалённых серверах.

Надеюсь, статья будет полезна или натолкнёт на свои мысли автоматизаторов и администраторов СУБД и вообще всех, кто связан с базами данных. 

Читать далее

Когда 0 в продажах — аномалия? CUSUM для поиска проблем в ритейле

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

Всем привет! Меня зовут Костя, и в этой статье я продолжу рассказ моей коллеги Анастасии из команды доступности Magnit Tech о том, как можно искать проблемные товары на полках магазинов, опираясь лишь на данные по дневным продажам и остаткам товара в магазине.

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

Читать далее

Мета-акторы, готовый скелет микросервиса

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

Я ненавижу руками создавать бойлерплейты. Любые. Нет, LLM-ки тут тоже не помогут: им надо писать промпты (а потом ещё проверять, что оно там нагенерировало). Мне всегда хотелось, чтобы остов приложения задавался конфигурацией, а я бы только добавлял бизнес-логику. Буквально, в уже сгенерированные для неё места.

Именно в такой парадигме написана моя библиотека finitomata, в которой конфигурация конечных автоматов задаётся текстовым представлением (PlantUML/Mermaid), а бизнес-логика просто распихивается по колбэкам переходов. Но мне этого оказалось мало, и я решил обернуть в такие же абстракции хранение и подписку на изменения.

Так родилась библиотека (пока не опубликована, доступна только в исходниках) persistomata.

Даже не библиотека, а (простите) фреймворк

Как я создавал коллекцию фильмов

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

Это было очень давно, году примерно в 1997. Однажды мне очень ярко приснился и хорошо запомнился следующий сон: как будто мы купили новый телевизор и видеомагнитофон. И несколько видеокассет.

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

У моего друга детства Сашки был дома новый телевизор и видак, у моего друга детства Вовки дома был импортный телевизор и видак, у моего хорошего знакомого Димки был новый телевизор и видак. А у нас был старый советский черно-белый телевизор, который ловил две программы, в то время как всё самое интересное показывали по третьей. По финансовой причине то, что я увидел во сне, было для нас в то время недостижимой мечтой.

Мы ходили смотреть фильмы в основном к Сашке. Его старший брат где-то доставал кассеты с новинками, и всю классику 90-х я пересмотрел в первый раз именно у него дома. Зачастую в компании нас было 5 человек на сеансе просмотра какого-нибудь «От заката до рассвета» или «Смертельной битвы».

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

Прошло 27 лет. У меня появился дом в деревне с русской печкой, и в декабре 2024 года я создал коллекцию фильмов в высоком качестве. Только тогда всё сложилось, как во сне.

Лучше чем во сне.

Читать далее

Как мы внедрили векторный поиск в Postgres Pro

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

В статье разберемся, что такое векторный поиск, какие проблемы он решает, и как расширение pgpro_vector для Postgres Pro позволяет реализовать эти мощные возможности прямо в реляционной базе данных, без необходимости развертывать отдельные специализированные системы.

Читать далее

Учимся читать SQL SELECT

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

Я отчётливо помню, как сидел на втором курсе на лабах по БД и долго и мучительно методом научного тыка подбирал порядок слов в SELECT-запросе с GROUP BY, чтобы он вернул нужный мне преподу результат. Потому что я не понимал, как работает SELECT, хотя был прилежным (на программистских курсах) студентом, ходил на все лекции и делал лабы за себя и пару "тех парней".

Двадцать лет спустя, когда я встал по ту сторону баррикад и начал сам вести лабы по БД, я столкнулся с той же самой проблемой уже у своих студентов. И, так как за двадцать лет я всё-таки понял, как работает SELECT, то придумал для них способ объяснения, который работает хорошо (в моей практике).

Читать далее

Новые векторные СУБД и другие инструменты для эмбеддингов и RAG

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

Ранее в блоге beeline cloud мы рассказывали об открытых СУБД для систем ИИ. Продолжим тему и рассмотрим еще несколько находок в этой области — разносторонние инструменты, упрощающие работу с эмбеддингами, семантическим поиском и RAG.

Читать далее

Семантическое моделирование. Проектирование БД с помощью ER-модели

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

Не знаешь что такое ER-модель? До сих пор не умеешь строить ER-диаграмму? Собери всю свою волю в кулак и разберись наконец:

— Зачем наделять данные смыслом;
— Как и для чего иметь связи;
— Сильная или слабая ты сущность;
— Когда тебе может понадобится инфологическая и даталогическая модель.

Читать далее

Оптимизация запросов в Django. Подробное руководство

Уровень сложностиСложный
Время на прочтение60 мин
Количество просмотров4.7K

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

Данная статья подходит как для начинающих, так и для достаточно опытных разработчиков на django, а также для всех, кто еще не интересовался, что происходит под капотом ORM.

Читать далее

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

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

Эксперт Postgres Professional Андрей Зубков «нырнул» в глубины VACUUM и выяснил, что детализированная статистика может выявить глубинные проблемы, которые критически влияют на производительность. Расскажем о том, что скрывалось в глубине PostgreSQL

Читать далее

Когда Excel превращается из помощника во вредителя

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

Мне всегда было интересно, как управляются разные бизнесы: как работает завод, ритейл, другие сферы. Я пытался изнутри наблюдать за бизнесом, где создаётся конечная ценность. Где-то работает автократия, в других компаниях уже есть зрелая бюрократия, а где-то все договариваются на словах, но нигде это не прописано.

Я видел, что даже в среднем бизнесе решения принимаются на основании чуйки хозяина. Тогда как в entreprise решения принимаются на основании процедур, отчётов. Люди страдают и ненавидят этот процесс, так как много времени уходит на оцифровку. Но при этом корпорации довольно эффективны, что показал мой дальнейший опыт. Они работают на 4-ку, но стабильно. Малый бизнес может сегодня сработать на 5, а завтра на 2.

Так у меня появилось убеждение, что в своих решениях нужно опираться на данные. Большой компанией можно стать только та, где есть система принятия решений. 

Читать далее

Влияние маленьких файлов на Big Data: HDFS vs S3

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

Привет, Хабр! Я Станислав Габдулгазиев, архитектор департамента поддержки продаж Arenadata. В этой статье рассмотрим, как большое количество мелких файлов влияет на производительность различных систем хранения, таких как HDFS и объектные хранилища с S3 API.

Разберём, какие технологии хранения лучше всего подходят для работы с мелкими файлами в архитектурах Data Lake и Lakehouse. Сравним производительность HDFS и объектных хранилищ с S3 API. На конкретных тестах покажем, почему именно HDFS эффективнее справляется с большим количеством небольших файлов. Обсудим также случаи, когда мелкие файлы становятся не просто нежелательной ситуацией, а неизбежной необходимостью, например в подходах типа Change Data Capture (CDC).

Тесты, графики, инсайды

Работа аналитиком данных: задачи, зарплата, плюсы, минусы и где учиться — в 2025

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

Мы на Хабр Карьере помогаем IT-специалистам зарабатывать больше, а компаниям — быть в курсе трендов на рынке найма. 

Аналитика данных — одна самых востребованных специализаций сегодня, особенно в России, где цифровизация бизнеса идет полным ходом. Если задумываетесь о карьере в этой сфере, но не знаете, с чего начать — эта статья для вас.

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

Читать далее

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

«Попал в Яндекс через опенсорс»: как коммиты в опенсорсные СУБД помогают развивать продукт и команду

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

Привет, Хабр! На связи Андрей Бородин, в Yandex Cloud я руковожу направлением разработки СУБД с открытым исходным кодом — и я попал в Яндекс через опенсорс. Я уже немного рассказывал, что и зачем мы делаем в опенсорсных БД с точки зрения облачных сервисов, где мы развиваем PostgreSQL, Greenplum, Cloudberry, Valkey и другие решения.

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

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

В общем, если придерживаться опенсорс‑философии, может возникнуть ситуация win‑win. Сегодня с коллегами Леонидом Борчуком @leborchuk и Дмитрием Сарафанниковым расскажу пару историй про то, как это бывает с опенсорсными СУБД.

Читать далее

Шардирование баз данных: проблемы, альтернативы, практические рекомендации

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

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

Читать далее

Внутристраничная очистка в индексах PostgreSQL

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

Внутристраничная очистка (HOT cleanup) — это оптимизация, благодаря которой старые версии строк могут эффективно удаляться из блоков таблиц. Освобождённое место используется под размещение новой версии строки. Освобождается только место, занимаемое версиями строк, вышедшими за горизонт базы данных (xmin horizon). В статье рассматривается алгоритм работы аналогичной оптимизации для индексов. Если горизонт удерживается, то ни внутристраничная очистка, ни вакуум не могут освободить место, и тогда новая версия строки вставляется в другой блок. Увидим на примере стандартного теста pgbench, как сильно может снижаться производительность при удержании горизонта базы данных (в случае когда есть сессия с долгим запросом или транзакцией) и разберемся в причинах снижения производительности.

Читать далее

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

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

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

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

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

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

Читать далее

Что такое PPEM и как он освободит DBA от рутинной работы?

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

Если вы, как DBA устали тратить время на изучение статистики производительности, анализ логов и настройку разрозненных инструментов мониторинга при администрировании большого количества баз данных, то у нас есть решение — PPEM (Postgres Pro Enterprise Manager). Он объединяет возможности визуализации метрик, управления экземплярами и резервным копированием, анализ производительности в единую графическую консоль, позволяя локализовать проблему и быстро принять меры. Расскажем, как мы решали «головные боли» DBA по мониторингу и аналитике БД.

Читать далее

Как подготовиться к интеграции: чек-лист, который поможет ничего не упустить

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

Привет, Хабр! На связи Давид Саргсян. Я занимаюсь системным анализом цифровых продуктов банка ПСБ.

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

Читать далее

Трассировка запросов в Postgres с расширением pg_trace

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

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

Читать далее