У нас есть приложение, которое может получить огромную пользу от использования хранилища данных на основе документов, такого как CouchDB. Но у нас есть вариант использования запроса, который я пытаюсь реализовать с помощью Map Reduce.
Наши документы действительно содержат только два типа данных:
- Числовые атрибуты
- Булевы атрибуты
Логические атрибуты, по сути, помечают документ как принадлежащий одному или нескольким неисключительным наборам. Числовые атрибуты всегда нужно только суммировать. Один из способов структурирования документа выглядит следующим образом:
{
"id": 3123123,
"attr": {"x": 2, "y": 4, "z": 6},
"sets": ["A", "B", "C"]
}
С этой структурой легко вычислить совокупные значения x, y, z для множеств A, B и C, но это становится более сложным, когда вы хотите увидеть агрегаты для пересечений, таких как A & C.
В этом небольшом случае я мог выдавать ключи для всех перестановок ABC («A, B, C, AB, AC, BC, ABC»), но меня беспокоит, как это будет масштабироваться. Наши документы могут принадлежать к некоторой комбинации из 80 комплектов, и для них предусмотрен пользовательский интерфейс, который может создать любую их возможную комбинацию.
Я склонен думать, что это не работа для CouchDB, и, возможно, MongoDB или что-то еще лучше подойдет для этой проблемы.
Я что-то упустил?