Обновить
188.29

Базы данных *

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

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

Связь паттернов микросервисной архитектуры

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели3.5K

В этой статье я хотел бы рассмотреть микросервисные паттерны под другим углом. Когда я начинал изучение микросервисных паттернов, у меня постоянно был вопрос: Так это же было в другом паттерне. Я решил немного структурировать их: объединить по похожим элементам. Кластеризировать микросервисные паттерны достаточно тяжело так как каждый паттерн по‑своему уникален, однако для запоминания на собеседованиях или для себя это сделать можно. Основной контент статьи — картинка, далее идёт описание, чтобы всё было в одном месте.

Эта статья предназначена для более быстрого запоминания/повторения паттернов микросервисов. Кое‑где я приводил кейсы, которые могут быть непонятны новичкам. Здесь нет подробных кейсов применения каждого паттерна так как иначе статья получилась бы на другую тему. Для удобства я приложил ссылки — чтобы избежать дублей.

Читать далее

Новости

Databasus — open source инструмент для резервного копирования PostgreSQL, MySQL и MongoDB (ex-Postgresus)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.2K

В начале декабря я публиковал статью про Postgresus 2.0 — инструмент для резервного копирования PostgreSQL. С момента этой статьи пришло много запросов на добавление других баз данных, много положительной обратной связи от пользователей и набралось больше 1000 звёзд на GitHub.

А потом я узнал, что нарушил торговый знак 🥲. Оказывается, нельзя брать первое понравившееся название — и использовать его. Точнее можно, но с оговорками.

В итоге было принято решение о маленьком ребрендинге. Теперь Postgresus — это Databasus. И поддерживает другие базы: MySQL, MariaDB и MongoDB (при этом оставляя основной фокус на PostgreSQL).

Ниже — детальнее, что из себя представляет проект и почему произошло переименование.

Читать далее

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

Время на прочтение5 мин
Охват и читатели7.3K

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

На связи Дмитрий Ларин, руководитель продуктового направления по защите баз данных, компании «Гарда».

Объемы корпоративных данных продолжают расти, и, как следствие, увеличивается количество информационных систем, обеспечивающих их обработку и хранение. Так, если еще 15 лет назад наличие 20 баз данных считалось значительной нагрузкой, то сегодня 200 баз уже воспринимаются как норма.

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

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

Читать далее

Внутренняя БД FineBI и аналитика BI-системы

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

Привет, Хабр!  Меня зовут Юлианна Валиуллина и я главный эксперт по развитию BI в банке Уралсиб.

Для начала немного о нас: мы практикуем self-service подход, в банке более 200 разработчиков, из них 150 имеют опубликованные дашборды, остальные делают аналитику для себя. Более 1200 опубликованных дашбордов, MAU около 1500. Большая часть дашбордов в нашем банке работает в spider(extract) режиме, доля direct 15-20%.

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

Читать далее

Инструменты и методы синхронизации данных из распространенных СУБД в StarRocks

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

В статье разберем, как синхронизировать данные из Oracle, MySQL, SQL Server, PostgreSQL, Kafka и MongoDB в StarRocks. Сравним Flink+CDC+SMT, DataX, Routine Load и Python по применимости, ограничениям и удобству эксплуатации, а также дадим рекомендации по выбору под разные сценарии.

Читать далее

Создание и обновление материализованных представлений (MV) в StarRocks: пошаговый разбор

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели4K

В статье — пошаговый разбор создания и обновления материализованных представлений (MV) в StarRocks: от парсинга SQL (ANTLR) и инициализации свойств до сериализации метаданных (edit log, checkpoint, image) и планирования refresh. Разбираем синхронизацию партиций (range‑партиционирование), параметр partition_refresh_number и оптимизацию обновлений. Отдельный блок — поддержка нескольких выражений в UNION ALL и механизм VirtualPartitions из PR #60035, позволяющий корректно обновлять сдвинутые временными функциями (date_add/date_sub) диапазоны без пропусков. Материал будет полезен инженерам данных и тем, кто проектирует OLAP‑модели и MV под высокую нагрузку.

Читать далее

Как мы организовали полнотекстовый поиск: обзор вариантов

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

Привет Хабр! Меня зовут Михаил. Я backend-разработчик в команде Биллинга в Тензоре.

Эта статья — обзор вариантов индексации JSON и JSONB-полей и оптимального поиска текста в них, который мы проделали вместе с командой. Так как используем PostgresSQL, все варианты валидны для него.

