Занимаюсь распределёнными базами данных на Apache Cassandra и ScyllaDB — проектирую схему, поднимаю кластеры и веду их в бою. Работа стартует не с железа, а с разбора запросов: собираю все сценарии чтения и записи вашего приложения и выстраиваю модель данных под конкретные паттерны доступа. В wide-column хранилище это ключевой момент — таблица создаётся под запрос, поэтому я денормализую там, где это оправдано, назначаю ключи партиционирования с равномерным распределением по кольцу и подбираю clustering-колонки так, чтобы частые выборки укладывались в одну партицию.
Затем довожу кластер до состояния, в котором он выдерживает боевой трафик. Выставляю фактор репликации и уровни согласованности под требования к сохранности и задержкам, слежу, чтобы партиции не разрастались, подбираю стратегию компакции под характер нагрузки — временные ряды, лог событий или интенсивный key-value. Пишущие потоки на десятки тысяч операций в секунду держу без просадок на flush и compaction, а хвостовые задержки — под контролем: широкие партиции, tombstone-ы и перегретые шарды ловлю заранее. На ScyllaDB отдельно выжимаю максимум из архитектуры shard-per-core.
Остаюсь на сопровождении на те задачи, что кладут кластеры среди ночи: расписание repair, вывод и замена узлов, репликация между дата-центрами, расчёт ёмкости и переезд с одиночной реляционной базы, упёршейся в потолок. В итоге база спокойно переживает пики и растёт добавлением узлов.
— Модель данных под реальные запросы и проектирование партиций
— Репликация, согласованность и стратегия компакции
— Высокая скорость записи и стабильные задержки
— Repair, замена узлов, конфигурация мульти-DC
Затем довожу кластер до состояния, в котором он выдерживает боевой трафик. Выставляю фактор репликации и уровни согласованности под требования к сохранности и задержкам, слежу, чтобы партиции не разрастались, подбираю стратегию компакции под характер нагрузки — временные ряды, лог событий или интенсивный key-value. Пишущие потоки на десятки тысяч операций в секунду держу без просадок на flush и compaction, а хвостовые задержки — под контролем: широкие партиции, tombstone-ы и перегретые шарды ловлю заранее. На ScyllaDB отдельно выжимаю максимум из архитектуры shard-per-core.
Остаюсь на сопровождении на те задачи, что кладут кластеры среди ночи: расписание repair, вывод и замена узлов, репликация между дата-центрами, расчёт ёмкости и переезд с одиночной реляционной базы, упёршейся в потолок. В итоге база спокойно переживает пики и растёт добавлением узлов.
— Модель данных под реальные запросы и проектирование партиций
— Репликация, согласованность и стратегия компакции
— Высокая скорость записи и стабильные задержки
— Repair, замена узлов, конфигурация мульти-DC