2016-07-04 23 views
3

Ich bin Neuling zu Cassandra. Ich versuche, eine Tabelle in Cassandra zu entwerfen, die Daten von Facebook-Posts speichert.Wie man Facebook Posts in Cassandra modelliert

Es enthält

user_id,post_id,post_data,comments_details,likes_details, comments_count and likes_counts.

nahm ich user_id and Post_Id als Partitioning key

I Benutzerdefinierte Datentyp bin mit JSON-Daten zu speichern, die list of map types für comments_details Feld enthält

{ 
    "comments_details": [ 
    { 
     "created_time": "2016-06-29T09:05:06+0000", 
     "from": { 
     "name": "user_1", 
     "id": "14465295694" 
     }, 
     "message": "Hello How are you", 
     "can_remove": false, 
     "like_count": 1, 
     "user_likes": true, 
     "id": "174022481_674622404" 
    }, 
    { 
     "created_time": "2016-06-29T09:05:14+0000", 
     "from": { 
     "name": "user2", 
     "id": "144652387" 
     }, 
     "message": "hjhjh", 
     "can_remove": false, 
     "like_count": 0, 
     "user_likes": false, 
     "id": "17402248_6752892070" 
    } 
    ] 
} 

Ist dies der richtige Weg, um es in einer einzigen Tabelle zu tun oder Kann ich eine weitere Tabelle für comments_details und likes_details erstellen. Ich möchte auch keine Kommentare für diesen Beitrag zählen.

Bitte helfen ..

Antwort

2

Datenmodellierung in Cassandra hängt stark von den Fragen, die Sie am meisten ausführen möchten. Zuerst sollten wir über ein richtiges Datenmodell sprechen relativ zu eine bestimmte Reihe von Abfragen.

Here es gibt einen wirklich guten Artikel Ich schlage vor, wenn Sie gerade mit Cassandra angefangen haben. Es stellt ein automatisiertes Werkzeug zur Datenmodellierung vor, erklärt aber auch kurz und präzise die Grundprinzipien einer guten Datenmodellierung.

Im Allgemeinen möchten Sie, dass Ihre App ihre Datenanforderungen mit möglichst geringen Partitionszugriffen erfüllt. Wie Daten rot sind, spielt eine wichtige Rolle: Wenn die App beispielsweise hauptsächlich die neuesten Posts eines bestimmten Benutzers laden würde, würden wir zum Beispiel entscheiden, user_id als Partitionsschlüssel und das Post-Datum als Clustering-Schlüssel zu verwenden Holen Sie sich die neuesten n Posts mit einem einzigen Partitionszugriff. Ein weiterer zu berücksichtigender Aspekt ist der Kompromiss zwischen Flexibilität und Datenverteilung. Mit anderen Worten, betrachten Sie Ihre spezifischen Fragen und Zugriffsmuster, dann beginnen Sie von dort.

Verwandte Themen