Читать далее

Глубокий разбор материализованных представлений в StarRocks: полный механизм query rewrite

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели4.6K

Материализованные представления (MV) в StarRocks — это не просто кэш агрегатов, а полноценный механизм ускорения запросов с автоматическим переписыванием (query rewrite). На практических примерах разбираем, как движок сопоставляет поддеревья плана запроса со SPJG‑MV, как работают join/aggregate/nested/union rewrite, как обеспечивается строгая согласованность и настраиваемая устарелость данных (staleness), и за счёт чего достигается ускорение на SSB и TPC‑H.

Читать далее

Обзор Lakehouse: архитектура, которая объединяет порядок и хаос

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели9.5K

Вопрос: что же такого прорывного добавили в архитектуру, чтобы она стала считаться чем-то новым с точки зрения инженеров, а не маркетологов?

Ответ: фундаментально изменилась парадигма хранения и обработки данных.

В отличие от традиционных подходов, где Data Warehouse оперировал исключительно структурированными данными в табличной форме, а Data Lake работал с файлами в их исходном виде, разработчики Lakehouse сумели соединить лучшие качества обеих архитектур.

Ключевым отличием стал формат OTF — Open Table Format, через который удалось реализовать единый стандарт доступа к данным и 4 технологически-культурных сдвига. Перечислю их: ...

Читать далее

Обезличивание не по приказу — новый сезон подкаста Crosscheck

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

Привет, Хабр!
Команда CTSG запустила новый сезон подкаста Crosscheck. В одном из первых выпусков эксперты обсуждают актуальную, «горящую» на сегодняшний день, тему обезличивания баз данных: изменения в законодательстве, методы обезличивания, маскирование и многое другое.

Читать далее

Oracle — приблизительное разбиение на диапазоны

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

Недавно у меня возникла задача по разбиению мульти-терабайтной таблицы на равные диапазоны по числовому полю id. Причём данные распределены по id крайне неравномерно, где-то есть большие "лакуны", где-то непоследовательная генерация и т.д., и т.п. Конечно, можно применить честное решение в лоб — использовать функцию NTILE, но я довольно быстро осознал, что это приведёт к многочасовому запросу с большой вероятностью упасть из-за недостатка TEMP. Но, к счастью, зачастую в таких задачах, как и в моём случае, идеальное разделение на диапазоны не требуется, достаточно более-менее приличного.

Я решил провернуть небольшой трюк для получения приблизительного разделения. Давайте посмотрим, что у меня получилось на модельном примере.

Читать далее

Практический опыт StarRocks: импорт JSON и CSV из Kafka с помощью Routine Load

Уровень сложностиСложный
Время на прочтение6 мин
Охват и читатели6.8K

В архитектуре потоковой обработки данных Kafka, как высокопроизводительная очередь сообщений, обычно используется для агрегации данных, а StarRocks, как высокопроизводительная аналитическая СУБД, отвечает за хранение и анализ. С помощью Routine Load можно стабильно и эффективно загружать в StarRocks данные в форматах JSON и CSV из Kafka.

Читать далее

Eventually-consistent СУБД — всё?

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели20K

В начале 2010-х в профессиональном сообществе разработчиков и архитекторов распределенных систем широко обсуждалась идея, что мир баз данных вступает в новую эру. На фоне успехов крупных интернет-сервисов термин BASE начал использоваться как противопоставление классическому ACID. Хайп вокруг NoSQL, CAP-теоремы и масштабируемых систем породил лозунги вроде «SQL умер», «ACID — для банков, а мы делаем веб», «eventual consistency — это нормально».

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

Что же произошло? Была ли «битва ACID и BASE» реальным технологическим разломом или лишь отражала ограничения своего времени? 

В этой статье мы разберём, как возникли ACID и BASE, почему BASE быстро стал популярен и что на самом деле означает тезис «победил ACID» в 2020-е годы.

Читать далее

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

Как запускать PostgreSQL прямо из бэкапа без restore: FUSE и точечный флэшбэк через postgres_fdw

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

Несколько лет назад я трудился в проекте, где основной биллинг работал на Oracle. Однажды коллега захотел поправить тестовые начисления в таблице abon_charges и выполнил такой запрос:

UPDATE abon_charges SET amount = 0 WHERE service_id = 123 AND v_abon_id = v_abon_id;

На первый взгляд — ничего страшного. Но v_abon_id = v_abon_id истинно для любой строки. Oracle это не игнорирует. Условие становится:

