Агрегация больших данных: C++, boost или RDBMS?
Я хочу прочитать файл с 600M записями в C++ и выполнить агрегирование на основе заданных критериев для полей (например, empl.loacation='FL' and empl.dept=3
).
Является ли использование C++ жизнеспособным вариантом? Я могу пойти по пути базы данных, но мне было интересно, учитывая, что мое требование только для чтения - агрегация, могу ли я просто использовать C++?
Я видел мульти индексную библиотеку наддува. Это больше подходит для такого рода операций, чем обычный C++ или БД?
1 ответ
Чтобы определить, соответствует ли Boost.MultiIndex вашему счету, задайте себе два следующих вопроса:
- Ваш целевой компьютер способен удерживать структуру в памяти? Вам примерно понадобится N*(I*3*p + sizeof(element)), где N - количество элементов (600М в вашем случае), I - число индексов и p - размер указателя (4 байта). в 32-битной архитектуре, 8 в 64-битной среде.)
- Является ли количество шаблонов запросов относительно низким и фиксированным? Что касается шаблона запроса, вы упомянули пример "location=A и dept=B". Сколько из них у вас будет? (По модулю некоторых оптимизаций вам понадобится индекс для каждого шаблона запроса.)
Если ответ на оба вопроса положительный, Boost.MultiIndex может вам помочь.