Gibt es Bibliotheken oder Komponenten, die Griff Speicherung und den schnellen Abruf von nutzergenerierten Inhalten?

StackOverflow https://stackoverflow.com/questions/2148711

Frage

Betrachtet man den Fall eine große und aktive Nutzerbasis aufweist, wo jeder Benutzer ein Profilbild speichern will und einige zusätzlichen Bilder oder andere Artefakte, gibt es Bibliotheken oder Frameworks, die für einfache Lagerung und Abfrage solcher Daten erlauben?

Eine Referenzimplementierung von Facebook wäre Haystack Foto Infrastructure .

Die folgenden Eigenschaften sind wichtig

  • sollten Datenspeicher skalieren gut: Hinzufügen von Ressourcen für die Anwendung transparent sein sollte, den Speicher mit ( ähnlich Frage hatte eine Antwort mit Bezug auf LinkedIn Voldemorts ).
  • Die Fähigkeit, einige Meta-Daten neben den Daten hinzuzufügen, gespeichert werden.
  • Meta-Daten können mit einer guten Leistung abgefragt werden (zum Beispiel in konfigurierbaren Index wie Lucene / Solr gespeichert).
  • Schnell Schlüssel-basierten Zugriff und einige Zwischen Caching-Schicht

Alle Empfehlungen für Bibliotheken oder Frameworks, die leicht in eine Java-Web-Anwendung integriert werden können, sind willkommen.

Update : danke für die ersten paar Antworten. Ich habe mehr ins Detail zu gehen, welche Art von Antworten erwartet. Tobu Antwort , wenn auch nicht java verwandt ist sehr gut (habe gerade nach oben). Es ist möglich, eine Lösung mit einer Kombination aus Dateisystemzugriff und einer DB und fügen Sie einige Schicht Cachen zwischen zu implementieren, aber ich halte es für eine Verschwendung von Zeit, wenn jemand mehr qualifizierte als ich bereits entwickelt hat, umgesetzt und eine bessere laufen Lösung. Etwas basiert auf einer Lösung mit DB oder JCR-Implementierungen zugrunde liegt, ist eine gute Passform, aber die andere Infrastruktur Umsetzung ist nicht, was ich tun möchte.

War es hilfreich?

Lösung

Wir haben gute Erfahrungen gemacht mit der Medien-Repository von Fedora Commons ( http: //www.fedora- commons.org/ ), das Ihnen erlaubt, Media Assets zusammen mit ihren zugehörigen Metadaten zu speichern. Wir hatten keine Probleme mit der Skalierbarkeit oder Anpassung noch war es schwierig, die darunter liegende Speicherschicht mit einem dreifachen Speicher auszutauschen (wenn dies in Ihrem Fall erforderlich wäre). Wenn Sie indizieren Ihre Daten mit Solr benötigen, können Sie ein vordefinierten Meta-Datenfeld verwenden ( „RELS-EXT“) zum Speichern von XML-basierten Daten.

Andere Tipps

MogileFS ist, was LiveJourna Anwendungen. Nicht besonders Java though.

Ich fühle mich Ihre Anforderungen sind ziemlich nah an, was eine Datenbank bereitstellt. So stellen Sie sicher, dass die Tabellen-Design entspricht Ihre Bedürfnisse (zum Beispiel, um die großen Datenmengen wie Bilder in einer separaten Tabelle aus den Metadaten haben könnte).

Alle Ihre Anforderungen abgedeckt werden würden, einschließlich der Caching-Schicht in der Datenbank (und Sie könnten eine zusätzliche Caching-Schicht in Ihrer Anwendung nach Bedarf, das wäre wahrscheinlich auch Ihre Anwendung für den Rest verwendet werden).

Apache Jackrabbit ist eine vollständig konforme Implementierung des Content Repository für Java Technology API (JCR, angegeben in JSR 170 und 283). Aber es hat einige Performance-Probleme (zumindest in der 2 Jahre alten Version I use), bester Weg, sie zu überwinden repliziert statische Bilder auf einen Webserver. (Über WebDAV, davfs und rsync)

Es hängt von der Quantifizierung der „große und aktive Nutzerbasis“ ...

80% der Websites könnte einfach einen NoSQL-Schema freien Ansatz wie y_serial verwenden:

y_serial.py Modul :: Lager Python-Objekte mit SQLite

"Serialisierung + persistance :: in wenigen Zeilen Code, komprimiert und mit Anmerkungen versehen Python-Objekte in SQLite, dann sie durch Schlüsselwörter ohne SQL zeitlich später abrufen Am nützlichsten.‚Standard‘Modul für eine Datenbank zum Speichern von Schema-weniger Daten . "

http://yserial.sourceforge.net

Wenn die Fotos und Artefakte pro Benutzer sind unter 2M komprimiert wird, sollte die Leistung gut sein.

Für die restlichen 20% Fall Nutzung, importieren man leicht die Daten aus yserial in Cassandra - die jetzt von Facebook, Digg und Twitter angenommen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top