В эпоху облачного изобилия мы привыкли решать проблемы производительности простым масштабированием: добавить еще десяток инстансов в AWS — дело двух кликов. Однако такой подход ведет к неконтролируемому росту счетов за инфраструктуру. Движение Old Computer Challenge, изначально зародившееся как эксперимент по использованию старого железа для повседневных задач, в контексте Big Data трансформировалось в концепцию экстремальной оптимизации ресурсов.
Как поведут себя ведущие аналитические системы — Apache Druid, ClickHouse и Rockset — если поместить их в рамки жестких ограничений (минимальный CPU, жесткие лимиты RAM и дешевые диски)? Какая из этих систем способна выжать максимум из каждого цента, потраченного на инфраструктуру? Давайте разберемся в их архитектурных особенностях, реальной производительности и совокупной стоимости владения (TCO).
Важное обновление 2024/2025 года: Летом 2024 года компания OpenAI приобрела Rockset, и сервис объявил о прекращении поддержки сторонних клиентов. Тем не менее, архитектурный подход Rockset (Converged Index) остается эталоном для сравнения, а его кейс наглядно показывает разницу между классическим Open Source и проприетарным SaaS в плоскости затрат.
Участники эксперимента и их архитектурная философия
1. ClickHouse: Одинокий воин на C++
ClickHouse создавался в недрах Яндекса для решения задач веб-аналитики (Яндекс Метрика). Его философия — выжать 100% производительности из доступного физического сервера за счет низкоуровневой оптимизации на C++, векторизованного выполнения запросов и агрессивного сжатия данных.
- Архитектура: Монолитная (в базовом варианте). Один бинарник выполняет все функции: прием данных, хранение, координацию и выполнение запросов.
- Зависимости: Нет. Не требует внешних СУБД для метаданных или координаторов для работы одиночного узла.
2. Apache Druid: Распределенный гигант на Java
Druid разрабатывался для рекламных платформ, где критически важна минимальная задержка (sub-second latency) при сканировании миллиардов строк в реальном времени.
- Архитектура: Микросервисная. Druid разделен на специализированные процессы: Historical (хранение и запросы), MiddleManager (инжест данных), Broker (маршрутизация запросов), Coordinator (управление сегментами) и Overlord (управление задачами).
- Зависимости: Высокие. Требуется Apache ZooKeeper (или альтернатива) для координации, реляционная БД (PostgreSQL/MySQL) для хранения метаданных и Deep Storage (S3, HDFS или общая ФС) для долговечного хранения сегментов.
3. Rockset: Облачный индексатор на RocksDB
Rockset изначально проектировался как полностью облачная (cloud-native) СУБД с разделением ресурсов хранения и вычислений (Compute-Storage Separation).
- Архитектура: Базируется на концепции Converged Index. При импорте данных Rockset строит одновременно три типа индексов: инвертированный (для поиска), колоночный (для аналитики) и строковый (для точечных выборок). В качестве движка хранения используется кастомизированная RocksDB.
- Зависимости: Полностью управляется вендором (SaaS), жестко завязан на облачную инфраструктуру AWS/Azure.