Агрегация больших данных: C++, boost или RDBMS?

Я хочу прочитать файл с 600M записями в C++ и выполнить агрегирование на основе заданных критериев для полей (например, empl.loacation='FL' and empl.dept=3).

Является ли использование C++ жизнеспособным вариантом? Я могу пойти по пути базы данных, но мне было интересно, учитывая, что мое требование только для чтения - агрегация, могу ли я просто использовать C++?

Я видел мульти индексную библиотеку наддува. Это больше подходит для такого рода операций, чем обычный C++ или БД?

1 ответ

Чтобы определить, соответствует ли Boost.MultiIndex вашему счету, задайте себе два следующих вопроса:

  1. Ваш целевой компьютер способен удерживать структуру в памяти? Вам примерно понадобится N*(I*3*p + sizeof(element)), где N - количество элементов (600М в вашем случае), I - число индексов и p - размер указателя (4 байта). в 32-битной архитектуре, 8 в 64-битной среде.)
  2. Является ли количество шаблонов запросов относительно низким и фиксированным? Что касается шаблона запроса, вы упомянули пример "location=A и dept=B". Сколько из них у вас будет? (По модулю некоторых оптимизаций вам понадобится индекс для каждого шаблона запроса.)

Если ответ на оба вопроса положительный, Boost.MultiIndex может вам помочь.

Другие вопросы по тегам