- Главная
- →
- Базы данных и системы хранения
Cassandra для хранения метаданных: успехи и провалы Базы данных и системы хранения
Руководитель разработки, разработчик, фанат Go, Python, DevOps и больших нагрузок. Руководил разработкой backend-сервисов в стартапе Qik, после его покупки продолжил работать в компаниях Skype и Microsoft. До этого участвовал в разработке и руководил созданием таких проектов, как damochka.ru, delit.net, smotri.com. Андрей - автор opensource-проектов aptly (https://github.com/smira/aptly), Redis Resharding Proxy (https://github.com/smira/redis-resharding-proxy) и txZMQ (https://github.com/smira/txZMQ). Автор мастер-класса "Разработка надёжных высоконагруженных систем" (http://smira.highload.ru/).
Тезисы
Мы разработали и поддерживаем экзабайтное облачное объектное хранилище (S3-совместимое), и нам необходимо сохранять метаданные объектов. Работа с метаданными сложнее работы с данными, т.к. необходимо поддерживать конкурентные операции по записи/удалению одного и того же объекта, версионирование и т.п. Наше хранилище поддерживает работу в режиме active-active через два дата-центра (eventual consistency), что дополнительно усложняет слой метаданных.
Cassandra была и остается идеальным решением с точки зрения архитектуры и модели данных. Я расскажу о нашем опыте работы с Cassandra c "нуля" (когда никто из нас никогда не работал с Cassandra в production) через хороший и плохой опыт к сегодняшнему пониманию Cassandra изнутри и снаружи.
Я расскажу о том, как мы теряли данные и как их восстанавливали, как в базе данных появлялись "зомби" (ранее удаленные данные), как мы масштабировали наш кластер, почему надо шардировать кластеры Cassandra. Речь пойдет и о миграции многотерабайтного кластера Cassandra между дата-центрами без прерывания работы, о том, что и как необходимо мониторить, в том числе со стороны клиентского драйвера, как понять, почему Cassandra медленно отвечает.
Поговорим и о том, как хранить миллиарды отсортированных ключей в Cassandra так, чтобы можно было к ним обеспечить быстрый доступ, как сделать "очередь" в Cassandra, и какие проблемы связаны с repair.