2009-08-14 7 views
0

Ich arbeite an einem Projekt, bei dem eine große Anzahl von RSS/Atom-Feeds überwacht wird. Ich möchte hbase für die Datenspeicherung verwenden und habe einige Probleme beim Entwerfen des Schemas. Für die erste Iteration möchte ich in der Lage sein, einen aggregierten Feed zu generieren (die letzten 100 Posts aus allen Feeds in umgekehrter chronologischer Reihenfolge).Feed Aggregator mit HBase. Wie gestaltet man das Schema?

Derzeit bin ich mit zwei Tabellen:

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 

ich für die aggregierten Feed irgendeine Art von Indextabelle benötigen. Wie soll ich das aufbauen? Ist HBase eine gute Wahl für diese Art von Anwendung?

Frage Update: Ist es möglich (in hbase), ein Schema zu entwerfen, das auf Anfragen wie die unten aufgeführten effizient antworten könnte?

SELECT data FROM Urls ORDER BY date DESC LIMIT 100 

Antwort

2

Peter Rietzler Antwort auf hbase-User-Mail-Liste:

Hallo

In unserem Projekt sind wir Umgang Ereignis Listen, in denen wir ähnliche Anforderungen haben. Wir bestellen per unsere Zeilenschlüssel mit Bedacht. Wir verwenden den folgenden Schlüssel für unsere Veranstaltungen (sie sollten in aufsteigender Reihenfolge von Zeit zu bestellen):

eventListName/yyyyMMddHHmmssSSS-000 [-111]

wo eventListName ist der Name der Ereignisliste und 000 ist eine dreistellige Instanz ID zur Unterscheidung zwischen verschiedenen laufenden Instanzen von Anwendung, und -111 ist optional zu disambiguate Ereignisse, die in die gleiche Millisekunde in einer Instanz aufgetreten sind.

Wir zusätzlich einfügen und artifical Zeile für jeden Tag mit der ID

eventListName/yyyyMMddHHmmssSSS

Diese uns Scannen bei den Beginn eines jeden Tages ohne Durchsuchen der Ereignisliste starten können.

Sie müssen sich der Tatsache bewusst sein, dass wenn Sie eine sehr hohe Belastung von Einsätze haben, dann immer ein hbase Region Server ausgelastet Einfügen ist, während die andere frei sind ... wenn das ein Problem für Sie müssen verschiedene Schlüssel für Ihren Zweck finden. eine E-Mail auf der Mailing Liste, dass dies doppelt alle Anfragen

Sie könnten auch eine HBase Index Tabelle verwenden, aber ich habe keine Erfahrung damit und ich erinnere mich, weil die API würde zuerst Nachschlag den Tabellenindex und dann die Originaltabelle ??? (Bitte korrigieren Sie mich wenn das nicht stimmt ...

)

Mit freundlichen Grüßen Peter

Danke Peter.