Untuk angka yang Anda sebutkan, saya pikir semua alternatif harus berfungsi (baca: Anda akan dapat menyelesaikan analisis Anda dalam waktu yang wajar). Saya merekomendasikan desain yang dapat menghasilkan hasil yang jauh lebih cepat.
Seperti yang dijawab sebelumnya, secara umum postgresql lebih cepat daripada mongo, beberapa kali lebih dari 4 kali lebih cepat. Lihat misalnya:
http://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-outperforms-mongodb-and-ushers-new-developer-reality
Anda mengatakan bahwa Anda tertarik untuk meningkatkan kinerja bergabung. Saya berasumsi bahwa Anda tertarik untuk menghitung kesamaan di antara entitas (misalnya, pos, penulis) sehingga Anda akan terutama bergabung dengan tabel itu sendiri (misalnya, melalui pos atau penulis) dan agregat.
Tambahkan ke fakta bahwa setelah memuat awal database Anda hanya akan dibaca, apa yang membuat masalah sangat cocok untuk mengindeks penggunaan. Anda tidak akan membayar untuk pembaruan indeks karena Anda tidak akan memilikinya dan saya kira Anda memiliki penyimpanan ekstra untuk indeks.
Saya akan menggunakan postgres dan menyimpan data dalam dua tabel:
buat posting tabel (integer post_id, url varchar (255), integer author_id);
- Muat data dan kemudian buat indeksnya. - Itu akan menyebabkan pemuatan yang lebih cepat dan indeks yang lebih baik mengubah posting tabel menambahkan kunci primer posts_pk constraint (post_id); buat indeks post_author pada posting (author_id);
buat komentar tabel (integer comment_id, integer post_id, integer author_id, comment varchar (255)); ubah komentar tabel tambahkan constraint comments_pk primary key (comment_id); buat indeks comment_author pada komentar (author_id); buat indeks comment_post pada komentar (post_id);
Kemudian Anda dapat menghitung kesamaan penulis berdasarkan komentar dalam kueri seperti pilih m. author_id sebagai m_author_id, a. author_id sebagai a_author_id, hitung (m.post_id berbeda) sebagai posting dari komentar sebagai m gabung komentar sebagai grup menggunakan (post_id) oleh m.author_id, a. author_id
Jika Anda tertarik tokenzing kata-kata dalam komentar untuk nlp, tambahkan tabel lain untuk itu tetapi ingat bahwa itu akan meningkatkan volume data Anda secara signifikan. Biasanya lebih baik tidak mewakili seluruh tokenization dalam database.