Базы данных

ClickHouse-драйверы: когда какой (ch-go, clickhouse-go, JDBC, HTTP)

ClickHouse-драйверы: когда какой (ch-go, clickhouse-go, JDBC, HTTP)

Драйвер ClickHouse — половина производительности: низкоуровневый колоночный ch-go против эргономичного clickhouse-go (native и database/sql), clickhouse-java client-v2 против clickhouse-jdbc, и HTTP-интерфейс. Живой бенчмарк вставки и запроса, когда какой оправдан, карта выбора

Индексы и языки/ORM: зависимость и особенности

Индексы и языки/ORM: зависимость и особенности

Зависят ли индексы от языка программирования и как ORM влияют на их использование: генерируемые запросы и N+1, неявные приведения типов, prepared statements и план, миграции индексов и как из кода проверить, что индекс реально работает

ClickHouse из Go и Java: MergeTree, вставки и запросы

ClickHouse из Go и Java: MergeTree, вставки и запросы

Как устроено семейство MergeTree (ORDER BY, PRIMARY KEY, партиционирование), почему в ClickHouse нельзя вставлять по одной строке и что дают async inserts, и как всё это выглядит из клиентов clickhouse-go и clickhouse-java — нативный протокол против HTTP

Когда нужен OLAP: ClickHouse против PostgreSQL для аналитики

Когда нужен OLAP: ClickHouse против PostgreSQL для аналитики

Чем OLAP-нагрузка отличается от OLTP, как колоночное хранение и векторное исполнение делают ClickHouse быстрым на аналитике, в какой момент PostgreSQL перестаёт тянуть агрегаты по большим таблицам — и где ClickHouse категорически не подходит

Паттерны и антипаттерны индексирования

Паттерны и антипаттерны индексирования

Что делать и чего избегать с индексами: over-indexing и write-amplification, неиспользуемые и дублирующие индексы, bloat и обслуживание, covering под горячие запросы, online-создание без блокировок, индексы под пагинацию — и антипаттерн «индекс на всё»

Мульти-хранилищный стенд: один сценарий по всем БД и карта выбора

Мульти-хранилищный стенд: один сценарий по всем БД и карта выбора

Финал серии: единый сценарий (списание с инвариантом «баланс не в минус») реализован поверх PostgreSQL, Redis, MongoDB и ScyllaDB и прогнан одним нагрузчиком. Что каждая система гарантирует из коробки, что ломается под конкуренцией, цена корректности — и итоговая карта выбора

Брокеры и стриминг: транзакции в очереди и логе — RabbitMQ и Kafka

Брокеры и стриминг: транзакции в очереди и логе — RabbitMQ и Kafka

Что значит «транзакция» в брокере: AMQP-транзакции RabbitMQ против publisher confirms, транзакционный producer и exactly-once в Kafka, consume-process-produce и read_committed, границы EOS и outbox-паттерн как мост к БД. Примеры на Go и Java

Как выбирать и использовать индексы

Как выбирать и использовать индексы

Практика индексов: селективность и кардинальность, покрывающие индексы и index-only scan, составные индексы и порядок колонок, частичные и функциональные, и главное — почему индекс НЕ используется и как это увидеть

В работе

Ближайшие материалы, которые продолжают этот раздел.

Базы данных

Redis: где он помогает, где создаёт проблемы и почему "просто поставим кэш" — плохой план

Вводный материал про Redis как класс решений: паттерны, анти-паттерны, ограничения и подходы к надёжности.

Базы данных

PostgreSQL в Docker: что можно, что нельзя и как не потерять данные

Практический baseline для PostgreSQL в контейнерах: volume, backup, healthcheck и границы допустимого production.

Базы данных

ClickHouse в контейнерах: когда это удобно, а когда лучше не надо

Разбор dev- и lab-сценариев для ClickHouse и того, где контейнеризация уже начинает мешать эксплуатации.