Was ist das in Reddit verwendete Cassandra-Datenbankschema?

9

Reddit migriert gerade seine Datenbank von PosgreSQL nach Apache Cassandra. Weiß jemand, welches Datenbankschema Reddit in Cassandra verwendet?

    
Calin-Andrei Burloiu 30.04.2012, 08:19
quelle

1 Antwort

-1

Ich kenne auch das genaue Reddit-Schema nicht, aber für das, was Sie archivieren möchten, sind Sie auf dem richtigen Weg und speichern eine Hierarchie von Kommentaren in einer dokumentbasierten Datenbank anstelle einer relationalen Datenbank. Ich würde empfehlen, ein Dokument für jeden Root-Kommentar zu behalten und dann alle Kinder (und Kinder der Kinder) zu diesem Kommentar hinzuzufügen.

In CouchDB und MongoDB können Sie JSON-Dokumente direkt speichern. In Cassandra würde ich den JSON als String speichern . Also wäre die Datenstruktur nur

%Vor%

und jeder root-comment-json-String würde folgendermaßen aussehen:

%Vor%

Zusätzlich können Sie der Struktur jedes Kommentars einen UserName, UserID, Timestamp, usw. hinzufügen.

Diese 'denormalisierte' Struktur macht die Abfragen sehr schnell im Vergleich zu einer normalisierten relationalen Struktur, wenn Sie VIELE Daten haben.

In jedem Fall müssen Sie sich um alle Ausnahmen kümmern, die passieren können, wenn Sie ein solches System für eine große Benutzer-Skala implementieren, z. Was passiert, wenn jemand auf Kommentar A mit Kommentar B antwortet, aber gleichzeitig (oder später) Kommentar A gelöscht wird.

Wenn Sie im Internet nach "hierarchischen Cassandra-Daten" suchen, finden Sie einige andere Ansätze, aber sie gehen alle auf Normalisierung zurück oder sind für eine "unendliche" Hierarchie nicht vollständig.

    
Kenyakorn Ketsombut 02.01.2014 06:03
quelle