В мире, где облачные ресурсы становятся все более доступными, многие забывают о простых истинах: эффективность и экономичность. Но что, если мы скажем вам, что есть способ сократить расходы на инфраструктуру без ущерба для производительности? Сегодня мы поговорим о Old Computer Challenge и сравним три ведущих аналитических системы — Apache Druid, ClickHouse и Rockset — в борьбе за выживание на «слабом» железе.

В эпоху облачного изобилия мы привыкли решать проблемы производительности простым масштабированием: добавить еще десяток инстансов в 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.

Тест на выживание: Работа в условиях ограниченных ресурсов