Для фильтрации и сортировки по ключевым значениям должно хватить любого хранилища значений ключей (redis, leveldb, berkeleydb, ... их много).Группировка - это агрегатная операция, которая, как уже отмечалось, является основой реляционных баз данных.Кроме того, поскольку данные непрозрачны в паре ключ-значение, они могут быть произвольно сложными.Некоторые хранилища значений ключей также поддерживают вторичные индексы, поэтому вы можете фильтровать / сортировать по другим атрибутам.
eXtremeDB (продукт моей компании) имеет собственный (не SQL) интерфейс, но является структурированной базой данных (то есть имеетязык схемы).Язык схемы очень похож на C ++ (или вы можете использовать C # или Java для языка схемы), поэтому вы можете создавать произвольно сложные объекты (или даже использовать язык схемы для определения пары ключ-значение).Вы можете индексировать любое поле, поле вложенной структуры, вектор или любую комбинацию.Так что он также может обрабатывать фильтрацию / сортировку.Если ваши данные являются данными временного ряда, то есть также библиотека функций для различных операций группировки (среднее, среднее по окну, среднее по сетке и многие другие).Если это не данные временных рядов, то, подобно базам данных пары ключ-значение, вам придется выполнить операцию группировки самостоятельно.Это не сложно с поддержкой доступной фильтрации / сортировки.