Für die Zahlen, die Sie erwähnen, sollten meiner Meinung nach alle Alternativen funktionieren (lesen Sie: Sie können Ihre Analyse in angemessener Zeit abschließen). Ich empfehle ein Design, das zu deutlich schnelleren Ergebnissen führen kann.
Wie bereits erwähnt, ist postgresql im Allgemeinen schneller als mongo, manchmal mehr als viermal schneller. Siehe zum Beispiel:
http://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-outperforms-mongodb-and-ushers-new-developer-reality
Sie sagten, dass Sie daran interessiert sind, die Leistung bei Joins zu verbessern. Ich gehe davon aus, dass Sie daran interessiert sind, Ähnlichkeiten zwischen den Entitäten (z. B. Post, Autor) zu berechnen, sodass Sie die Tabelle hauptsächlich selbst (z. B. nach Post oder Autor) und aggregieren.
Hinzu kommt, dass Ihre Datenbank nach dem ersten Laden schreibgeschützt ist, was das Problem sehr gut für die Indexnutzung geeignet macht. Sie zahlen nicht für die Indexaktualisierung, da Sie keine haben und ich denke, Sie haben den zusätzlichen Speicher für den Index.
Ich hätte postgres verwendet und die Daten in zwei Tabellen gespeichert:
Tabellenbeiträge erstellen (post_id integer, url varchar (255), author_id integer);
- Laden Sie Daten und erstellen Sie dann die Indizes. - Dies führt zu einem schnelleren Laden und besseren Indizes, wenn Tabellenbeiträge geändert werden. Fügen Sie den Primärschlüssel posts_pk (post_id) hinzu. Index post_author für Beiträge erstellen (author_id);
Tabellenkommentare erstellen (comment_id-Ganzzahl, post_id-Ganzzahl, author_id-Ganzzahl, Kommentar varchar (255)); Tabellenkommentare ändern Constraint-Kommentar hinzufügen_pk Primärschlüssel (comment_id); Erstelle einen Index comment_author für Kommentare (author_id); Erstelle einen Index comment_post für Kommentare (post_id);
Dann können Sie die Autorenähnlichkeit basierend auf Kommentaren in Abfragen wie select m berechnen. author_id als m_author_id, a. author_id als a_author_id, zähle (eindeutige m.post_id) als Beiträge aus Kommentaren als m verbinde Kommentare als using (post_id) -Gruppe von m.author_id, a. author_id
Wenn Sie daran interessiert sind, die Wörter im Kommentar für nlp zu token, fügen Sie eine weitere Tabelle hinzu. Beachten Sie jedoch, dass dadurch das Datenvolumen erheblich erhöht wird. In der Regel ist es besser, nicht die gesamte Tokenisierung in der Datenbank darzustellen.