Для каждой учетной записи у меня есть миллионы элементов данных (строк в журналах аналитики), каждый с 20-50 числовыми свойствами (они тоже могут быть нулевыми).Мне нужно показать им статистику, которая в основном включает такие запросы, как SELECT SUM(f1), f2, f3 WHERE f4>f5 GROUP BY f2, f3
.Функции агрегирования иногда более сложны, чем SUM (), а GROUP BY иногда включает простые функции, такие как ROUND ().Проблема заключается в том, что такие запросы встроены в пользовательский интерфейс и могут выполняться с любой комбинацией этих свойств (хотя, конечно, существуют и некоторые популярные комбинации).
Попав в базу данных, данные, скорее всего, не будутбыть изменены, только читать.Должна быть возможность легко добавлять / удалять свойства - не обязательно в реальном времени в терминах базы данных, но это не должно требовать полных блоков таблиц, как в MySQL.
Какие базы данных SQL или NoSQL будут лучше всего обрабатывать запросы такого типа?Я думал о PostgreSQL или MongoDB, хотя в последнем мне, скорее всего, придется использовать MapReduce, а не функцию Group из-за его ограничений.
Есть еще какие-нибудь советы по выполнению таких запросов?Возможно ли это сделать вообще, или мне абсолютно необходимо попросить пользователей заранее определить, какие именно запросы они хотят выполнить?
Любые идеи будут высоко оценены.