WHERE service_id = 123 AND TRUE

Так запрос обнулил абсолютно все суммы для service_id=123 за десятки месяцев. В таблице было около 1,8 млн строк по этой услуге.

С такой неприятностью в Oracle может помочь механизм Oracle Flashback. Вкратце: находим проблемную транзакцию, в отдельной сессии включаем чтение таблицы на момент до обновления, снимаем копию в отдельную таблицу и отдаём её нашему виновнику для решения проблемы :).

Мы починили всё без простоя и полного восстановления всего кластера. С тех пор мне всегда хотелось иметь такой «точечный флэшбэк» и в PostgreSQL. Особенно в системах, где восстановление базы на несколько терабайтов может занимать часы. И вот недавно мне довелось организовать такое решение в нашем продукте Platform V CopyWala. Это инструмент для бэкапа от СберТеха, который работает с PostgreSQL. Покажу, как всё устроено.

Читать далее

Patroni и логическая реплика в PostgreSQL: как не потерять данные при failover’е

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

Если вы используете nofailover: true (а многие так и делают), Patroni не синхронизирует слоты логической репликации — и при переходе на реплику часть данных может исчезнуть навсегда. Рассказываем, почему и как фиксить.

Читать далее

Система мониторинга ML-моделей: превращаем данные в полезный инструмент

Время на прочтение11 мин
Охват и читатели6.3K

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

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

Читать далее

Охота за недостающим типом данных: история о графах

Время на прочтение12 мин
Охват и читатели9.4K

(Ориентированный) граф — это набор узлов, соединённых стрелками (рёбрами). В узлах и рёбрах могут содержаться данные. Вот примеры графов:

Читать далее

Более глубокий взгляд на старый UUIDv4 и новый UUIDv7 в PostgreSQL 18

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

UUIDv4 как первичный ключ в PostgreSQL обычно ругают за «случайность» — но за этим словом прячется конкретная физика: сплиты страниц B-дерева, рыхлый листовой уровень, фрагментация и лишний случайный I/O при чтении. В PostgreSQL 18 появился UUIDv7 — и это хороший повод посмотреть на проблему не на уровне вкусов, а на уровне того, как реально устроены индекс и heap: от корреляции и ctid до статистики страниц и плотности листьев.

Читать далее

Анализ 400k вакансий hh.ru: как мы строили пайплайн и какие тренды нашли

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

Какие навыки реально нужны в IT? Разбор рынка по данным hh.ru. Мы обработали 393 000 вакансий за 2025 год и делимся результатами: универсальный стек технологий, медианные зарплаты по специальностям и доля удаленки. А еще — техническая реализация нашего open-source проекта для сбора данных.

Читать далее

Почему ночных загрузок стало недостаточно: опыт внедрения CDC в М2

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

Всем привет, меня зовут Игорь Горбенко, и я системный аналитик в компании М2.
Отчёты, которые обновляются раз в сутки, хорошо подходят для стратегической аналитики. Но в какой-то момент бизнесу становится важно понимать, что происходит в течение дня, а не только по итогам ночной загрузки.

В М2 мы столкнулись с этим, когда от продуктовых команд и службы поддержки начали приходить запросы на внутридневную отчётность и почти real-time метрики. Наш основной подход — ежедневная батчевая загрузка данных — перестал закрывать такие сценарии, и нам понадобился другой способ работы с изменениями в продуктовых базах.

В этой статье я расскажу, как мы внедряли Change Data Capture (CDC) с использованием Apache Flink, какие задачи это помогло решить, с какими ограничениями мы столкнулись и почему CDC — полезный, но не универсальный инструмент.


CDC и Apache Flink: кратко о технологии и нашем подходе

Давайте начнем разбираться. Некоторые из вас наверняка знакомы с понятием CDC, Change Data Capture — техника захвата изменений в базах данных.

Для контекста стоит отметить Apache Flink — движок для загрузки и обработки батчей и стриминговых данных в реальном времени. В статье речь пойдет про Flink CDC —   фреймворк с открытым исходным кодом для отслеживания изменений данных в базах данных в реальном времени.

В проектах нашего отдела в М2 основной метод загрузки — это ежедневное ночное
копирование продуктовых баз данных (PostgreSQL, MongoDB) в аналитическое хранилище на базе Apache Iceberg и последующая их обработка с помощью движка Trino.

Читать далее
1
23 ...