2015-04-12 3 views
0

У меня есть несколько интересная проблема, и я ищу решения для хранения данных для эффективного запроса.Хранилища данных для агрегации большого количества объектов, идентифицированных atttibutes

У меня есть большое (1M +) количество бизнес-объектов, и каждый объект имеет большое количество атрибутов (порядка 100). Атрибуты относительно неструктурированы - система имеет тысячи возможных атрибутов, их количество растет со временем, и каждый объект имеет произвольное (например, разреженное) подмножество из них.

Мне часто приходится выполнять следующую операцию: найти все объекты с определенным набором атрибутов S и выполнить на них агрегацию. Я никогда не знаю S раньше времени, и поэтому по каждому запросу мне приходится выполнять дорогостоящую развертку базы данных, которая не масштабируется.

Каковы некоторые решения для хранения данных для такого рода проблем? Одним из возможных решений было бы иметь хранилище данных, которое распараллеливает скопления - возможно, Cassandra с Hive/Pig сверху?

Мысли?

ответ

0

На данный момент, Cassandra + Spark является вероятным кандидатом.

В чистом мире Кассандры можно (теоретически) создать ручное сопоставление всех возможных S-атрибутов объектам данных, а затем загрузить их через приложение и процесс (где имя атрибута S - это ключ раздела , значение атрибута S - это ключ кластеризации, а сам идентификатор объекта данных - это еще один ключ кластеризации, так что вы можете быстро перебирать все объекты с помощью набора атрибутов S).

Это не невероятно сексуально, но может быть сделано для работы.