📚 DuckDB использует реляционную базу данных для решения классической проблемы «небольших изменений» в системах хранения данных.
DuckDB предлагает неожиданный поворот в архитектуре lakehouse.
Вкратце, они решили вернуть в lakehouse… классическую реляционную базу данных. Но используют её не для хранения данных, а для хранения метаданных и обработки мелких изменений .
Казалось, а зачем? Проблема современных lakehouse (Iceberg, Delta и др.) в том, что они плохо справляются с маленькими изменениями. Добавили пару строк - получили новый файл или обновили метаданные - сделали лишние операции с хранилищем.
❌В итоге:
👉 много мелких файлов
👉 лишние IO
👉 падение производительности
DuckDB предлагает следующее:
1️⃣ сначала писать изменения в обычную SQL-БД
2️⃣ накапливать их
3️⃣ и только потом батчами выгружать в Parquet
✅Что это даёт:
👉 меньше файлов
👉 меньше накладных расходов
👉 данные записываются быстрее
По сути, это попытка сбалансировать два мира:
гибкость lakehouse + строгость и эффективность классических СУБД
Мне кажется это никак не революция, а какой-то шаг назад, чтобы чуть подумать и потом сделать более осознанный шаг вперед. Это промежуточная конструкция.
Данный "костыль" поднимает новые вопросы
🤔 не станет ли RDBMS новым узким местом?
🤔 не усложняется ли архитектура?
🤔 не теряется ли идея serverless?
DuckDB аккуратно подталкивает индустрию к мысли, что будущее не в чистом lakehouse, а в гибридных решениях.
DuckDB предлагает неожиданный поворот в архитектуре lakehouse.
Вкратце, они решили вернуть в lakehouse… классическую реляционную базу данных. Но используют её не для хранения данных, а для хранения метаданных и обработки мелких изменений .
Казалось, а зачем? Проблема современных lakehouse (Iceberg, Delta и др.) в том, что они плохо справляются с маленькими изменениями. Добавили пару строк - получили новый файл или обновили метаданные - сделали лишние операции с хранилищем.
❌В итоге:
👉 много мелких файлов
👉 лишние IO
👉 падение производительности
DuckDB предлагает следующее:
1️⃣ сначала писать изменения в обычную SQL-БД
2️⃣ накапливать их
3️⃣ и только потом батчами выгружать в Parquet
✅Что это даёт:
👉 меньше файлов
👉 меньше накладных расходов
👉 данные записываются быстрее
По сути, это попытка сбалансировать два мира:
гибкость lakehouse + строгость и эффективность классических СУБД
мы слишком увлеклись “файловой” архитектурой lakehouse и забыли, что у СУБД уже давно есть решения для транзакций, метаданных и мелких операций.
Мне кажется это никак не революция, а какой-то шаг назад, чтобы чуть подумать и потом сделать более осознанный шаг вперед. Это промежуточная конструкция.
Данный "костыль" поднимает новые вопросы
🤔 не станет ли RDBMS новым узким местом?
🤔 не усложняется ли архитектура?
🤔 не теряется ли идея serverless?
DuckDB аккуратно подталкивает индустрию к мысли, что будущее не в чистом lakehouse, а в гибридных решениях.
The Register
DuckDB uses RDBMS to attack classic 'small changes' problem in lakehouses
: Batching teensy changes in chunks creates massive performance boost, DuckDB Labs team claims
❤2
📚 Как Redis Auto Failover повышает отказоустойчивость наших БД
Классная статья про адаптацию опенсор версии Redis под требования реального мира. Кластер Redis является хорошим решением, но не идеальным. Если у вас одномоментно выходит из строя кворум мастеров, то кластер считается разваленным, даже если реплики с нужными данными живы.
Ребята из WB прикрутили свой дополнительный механизм Auto Failover поверх Redis Cluster. Он очень похож на слой координации, аналогичный DCS (Distributed Configuration Store).
Идея хорошая. Я о подобном писал недавно.
Надеюсь, что WB выложат свой доработку в opensource.
Классная статья про адаптацию опенсор версии Redis под требования реального мира. Кластер Redis является хорошим решением, но не идеальным. Если у вас одномоментно выходит из строя кворум мастеров, то кластер считается разваленным, даже если реплики с нужными данными живы.
Ребята из WB прикрутили свой дополнительный механизм Auto Failover поверх Redis Cluster. Он очень похож на слой координации, аналогичный DCS (Distributed Configuration Store).
Идея хорошая. Я о подобном писал недавно.
Надеюсь, что WB выложат свой доработку в opensource.
Хабр
Как Redis Auto Failover повышает отказоустойчивость наших БД
Введение Привет! Меня зовут Иван Откидач, я DevOps-инженер в команде DBA. Моя основная специализация — NoSQL-базы данных, в частности Redis и MongoDB. С каждым месяцем количество Redis, находящихся на...
👍3
📚 NoSQL Data Modeling Explained with DynamoDB Single Table Design
Очень показательная идея из статьи про DynamoDB:
Я всё хочу погрузиться в идею проектирования нереляционных схем данных, но что-то никак повода не найду. Мне самому тяжело понять весь профит от такого проектирования. Думаю это статья будет драйвером, которая сподвигнет меня сесть за эту тему.
📊 Как бы решили задачу в реляционной БД
Допустим, у нас сервис поиск пациентов через платный API ($5 за запрос).
Нам нужно:
👉не платить повторно за одинаковый поиск
👉хранить историю
👉считать биллинг
В классической СУБД (например, PostgreSQL) мы бы сделали:
✅таблица patients
✅таблица search_requests
✅таблица billing
И далее классика:
Данные нормализуем ➡️ нужное собираем запросом
➕ гибкость
➕ можно добавлять новые сценарии
➖ больше JOIN
➖ нагрузка растёт с объёмом
⚡️ Как это решается в NoSQL (например, Amazon DynamoDB)
Мы заранее думаем:
👉 как будем искать?
👉 как проверять “уже был такой запрос”?
👉 как считать биллинг?
И делаем одну таблицу, например:
И рядом:
👉 теперь:
❇️проверка кэша ➡️ 1 запрос
❇️получение результата ➡️ 1 запрос
❇️биллинг ➡️ 1 запрос
Без JOIN вообще.
🧠 Где ключевой сдвиг мышления
⚖️ Что стало лучше
✔️ быстрее (меньше round-trip)
✔️ дешевле (меньше операций)
✔️ проще на чтение (всё рядом)
⚠️ Что стало хуже
❌ почти нет гибкости
❌ сложно добавить новый тип запроса
❌ дублирование данных
❌ ошибки в модели очень дорогие
🎯 Итого
Идея красивая, но надо будет на цифрах это всё проверить 😊
Очень показательная идея из статьи про DynamoDB:
в NoSQL ты проектируешь не таблицы - ты проектируешь запросы.
Я всё хочу погрузиться в идею проектирования нереляционных схем данных, но что-то никак повода не найду. Мне самому тяжело понять весь профит от такого проектирования. Думаю это статья будет драйвером, которая сподвигнет меня сесть за эту тему.
📊 Как бы решили задачу в реляционной БД
Допустим, у нас сервис поиск пациентов через платный API ($5 за запрос).
Нам нужно:
👉не платить повторно за одинаковый поиск
👉хранить историю
👉считать биллинг
В классической СУБД (например, PostgreSQL) мы бы сделали:
✅таблица patients
✅таблица search_requests
✅таблица billing
И далее классика:
JOIN + индексы + агрегации
Данные нормализуем ➡️ нужное собираем запросом
⚡️ Как это решается в NoSQL (например, Amazon DynamoDB)
Мы заранее думаем:
👉 как будем искать?
👉 как проверять “уже был такой запрос”?
👉 как считать биллинг?
И делаем одну таблицу, например:
PK = SEARCH#<query_hash>
SK = RESULT#<timestamp>
И рядом:
PK = USER#123
SK = BILLING#2026-04
👉 теперь:
❇️проверка кэша ➡️ 1 запрос
❇️получение результата ➡️ 1 запрос
❇️биллинг ➡️ 1 запрос
Без JOIN вообще.
🧠 Где ключевой сдвиг мышления
В SQL:
сначала модель → потом запрос
В NoSQL:
сначала запрос → потом модель
⚖️ Что стало лучше
✔️ быстрее (меньше round-trip)
✔️ дешевле (меньше операций)
✔️ проще на чтение (всё рядом)
⚠️ Что стало хуже
❌ почти нет гибкости
❌ сложно добавить новый тип запроса
❌ дублирование данных
❌ ошибки в модели очень дорогие
🎯 Итого
в SQL ты собираешь данные на лету
в NoSQL ты обязан собрать их заранее
Идея красивая, но надо будет на цифрах это всё проверить 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
NoSQL Data Modeling Explained with DynamoDB Single Table Design
Get your data model wrong and everything downstream pays for it.
❤2
🎥 ClickHouse в 2026: сценарии, сильные стороны, лучшие практики
Видеознакомство с Кликом от Алексея Белозерского из ВК.
Приятный вебинар 🙂 Чтобы понять нишу и основные задачи Клика - супер! Советую глянуть...
Видеознакомство с Кликом от Алексея Белозерского из ВК.
Приятный вебинар 🙂 Чтобы понять нишу и основные задачи Клика - супер! Советую глянуть...
VK Видео
ClickHouse в 2026: сценарии, сильные стороны, лучшие практики
Что будет на вебинаре: - Применение ClickHouse в архитектуре современных дата-платформ (Data Warehouse / Data Lakehouse) - Устройство ClickHouse: что под капотом и что нужно понимать аналитику и инженеру данных - Типичные ошибки при работе с ClickHouse …
❤1
🎦 Avito Database meetup
Основные доклады
Меня больше всего заинтересовал 2-ой доклад. Про сравнение FoundationDB vs Cassandra 5.
И так, Авито искали автошардируемую базу данных,
чтобы заменить сложную инфраструктуру с MongoDB.
В текущей архитектуре:
👉 используется MongoDB
👉 сотни шардов / тысячи инстансов
👉 self-sharding (логика на стороне сервиса)
🔥 последствия:
👉сложная логика в коде
👉сложные миграции
👉дорого по ресурсам (x4 из-за реплик и бэкапов)
🎯 Что хотели получить
🔸 автошардинг “из коробки”
🔸 простой кластер (желательно masterless)
🔸 меньше инфраструктуры
🔸 open-source лицензия
🔸 горизонтальное масштабирование
🔸 мульти-DC
🧠 Что показали тесты
Cassandra
➕ высокий RPS (выше MongoDB)
➕ latency на уровне Mongo
➕ автошардинг работает
➕ masterless → быстрое восстановление
➕ экономия диска ~30%
➕ зрелая экосистема
➖ требовательна к настройке ОС
➖ сложный data modeling
➖ масштабирование “пачками” (по replication factor)
FoundationDB
➕ очень низкая latency
➕ хорошая модель транзакций
➕ автошардинг есть
➖ низкий RPS
➖ сильная зависимость от дисков
➖ нет сжатия → x3 по месту
➖ лимит 100KB на значение
➖ сложный клиент (высокий порог входа)
➖ проблемы с конфликтами транзакций
🏆 Победитель - Cassandra
Однако:
Основные доклады
🕚 Как мы прошли путь от разрозненных Ceph кластеров к единой платформе с 100 000+ бакетов;
🕚 Почему нам не подошла FoundationDB и чем удивила Cassandra 5;
🕚 Как мы предоставляем базы данных с чувствительными данными внутри DBaaS
Меня больше всего заинтересовал 2-ой доклад. Про сравнение FoundationDB vs Cassandra 5.
И так, Авито искали автошардируемую базу данных,
чтобы заменить сложную инфраструктуру с MongoDB.
В текущей архитектуре:
👉 используется MongoDB
👉 сотни шардов / тысячи инстансов
👉 self-sharding (логика на стороне сервиса)
данные шардуются не БД, а приложением
🔥 последствия:
👉сложная логика в коде
👉сложные миграции
👉дорого по ресурсам (x4 из-за реплик и бэкапов)
🎯 Что хотели получить
🔸 автошардинг “из коробки”
🔸 простой кластер (желательно masterless)
🔸 меньше инфраструктуры
🔸 open-source лицензия
🔸 горизонтальное масштабирование
🔸 мульти-DC
🧠 Что показали тесты
Cassandra
FoundationDB
🏆 Победитель - Cassandra
Однако:
Cassandra победила как решение конкретной задачи (замена многосотшардовой MongoDB)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2
📚 Забудьте о Redis: DuckDB обрабатывает 78 % наших аналитических запросов быстрее
Звучит как «Redis не нужен»? На самом деле это очередной пример "кликбейтного" названия статьи, хотя суть её совершенно про другое. Я прочел и был крайне недоволен. Автор, как бы выразиться покультурнее, не прав.
Что у них было:
👉 основная (OLTP) база данных
👉 сложные аналитические запросы (фильтры, агрегации, группировки)
👉 Redis как кэш результатов
Цепочка следующая:
запрос ➡️ считаем в БД ➡️ кладём результат в Redis ➡️ надеемся на cache hit
Проблема началась, когда аналитика усложнилась:
👉 комбинаций фильтров стало слишком много
👉 кэш начал «взрываться»
👉 cache hit падал
👉 latency стала непредсказуемой
И тут пришла идея подключить DuckDB и начать выполнять запросы напрямую в ней. И внезапно стало быстрее💨. Магия 🪄
Зановес!
Это не история про Redis vs DuckDB. Это история про неправильный выбор движка выполнения (execution engine).
❌ OLTP база + кэш (Redis)🔜 попытка ускорить аналитику
✅ OLAP движок (DuckDB)🔜 нативное выполнение аналитики
Redis в этом кейсе использовался примитивно — как key-value cache. При этом у Redis есть инструменты для аналитики:
➕ Sorted Sets (топы, ранжирование)
➕ HyperLogLog (approximate distinct)
➕ Векторный и семантический поиск
И многое другое
Вывод:
И если вы начинаете кешировать аналитические запросы, то возможно, проблема не в скорости, а в архитектуре.
Звучит как «Redis не нужен»? На самом деле это очередной пример "кликбейтного" названия статьи, хотя суть её совершенно про другое. Я прочел и был крайне недоволен. Автор, как бы выразиться покультурнее, не прав.
Что у них было:
👉 основная (OLTP) база данных
👉 сложные аналитические запросы (фильтры, агрегации, группировки)
👉 Redis как кэш результатов
Цепочка следующая:
запрос ➡️ считаем в БД ➡️ кладём результат в Redis ➡️ надеемся на cache hit
Проблема началась, когда аналитика усложнилась:
👉 комбинаций фильтров стало слишком много
👉 кэш начал «взрываться»
👉 cache hit падал
👉 latency стала непредсказуемой
И тут пришла идея подключить DuckDB и начать выполнять запросы напрямую в ней. И внезапно стало быстрее💨. Магия 🪄
Зановес!
Это не история про Redis vs DuckDB. Это история про неправильный выбор движка выполнения (execution engine).
❌ OLTP база + кэш (Redis)
✅ OLAP движок (DuckDB)
Redis в этом кейсе использовался примитивно — как key-value cache. При этом у Redis есть инструменты для аналитики:
И многое другое
Вывод:
OLAP-движок (DuckDB) лучше справился с их аналитическим workload, чем схема "OLTP БД + кэш Redis"
И если вы начинаете кешировать аналитические запросы, то возможно, проблема не в скорости, а в архитектуре.
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
Forget Redis: DuckDB Served 78% of Our Analytics Queries Faster
The real speedup did not come from a smarter cache. It came from admitting we were asking the wrong engine to do the job.
👍2❤1
🎦 SmartData 2025. Запускаем YugabyteDB в production, Василий Осадчий
Презентация
Если выкинуть детали, то главный вывод вообще не про конкретную СУБД.
Он про смену традиционного реляционного мышления при проектировании схемы данных.
Команда хотела "PostgreSQL, но распределённый". На рынке есть много продуктов, которые предоставляют данные функции.
Главный слом происходит в проектировании схемы данных.
В привычной (single-node) модели:
👉 primary key = просто уникальный идентификатор
👉 индексы = оптимизация
👉 где лежат данные - неважно
В распределённой базе:
👉 primary key = shard key
👉 он определяет, где физически лежат данные
👉 ошибка в нём = fan-out по всему кластеру
И дальше начинается цепочка изменений:
Запрос - это уже не просто SQL.Это:
👉 сколько нод будет задето
👉 будет ли scatter
👉 не создаём ли hotspot
Особенно показательный момент из доклада, перенос схемы "как есть" из PostgreSQL формально работает,
но под нагрузкой начинает деградировать.
Потому что:
👉 схема проектировалась под один узел
👉 а выполняется на кластере
Итог:
И именно это - главный барьер при переходе, а не выбор технологии. Хотя очень приятно увидеть пример с Distributed SQL СУБД. Очень классно 😊
Презентация
Если выкинуть детали, то главный вывод вообще не про конкретную СУБД.
Он про смену традиционного реляционного мышления при проектировании схемы данных.
Команда хотела "PostgreSQL, но распределённый". На рынке есть много продуктов, которые предоставляют данные функции.
Главный слом происходит в проектировании схемы данных.
В привычной (single-node) модели:
👉 primary key = просто уникальный идентификатор
👉 индексы = оптимизация
👉 где лежат данные - неважно
В распределённой базе:
👉 primary key = shard key
👉 он определяет, где физически лежат данные
👉 ошибка в нём = fan-out по всему кластеру
И дальше начинается цепочка изменений:
Запрос - это уже не просто SQL.Это:
👉 сколько нод будет задето
👉 будет ли scatter
👉 не создаём ли hotspot
Особенно показательный момент из доклада, перенос схемы "как есть" из PostgreSQL формально работает,
но под нагрузкой начинает деградировать.
Потому что:
👉 схема проектировалась под один узел
👉 а выполняется на кластере
Итог:
Распределённые СУБД — это не «галочка HA + scaling».
Это другая модель проектирования.
Single-node мышление — «как выполнить запрос»
Distributed мышление — «как разложить данные, чтобы запрос был дешёвым»
И именно это - главный барьер при переходе, а не выбор технологии. Хотя очень приятно увидеть пример с Distributed SQL СУБД. Очень классно 😊
❤3
Иногда на экзамене люди неожиданно меняются и от этого бывает немного дискомфортно.
С пятницей!
#mems
С пятницей!
#mems
😁4❤2🤔1
📚🦆 DuckLake 1.0: Data Lake Format with SQL Catalog Metadata
DuckDB продолжает активно расширять свою экосистему. После успеха embedded analytics движка команда решила зайти на территорию Data Lake / Lakehouse и представила DuckLake.
Главная идея проекта звучит неожиданно😱 ШОК 💥
Подводочка. Сегодняшние lakehouse-системы это:
👉 Apache Iceberg
👉 Delta Lake
👉 Apache Hudi
Они хранят метаданные в виде файлов прямо в S3/GCS/Azure Blob Storage:
➡️ JSON
➡️ Avro
➡️ manifests
➡️ snapshots
Это позволило отказаться от центральной СУБД для метаданных и лучше масштабировать систему. Но со временем архитектура начала обрастать сложностью:
👉 тысячи metadata-файлов,
👉 expensive LIST operations,
👉 compaction,
👉 catalog services,
👉 coordination layers,
👉 сложные commit protocols.
И тут DuckLakeдостаёт из широких штанин предлагает почти "еретическую"идею 😈 :
Архитектура DuckLake:
И вот тут начинается самое интересное 🧐. На самом деле идея НЕ новая. Старый Hadoop/Hive мир уже жил примерно так же.
Данные лежали в HDFS, а Hive Metastore хранился в MySQL/PostgreSQL. То есть ранние Data Lake уже были database-native для metadata.
Потом индустрия решила уйти от СУБД для метаданных:
👉 из-за масштабирования,
👉 distributed workloads,
👉 cloud-native pipelines.
Так появился Iceberg/Delta-подход:
👉 metadata как immutable files.
И теперь история делает красивый круг 🔄
На мой взгляд, самое интересное здесь даже не сам формат, а цикличность архитектуры.
IT-индустрия очень часто:
1️⃣ уходит от централизованной модели,
2️⃣ сталкивается со взрывом сложности,
3️⃣ а потом аккуратно возвращает часть централизации обратно, но уже на новом технологическом уровне.
DuckDB продолжает активно расширять свою экосистему. После успеха embedded analytics движка команда решила зайти на территорию Data Lake / Lakehouse и представила DuckLake.
Главная идея проекта звучит неожиданно😱 ШОК 💥
Подводочка. Сегодняшние lakehouse-системы это:
👉 Apache Iceberg
👉 Delta Lake
👉 Apache Hudi
Они хранят метаданные в виде файлов прямо в S3/GCS/Azure Blob Storage:
➡️ JSON
➡️ Avro
➡️ manifests
➡️ snapshots
Это позволило отказаться от центральной СУБД для метаданных и лучше масштабировать систему. Но со временем архитектура начала обрастать сложностью:
👉 тысячи metadata-файлов,
👉 expensive LIST operations,
👉 compaction,
👉 catalog services,
👉 coordination layers,
👉 сложные commit protocols.
И тут DuckLake
А зачем вообще хранить metadata как файлы, если человечество уже придумало SQL database?
Архитектура DuckLake:
Компонент ➡️ Где хранится
Data ➡️ Parquet
Metadata ➡️ SQL database
Query Engine ➡️ DuckDB
И вот тут начинается самое интересное 🧐. На самом деле идея НЕ новая. Старый Hadoop/Hive мир уже жил примерно так же.
Данные лежали в HDFS, а Hive Metastore хранился в MySQL/PostgreSQL. То есть ранние Data Lake уже были database-native для metadata.
Потом индустрия решила уйти от СУБД для метаданных:
👉 из-за масштабирования,
👉 distributed workloads,
👉 cloud-native pipelines.
Так появился Iceberg/Delta-подход:
👉 metadata как immutable files.
И теперь история делает красивый круг 🔄
❗️Hive-era:➖ metadata in DB➖ simple➖ but scaling pain
❗️Iceberg-era:➖ metadata as files➖ scalable➖ but operationally complex
❗️ DuckLake:➖ maybe SQL DB was not such a bad idea after all 🙂
На мой взгляд, самое интересное здесь даже не сам формат, а цикличность архитектуры.
IT-индустрия очень часто:
1️⃣ уходит от централизованной модели,
2️⃣ сталкивается со взрывом сложности,
3️⃣ а потом аккуратно возвращает часть централизации обратно, но уже на новом технологическом уровне.
Please open Telegram to view this post
VIEW IN TELEGRAM
InfoQ
DuckLake 1.0: Data Lake Format with SQL Catalog Metadata
DuckDB Labs recently released DuckLake 1.0, a data lake format that stores table metadata in a SQL database rather than across many files in object storage. The first implementation is available as a DuckDB extension and includes catalog-stored small updates…
👍7
🎦 Что должен знать каждый backend про N+1, lazy preload и производительность / Евгений Демин #83
Разберу довольно интересное интервью с Евгением Демином - Ruby-разработчик и автор нескольких популярных open source библиотек, которые решают проблемы с базами данных, валидацией и производительностью.
Меня зацепило это видео тем, что в нем поднимаются проблемы конситентности на уровне БД и Приложения.
Видимо что-то навеяло мне после недели зачетов и выслушивания 100500 вариантов расшифровки аббревиатур ACID, BASE, LSM, PAXOS, GOSSIP, RAFT
❇️ База данных не должна верить приложению на слово
Важная мысль для всех, кто работает с базами данных:
Типичный пример: в приложении написано, что поле
То же самое с уникальностью. Проверка на уровне приложения удобна для пользовательского сообщения об ошибке, но от "race condition" защищает только
Интересна и тема
Отдельная тема - N+1. Часто говорят: "это проблема ORM". Но на самом деле запросы в цикле можно написать и без ORM. ORM просто делает эту ошибку менее заметной. Для DB-специалиста здесь важнее не спор "ORM или SQL руками", а вопрос,
❇️ Главный вывод из интервью такой:
🔑Если инвариант живёт только в коде приложения, он живёт до первого обходного пути.
Разберу довольно интересное интервью с Евгением Демином - Ruby-разработчик и автор нескольких популярных open source библиотек, которые решают проблемы с базами данных, валидацией и производительностью.
Меня зацепило это видео тем, что в нем поднимаются проблемы конситентности на уровне БД и Приложения.
Видимо что-то навеяло мне после недели зачетов и выслушивания 100500 вариантов расшифровки аббревиатур ACID, BASE, LSM, PAXOS, GOSSIP, RAFT
❇️ База данных не должна верить приложению на слово
Важная мысль для всех, кто работает с базами данных:
многие проблемы качества данных рождаются не внутри СУБД, а на границе между приложением и БД.
Типичный пример: в приложении написано, что поле
name обязательно. Но в самой таблице нет NOT NULL. Пока все данные проходят через основной backend, то вроде бы всё хорошо. А потом появляется импорт, скрипт, bulk insert, отключённый callback или второй сервис. В итоге в базе оказываются данные, которые приложение считало невозможными.То же самое с уникальностью. Проверка на уровне приложения удобна для пользовательского сообщения об ошибке, но от "race condition" защищает только
UNIQUE INDEX или UNIQUE CONSTRAINT. Поэтому хорошее правило простое:application validation - это про UX,
database constraint - это про целостность данных.
Интересна и тема
schema as code. В Rails актуальная схема базы хранится в репозитории, и это открывает дорогу для автоматических проверок. Можно сравнивать модель приложения с реальной структурой БД, искать nullable-поля там, где бизнес-логика требует обязательности, проверять уникальные индексы, внешние ключи, несовпадение типов PK и FK.Отдельная тема - N+1. Часто говорят: "это проблема ORM". Но на самом деле запросы в цикле можно написать и без ORM. ORM просто делает эту ошибку менее заметной. Для DB-специалиста здесь важнее не спор "ORM или SQL руками", а вопрос,
понимает ли команда, какие запросы реально уходят в базу, как они исполняются и где возникает лишняя нагрузка.
❇️ Главный вывод из интервью такой:
База данных - это не пассивное хранилище под ORM. Это слой, который должен защищать инварианты продукта: типами, ограничениями, индексами, внешними ключами и транзакционной семантикой.
🔑Если инвариант живёт только в коде приложения, он живёт до первого обходного пути.
YouTube
Что должен знать каждый backend про N+1, lazy preload и производительность / Евгений Демин #83
В этом выпуске у меня в гостях Евгений Дёмин — Ruby-разработчик и автор нескольких популярных open source библиотек, которые решают проблемы с базами данных, валидацией и производительностью. Женя начинал как математик в Калининграде, попал на западный рынок…
❤3👍1
Как вы думаете, в сказке про Красную Шапочку волк сумел так мастерски замаскироваться, что Шапочка ничего не заметила, или у самой Шапочки были проблемы со зрением и слухом?
С пятницей!
#mems
С пятницей!
#mems
😁3
📚«День СУБД 2026»: как «Диасофт» меняет подход к импортозамещению СУБД
📚 RuDB и Digital Q.DataBase: как в России развивают СУБД класса Enterprise
Разберу тандем статей от компании Диасофт.
К сожалению, не смог присутствовать лично на "Дне СУБД", т.к. был в отпуске, но обойти эту тему нельзя, т.к. ребята решили заморочиться.
Забавный факт, Диасофт вложила в пиар мероприятия и рекламу новой СУБД RuDB, но в профессиональных сообществах по базам данных ни одного коммента на этот счет. Даже на Хабре 0 комментов. Странно, не так ли? Давайте разберемся, что же нам презентовали.
❇️ После «Дня СУБД 2026» Диасофт активно продвигает два связанных продукта:
👉 Digital Q.DataBase - коммерческую enterprise-СУБД для миграции с Oracle и Microsoft SQL Server.
🆕RuDB - бесплатную СУБД на базе PostgreSQL 18.2.
На первый взгляд возникает закономерный вопрос:
Если рассматривать RuDB как самостоятельный PostgreSQL-форк, её ценность около нулевая. Ниша уже занята более зрелыми игроками: с поддержкой, документацией, внедрениями, экспертизой и промышленной историей, поэтому как конкурент RuDB пока выглядит слабовато.
Предполагаю, что ставка Диасофта - не на RuDB и "«Ассоциацию Разработчиков СУБД", а на Digital Q.DataBase и механизм «Полиглот».
Идея "Полиглота" - предоставить слой совместимости с Oracle и Microsoft SQL Server: PL/SQL, T-SQL, системные функции, пакеты, привычную прикладную логику. То есть продавать не просто PostgreSQL, а снижение стоимости миграции с тяжёлых enterprise-СУБД.
Почему-то компания Диасофт в 2026 решили тему миграции сделать главной темой своих продуктов.
С моей колокольни, миграция была актуальна с 2022-2024 годах. Все, кто хотел мигрировать уже смигрировали. А те, кто остается на Oracle/MSSQL могут спокойно еще 5 лет сидеть и не париться. За весь ИТ-рынок говорить не буду, но тема миграции ушла из прайм-тайм давно.
Как я понял, Диасофт предлагаю следующую картину:
❗️RuDB сама по себе пока не выглядит сильной технологической необходимостью.
Если это просто ещё один PostgreSQL-based fork, проект рискует потеряться на перегретом рынке российских СУБД.
Но в связке с Digital Q.DataBase логика начинает виднеться.
Ставка Диасофта - это не на "мы сделали ещё один PostgreSQL", а:
Нужно ли это клиентам? Маркетологи считают, что да 😊
Будем верить в ребят! 👀
📚 RuDB и Digital Q.DataBase: как в России развивают СУБД класса Enterprise
Разберу тандем статей от компании Диасофт.
К сожалению, не смог присутствовать лично на "Дне СУБД", т.к. был в отпуске, но обойти эту тему нельзя, т.к. ребята решили заморочиться.
Забавный факт, Диасофт вложила в пиар мероприятия и рекламу новой СУБД RuDB, но в профессиональных сообществах по базам данных ни одного коммента на этот счет. Даже на Хабре 0 комментов. Странно, не так ли? Давайте разберемся, что же нам презентовали.
❇️ После «Дня СУБД 2026» Диасофт активно продвигает два связанных продукта:
👉 Digital Q.DataBase - коммерческую enterprise-СУБД для миграции с Oracle и Microsoft SQL Server.
🆕RuDB - бесплатную СУБД на базе PostgreSQL 18.2.
На первый взгляд возникает закономерный вопрос:
Зачем нужна RuDB, если на российском рынке уже есть Postgres Pro Standard, Tantor, Pangolin, Jatoba и другие PostgreSQL-based решения?
Если рассматривать RuDB как самостоятельный PostgreSQL-форк, её ценность около нулевая. Ниша уже занята более зрелыми игроками: с поддержкой, документацией, внедрениями, экспертизой и промышленной историей, поэтому как конкурент RuDB пока выглядит слабовато.
Предполагаю, что ставка Диасофта - не на RuDB и "«Ассоциацию Разработчиков СУБД", а на Digital Q.DataBase и механизм «Полиглот».
Идея "Полиглота" - предоставить слой совместимости с Oracle и Microsoft SQL Server: PL/SQL, T-SQL, системные функции, пакеты, привычную прикладную логику. То есть продавать не просто PostgreSQL, а снижение стоимости миграции с тяжёлых enterprise-СУБД.
Почему-то компания Диасофт в 2026 решили тему миграции сделать главной темой своих продуктов.
С моей колокольни, миграция была актуальна с 2022-2024 годах. Все, кто хотел мигрировать уже смигрировали. А те, кто остается на Oracle/MSSQL могут спокойно еще 5 лет сидеть и не париться. За весь ИТ-рынок говорить не буду, но тема миграции ушла из прайм-тайм давно.
Как я понял, Диасофт предлагаю следующую картину:
- RuDB = бесплатная PostgreSQL-compatible база / entry point
- Digital Q.DataBase = коммерческий enterprise-продукт
- Полиглот = ключевая технология миграции Oracle/MSSQL workloads
❗️RuDB сама по себе пока не выглядит сильной технологической необходимостью.
Если это просто ещё один PostgreSQL-based fork, проект рискует потеряться на перегретом рынке российских СУБД.
Но в связке с Digital Q.DataBase логика начинает виднеться.
Ставка Диасофта - это не на "мы сделали ещё один PostgreSQL", а:
"мы дадим путь миграции с Oracle/MS SQL Server без тотального переписывания прикладного кода»"
Нужно ли это клиентам? Маркетологи считают, что да 😊
Будем верить в ребят! 👀
Хабр
«День СУБД 2026»: как «Диасофт» меняет подход к импортозамещению СУБД
21 апреля компания «Диасофт» провела первую в своей истории конференцию «День СУБД 2026». Мероприятие посетили более 250 экспертов: представители крупнейших банков, IT-разработчиков и интеграторов,...
👍3
📚🔴 Redis выглядит нормально. В этом и проблема.
Попалась забавная статья про старую, но всё ещё актуальную атаку на плохо защищённые Redis-серверы.
Сценарий примерно такой:
1️⃣ Redis доступен из недоверенной сети.
2️⃣ Аутентификации нет или она слабая.
3️⃣Атакующий подключается как обычный клиент.
4️⃣Через
5️⃣Заставляет Redis записать SSH-ключ в
6️⃣Возвращает настройки обратно.
7️⃣Redis продолжает работать как ни в чём не бывало.
В очередной раз кто-то выставил "голой попой" 🍑 СУБД в сеть интернет и словил вирус. Казалось бы, что тут нового?
И вот в этом главный смысл статьи:
➕ Процесс жив.
➕ Latency нормальная.
➕ Ключи на месте.
➕ Ошибок в логах почти нет.
⚠️ Но сервер уже может быть скомпрометирован на уровне ОС 🐞
Эксплуатационный урок в следующем, для Redis и Valkey безопасность - это контроль поверхности атаки(наконец-то получилось применять словосочетание "поверхность атаки", а то прочел об этом в умных ВУЗовских книжках, а применить было не где. И вот, удобный случай 😊.
Привила хорошеготона инженера:
❗️
❗️ доступ должен закрываться firewall/security groups;
AUTH/ACL должны быть включены;
❗️ опасные команды вроде
❗️ Redis не должен запускаться от root;
❗️ изменения
Главный вывод:
Попалась забавная статья про старую, но всё ещё актуальную атаку на плохо защищённые Redis-серверы.
Сценарий примерно такой:
1️⃣ Redis доступен из недоверенной сети.
2️⃣ Аутентификации нет или она слабая.
3️⃣Атакующий подключается как обычный клиент.
4️⃣Через
CONFIG SET меняет директорию и имя файла дампа.5️⃣Заставляет Redis записать SSH-ключ в
authorized_keys.6️⃣Возвращает настройки обратно.
7️⃣Redis продолжает работать как ни в чём не бывало.
В очередной раз кто-то выставил "голой попой" 🍑 СУБД в сеть интернет и словил вирус. Казалось бы, что тут нового?
И вот в этом главный смысл статьи:
Redis после компрометации может выглядеть абсолютно здоровым.
⚠️ Но сервер уже может быть скомпрометирован на уровне ОС 🐞
Эксплуатационный урок в следующем, для Redis и Valkey безопасность - это контроль поверхности атаки
Привила хорошего
❗️
bind должен быть настроен только на нужные интерфейсы;❗️ доступ должен закрываться firewall/security groups;
AUTH/ACL должны быть включены;
❗️ опасные команды вроде
CONFIG, SAVE, BGSAVE, MODULE, DEBUG, FLUSHALL, REPLICAOF должны быть ограничены;❗️ Redis не должен запускаться от root;
❗️ изменения
authorized_keys, cron, конфигов и неожиданные CONFIG SET должны попадать в мониторинг/аудит.Главный вывод:
Redis - это не "просто кеш". Это сетевой сервис, который при неправильной настройке может стать точкой входа в инфраструктуру для злых дядей 🤷♂️
Please open Telegram to view this post
VIEW IN TELEGRAM
Security Boulevard
Your Redis Server Looks Fine. That’s the Problem.
Introduction There’s an automated attack circulating right now that breaks into unprotected Redis servers, takes over the underlying machine, and then carefully puts everything back the way it found it. It restores the database filename. It deletes the tools…
❤2👍2
📚 Как-то попросили меня разобрать статью: Direct I/O for Cassandra Compaction: Cutting p99 Read Latency by 5x
Я не разработчик, поэтому мне сложно будет оценить все тонкости данного исследования, но я постараюсь выцепить основную тенденцию.
В статье показывается, что compaction в Cassandra может заметно портить p99 read latency не только потому, что потребляет диск или CPU, а потому что вмешивается в работу Linux page cache.
Compaction читает большие объёмы SSTable-данных, которые часто нужны ровно один раз: прочитать старые файлы, собрать новые, старые потом удалить. Но при обычном buffered I/O эти страницы всё равно попадают в page cache и могут вытеснять оттуда действительно горячие данные пользовательских запросов.
Решение, которое обсуждается в статье,
Мне эта статья кажется важной не только как заметка про Cassandra. Она хорошо подсвечивает более общий тезис: универсальные механизмы ОС иногда начинают мешать СУБД, потому что ОС видит страницы, файлы и процессы, а база данных видит совсем другое - hot read path, compaction, SSTable, tombstone, TTL, foreground-запросы и background housekeeping.
В этом месте невольно вспоминается идея DBOS (DataBase-oriented Operating System). Это, конечно, гораздо более радикальная постановка вопроса, чем Direct I/O для compaction, но логика такая же. Если управление состоянием, историей изменений, восстановлением и фоновыми процессами становится центральной задачей системы, то, возможно, системный слой будущего должен быть не просто process/file-oriented, а database-aware.
В этом смысле статья не только про Cassandra. Она про границу между СУБД и операционной системой - и про то, как эта граница постепенно становится всё менее очевидной 🧐.
Я не разработчик, поэтому мне сложно будет оценить все тонкости данного исследования, но я постараюсь выцепить основную тенденцию.
В статье показывается, что compaction в Cassandra может заметно портить p99 read latency не только потому, что потребляет диск или CPU, а потому что вмешивается в работу Linux page cache.
Compaction читает большие объёмы SSTable-данных, которые часто нужны ровно один раз: прочитать старые файлы, собрать новые, старые потом удалить. Но при обычном buffered I/O эти страницы всё равно попадают в page cache и могут вытеснять оттуда действительно горячие данные пользовательских запросов.
Решение, которое обсуждается в статье,
читать данные для compaction через Direct I/O, то есть мимо page cache. По сути, база данных говорит операционной системе: "Эй, БРО! Здесь не надо мне помогать с кэшированием, я лучше знаю семантику этой операции".
Мне эта статья кажется важной не только как заметка про Cassandra. Она хорошо подсвечивает более общий тезис: универсальные механизмы ОС иногда начинают мешать СУБД, потому что ОС видит страницы, файлы и процессы, а база данных видит совсем другое - hot read path, compaction, SSTable, tombstone, TTL, foreground-запросы и background housekeeping.
В этом месте невольно вспоминается идея DBOS (DataBase-oriented Operating System). Это, конечно, гораздо более радикальная постановка вопроса, чем Direct I/O для compaction, но логика такая же. Если управление состоянием, историей изменений, восстановлением и фоновыми процессами становится центральной задачей системы, то, возможно, системный слой будущего должен быть не просто process/file-oriented, а database-aware.
В этом смысле статья не только про Cassandra. Она про границу между СУБД и операционной системой - и про то, как эта граница постепенно становится всё менее очевидной 🧐.
Sam Lightfoot
Direct I/O for Cassandra Compaction: Cutting p99 Read Latency by 5x
A patch I contributed to Apache Cassandra 6 cuts p99 read latency by 5x during compaction.
Compaction pollutes the page cache with data the application knows is throwaway, but the kernel does not. Compaction is unavoidable, the price Cassandra pays for fast…
Compaction pollutes the page cache with data the application knows is throwaway, but the kernel does not. Compaction is unavoidable, the price Cassandra pays for fast…
🔥6👍1
Мультивселенная СУБД pinned «📚 Как-то попросили меня разобрать статью: Direct I/O for Cassandra Compaction: Cutting p99 Read Latency by 5x Я не разработчик, поэтому мне сложно будет оценить все тонкости данного исследования, но я постараюсь выцепить основную тенденцию. В статье показывается…»
📚 Пап, а это HTAP? — Ну такое, это две разные СУБД в длинном плаще
После статьи Тантора про HTAP внутри PostgreSQL у меня осталось двойственное ощущение.
С одной стороны, тезис статьи довольно простой: связка "PostgreSQL для OLTP + ClickHouse/DuckDB/Parquet через CDC для OLAP" - это НЕ HTAP. Это две разные системы, соединённые трубой передачи данных.
*️⃣ Да, это может быть практично.
*️⃣ Да, это может работать быстро.
*️⃣ Да, это может быть нормальной промышленной архитектурой.
❗️Но это не единый контур.
В строгом смысле HTAP должен давать:
✅ общий логический набор данных;
✅ единую транзакционную видимость;
✅ минимум data movement между OLTP и OLAP;
✅ согласованную SQL-семантику;
✅ изоляцию аналитической нагрузки от транзакционной.
HTAP преподносится как способ убрать сложность: меньше ETL, меньше CDC, меньше рассинхронизации. На практике сложность не исчезает, а переезжает внутрь одной большой СУБД. А это очень рискованная затея...
OLTP - критичный контур. Если он лежит, бизнес теряет деньги (не проходят платежи, не создаются заказы и т.п.)
OLAP тоже важен, но обычно менее критичен. Его можно перегрузить, перестроить или даже временно отключить.
Поэтому разделение OLTP и OLAP - это не только про разные нагрузки. Это про разделение рисков.
Главный вопрос к HTAP должен быть примерно такой:
Иерархия получается такая
HTAP СУБД будут полезны в следующих проектах:
➕ выявление мошенничества (антифрод)
➕ скоринг
➕ управление текущими остатками
➕ Телеком
После статьи Тантора про HTAP внутри PostgreSQL у меня осталось двойственное ощущение.
С одной стороны, тезис статьи довольно простой: связка "PostgreSQL для OLTP + ClickHouse/DuckDB/Parquet через CDC для OLAP" - это НЕ HTAP. Это две разные системы, соединённые трубой передачи данных.
❗️Но это не единый контур.
В строгом смысле HTAP должен давать:
HTAP преподносится как способ убрать сложность: меньше ETL, меньше CDC, меньше рассинхронизации. На практике сложность не исчезает, а переезжает внутрь одной большой СУБД. А это очень рискованная затея...
OLTP - критичный контур. Если он лежит, бизнес теряет деньги (не проходят платежи, не создаются заказы и т.п.)
OLAP тоже важен, но обычно менее критичен. Его можно перегрузить, перестроить или даже временно отключить.
Поэтому разделение OLTP и OLAP - это не только про разные нагрузки. Это про разделение рисков.
Главный вопрос к HTAP должен быть примерно такой:
Как она гарантирует, что аналитика не убьёт OLTP?
Иерархия получается такая
OLTP
↓
HTAP / operational analytics
↓
OLAP / DWH / Data Lake / BI / ML
HTAP СУБД будут полезны в следующих проектах:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
📚 IBM invites CockroachDB to infest its mainframes with PostgreSQL
С моей колокольни, новость - бомба 💥💥💥
Сделка века, не иначе 😊 Очень продуманный и хитрый ход. Причем одинаково полезный как для IBM, так и для Cockroach Lab.
Это не история про замену Db2 на CockroachDB (к сожалению, Db2 никогда не умрет 🧟). И это не про простой перенос старых mainframe-приложений в PostgreSQL-мир.
Это попытка IBM закрыть пробел в портфеле, дать клиентам cloud-native distributed SQL для новых приложений внутри привычной экосистемы.
Главный фича - закрыть требование к масштабированию систем из коробки и дать людям знакомый синтаксис.
CockroachDB похожа на PostgreSQL только на уровне интерфейса. Под капотом - другая распределённая СУБД. А миграция enterprise-систем, это целая эпопея! Даже простой
Самое сложное обычно в другом:
🧩 SQL-диалект
🧩 хранимые процедуры
🧩 транзакционная семантика
🧩 драйверы
🧩 блокировки
🧩 эксплуатационные привычки
🧩 прикладной код вокруг СУБД
Поэтому обещания "модернизации без переписывания" всегда стоит читать осторожно (это вам не Диасофт).
Итого:
✅ Для новых cloud-native приложений в инфраструктуре IBM - CockroachDB шикарный вариант.
❌ Для зрелых Db2/mainframe-нагрузок - это не волшебный мост в PostgreSQL-мир.
С моей колокольни, новость - бомба 💥💥💥
IBM объявила партнёрство: CockroachDB теперь предлагается как PostgreSQL-совместимая распределённая СУБД для LinuxONE, Linux on Z, Power Systems и OpenShift.
Сделка века, не иначе 😊 Очень продуманный и хитрый ход. Причем одинаково полезный как для IBM, так и для Cockroach Lab.
Это не история про замену Db2 на CockroachDB (к сожалению, Db2 никогда не умрет 🧟). И это не про простой перенос старых mainframe-приложений в PostgreSQL-мир.
Это попытка IBM закрыть пробел в портфеле, дать клиентам cloud-native distributed SQL для новых приложений внутри привычной экосистемы.
Главный фича - закрыть требование к масштабированию систем из коробки и дать людям знакомый синтаксис.
CockroachDB похожа на PostgreSQL только на уровне интерфейса. Под капотом - другая распределённая СУБД. А миграция enterprise-систем, это целая эпопея! Даже простой
SELECT FOR UPDATE может вести себя иначе, и это всплывёт только на проде. Самое сложное обычно в другом:
🧩 SQL-диалект
🧩 хранимые процедуры
🧩 транзакционная семантика
🧩 драйверы
🧩 блокировки
🧩 эксплуатационные привычки
🧩 прикладной код вокруг СУБД
Поэтому обещания "модернизации без переписывания" всегда стоит читать осторожно (это вам не Диасофт).
Итого:
✅ Для новых cloud-native приложений в инфраструктуре IBM - CockroachDB шикарный вариант.
❌ Для зрелых Db2/mainframe-нагрузок - это не волшебный мост в PostgreSQL-мир.
theregister
IBM and CockroachDB partner to bring PostgreSQL to mainframe
: Vendors promote bridge to modern architecture for legacy systems, but Db2 not going anywhere just yet
👍4
🎦 Осипов, Рыбак -- #1 (2026)
Не могу пройти мимо беседы двух умных и уважаемых мной людей о мире баз данных.
Не буду делать детальный обзор. Алексей в своем канале уже дал полную текстовую расшифровку
❗️Пост 1
❗️Пост 2
Даже на Хабре есть текстовая расшифровка
Я хочу подсветить тезисы, которые задели лично меня:
👉 До эпохи NoSQL все чаты хранились в MySQL
👉 Discord хранит свои данные в ScyllaDB
👉 Есть ряд научный статей по разработке эффективного алгоритма удаления данных по TTL
👉 Accord для Cassandra сделала команда Apple. (У меня два студента в этого году пишут НИР по этой теме)
👉 CSO (безопасники) выбирают базу данных для проекта.
👉 Подавляющее большинство пользователей Redis без AOF без реплики. Просто мемкэш. Резиновый КЭШ.
Не могу пройти мимо беседы двух умных и уважаемых мной людей о мире баз данных.
Не буду делать детальный обзор. Алексей в своем канале уже дал полную текстовую расшифровку
❗️Пост 1
❗️Пост 2
Даже на Хабре есть текстовая расшифровка
Я хочу подсветить тезисы, которые задели лично меня:
👉 До эпохи NoSQL все чаты хранились в MySQL
👉 Discord хранит свои данные в ScyllaDB
👉 Есть ряд научный статей по разработке эффективного алгоритма удаления данных по TTL
👉 Accord для Cassandra сделала команда Apple. (У меня два студента в этого году пишут НИР по этой теме)
👉 CSO (безопасники) выбирают базу данных для проекта.
👉 Подавляющее большинство пользователей Redis без AOF без реплики. Просто мемкэш. Резиновый КЭШ.
YouTube
Осипов, Рыбак -- #1 (2026)
Беседа Алексея Рыбака (devhands.io) с Константином Осиповым (Picodata) о выборе баз данных для хранения больших объёмов. Обсудили, что:
- MySQL/Postgres — рабочие варианты, но требуют ручного шардирования; у Postgres проблема с MVCC-сборкой мусора на больших…
- MySQL/Postgres — рабочие варианты, но требуют ручного шардирования; у Postgres проблема с MVCC-сборкой мусора на больших…
👍3