2015-04-12 1 views
0

J'ai un problème assez intéressant et je recherche des solutions de stockage de données pour des requêtes efficaces.Stockages de données pour les agrégations d'un grand nombre d'objets identifiés par des attributs

J'ai un grand nombre d'objets métier (1M +) et chaque objet possède un grand nombre d'attributs (de l'ordre de 100). Les attributs sont relativement non structurés - le système a des milliers d'attributs possibles, leur nombre croît avec le temps, et chaque objet a un sous-ensemble arbitraire (par exemple clairsemé).

Je dois fréquemment effectuer l'opération suivante: trouver tous les objets avec un ensemble concret d'attributs S et effectuer une agrégation sur eux. Je ne connais jamais S à l'avance, et ainsi de suite à chaque demande, je dois effectuer un balayage coûteux de la base de données qui n'est pas à l'échelle.

Quelles sont certaines solutions de stockage de données pour ce type de problème? Une solution possible serait d'avoir un magasin de données qui parallélise les agrégations - peut-être Cassandra avec Hive/Pig sur le dessus?

Pensées?

Répondre

0

À ce stade, Cassandra + Spark est un candidat probable. Dans un monde pur de Cassandra, vous pouvez (en théorie) créer un mappage manuel de tous les attributs S possibles aux objets de données, puis charger ceux via via app et process (où le nom de l'attribut S est la clé de partition , la valeur de l'attribut S est la clé de clustering, et l'ID de l'objet de données lui-même est une autre clé de clustering, de cette façon vous pouvez parcourir rapidement tous les objets avec l'ensemble d'attributs S).

Ce n'est pas incroyablement sexy, mais pourrait être fait pour fonctionner.