2012-03-28 3 views
1

Ich bin auf der Suche nach einer Anwendung neu zu programmieren, um Spikes in Tweets besser zu behandeln. Ich ziehe für die Datenbanklösung zu Heroku und MongoDB (entweder MongoLab oder MongoHQ) um.High-Volume-MongoDB mit Twitter-Streaming-API, Ruby on Rails, Heroku-Setup

Während bestimmter Nachrichtenereignisse könnte das Tweet-Volumen auf 15.000/Sekunde ansteigen. Normalerweise parse ich bei jedem Tweet den Tweet und speichere verschiedene Daten wie Benutzerdaten usw. Meine Idee ist es, die rohen Tweets in einer separaten Sammlung zu speichern und einen separaten Prozess zu verwenden, der rohe Tweets sammelt und analysiert. Das Ziel hier ist, wenn es eine massive Spitze in den Tweets gibt, meine Anwendung nicht versucht, alle diese zu analysieren, aber im Wesentlichen die rohen Tweets in einer anderen Ansammlung zurückstaut. Wenn das Volume langsamer wird, kann der Prozess den Rückstand im Laufe der Zeit beheben.

Meine Frage ist dreifach:

  1. Kann MongoDB diese Art von Volumen mit einer Rate von 15.000 Tweets pro Sekunde in Bezug auf Einsätze in eine Sammlung handhaben?

  2. Irgendeine Idee auf dem besseren Setup: MongoHQ oder MongoLab?

  3. Irgendwelche Rückmeldungen zum gesamten Setup?

Vielen Dank!

+0

Ein bisschen spät auf diesem, aber ein [neuer Blogbeitrag] (http://blog.hartleybrody.com/asynchronous/) erklärt, wie eine Methode * log now, process later * mit RabbitMQ funktioniert. –

Antwort

0
  1. Der Schreibvolumen dass es hängt von vielen Faktoren behandelt - Hardware, Indizes, Größe jedes Dokument, usw. Ihre beste Wette in der Umgebung zu testen, das Sie verwenden planen. Wenn die Anforderungen der Schreiblast die Kapazität eines einzelnen Mongo-Servers übersteigen, können Sie immer nur mehrere Shards verwenden.

  2. Sie sind sehr ähnlich, aber es gibt einige Unterschiede in der Preisgestaltung und die tatsächliche Website-Design hat eine Reihe von Unterschieden. Es gibt einen Thread der Diskussion darüber hier: https://webmasters.stackexchange.com/questions/20782/mongodb-hosting-mongolab-vs-mongohq-vs-mongomachine

  3. Insgesamt scheint es Sinn zu machen. Klingt so, als würden Sie wahrscheinlich einige Details darüber ausarbeiten, wie Sie den Rückstand verarbeiten werden. Werden Sie es sein Polling durch periodisches Abfragen, Tweets aus dem Rückstand zu löschen, da es ihnen verarbeitet usw.

0

Völlig einverstanden auf der Notwendigkeit, dies zu testen. Im Allgemeinen kann mongo so viele Schreibvorgänge verarbeiten, aber in der Praxis hängt das von der Größe Ihrer Einrichtung, anderen Operationen, Indizes usw. ab.

Ich musste einen ähnlichen Ansatz zum Sammeln von Tonnen von Metrikdaten durchführen. Ich nutzte einen einfachen Event-Machine-Prozess, um eingehende Anfragen parallel zu akzeptieren und sie in einem einfachen Format zu speichern. Ein anderer Prozess würde diese Anfragen annehmen und sie an einen zentralen Server senden. Das Hauptziel war, sicherzustellen, dass keine Daten verloren gingen, wenn der zentrale Server ausgefallen war, aber es erlaubte mir auch, eine Drosselungslogik einzusetzen, so dass die Spitzen in den Daten das System nicht überwältigen würden.

Ich würde interessiert sein zu sehen, wie dies für Sie preislich funktioniert, im Gegensatz zu einem vps wie Linode. (Ich bin ein großer Heroku-Fan, aber mit bestimmten Architekturen kann es schnell teuer werden)