2009-08-14 17 views
0

Je travaille sur un projet impliquant la surveillance d'un grand nombre de flux rss/atom. Je veux utiliser hbase pour le stockage de données et j'ai quelques problèmes pour concevoir le schéma. Pour la première itération, je veux être en mesure de générer un flux agrégé (les 100 derniers messages de tous les flux dans l'ordre chronologique inverse).Agrégateur de flux utilisant hbase. Comment concevoir le schéma?

Actuellement, je me sers deux tableaux:

Feeds: column families Content and Meta : raw feed stored in Content:raw 
Urls: column families Content and Meta : raw post version store in Content:raw and the rest of the data found in RSS stored in Meta 

je besoin d'une sorte de table d'index pour l'alimentation agrégée. Comment devrais-je construire cela? Est-ce que hbase est un bon choix pour ce genre d'application?

Mise à jour de la question: Est-il possible (dans hbase) de concevoir un schéma qui pourrait répondre efficacement à des requêtes comme celle ci-dessous?

SELECT data FROM Urls ORDER BY date DESC LIMIT 100 

Répondre

2

Peter Rietzler réponse sur la liste de courrier HBase utilisateur:

Salut

Dans notre projet, nous la gestion des événements listes où nous avons des exigences similaires. Nous commandons par en choisissant nos clés de rangée à bon escient. Nous utilisons la clé suivante pour nos événements (ils doivent être commandés par le temps en ordre croissant ordre):

eventListName/yyyyMMddHHmmssSSS-000 [-111]

où eventListName est le nom de la liste des événements et 000 est un identifiant de l'instance à trois chiffres pour désambiguïser entre différentes instances en cours d'exécution de l'application , et -111 est facultatif pour des événements de désambiguïsation qui se sont produits en la même milliseconde sur une instance.

Nous insérons en plus et artifical ligne pour chaque jour avec l'id

eventListName/yyyyMMddHHmmssSSS

Cela nous permet de numériser un document à début de chaque jour sans recherche dans la liste des événements.

Vous devez être conscient du fait que si vous avez une charge très élevée de inserts, alors toujours un serveur région HBase est encartage occupé pendant que les autres sont au repos ... si c'est un problème pour vous, vous devez trouver différentes clés pour votre usage.

Vous pouvez également utiliser une table d'index HBase mais je n'ai aucune expérience avec elle et je me souviens d'un e-mail sur la liste de diffusion que ce doublerait toutes demandes car l'API serait d'abord rechercher la table d'index, puis la table originale ??? (Corrigez-moi s'il vous plaît si ce n'est pas correct ...)

Cordialement, Peter

Merci Peter.

Questions connexes