Đối với những con số bạn đề cập, tôi nghĩ rằng tất cả các lựa chọn thay thế đều hoạt động (đọc: bạn sẽ có thể hoàn thành phân tích của mình trong thời gian hợp lý). Tôi đề nghị về một thiết kế có thể dẫn đến kết quả nhanh hơn đáng kể.
Như đã trả lời trước đây, nói chung postgresql nhanh hơn mongo, nhanh hơn gấp 4 lần. Xem ví dụ:
http://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-outperforms-mongodb-and-ushers-new-developer-reality
Bạn nói rằng bạn quan tâm đến việc cải thiện hiệu suất trong các lần tham gia. Tôi giả sử rằng bạn quan tâm đến việc tính toán sự tương đồng giữa các thực thể (ví dụ: bài đăng, tác giả) vì vậy bạn sẽ chủ yếu tham gia vào bảng với chính nó (ví dụ: theo bài đăng hoặc tác giả) và tổng hợp.
Thêm vào đó là thực tế là sau khi tải ban đầu, cơ sở dữ liệu của bạn sẽ chỉ được đọc, điều gì làm cho vấn đề rất phù hợp với việc sử dụng chỉ mục. Bạn sẽ không trả tiền để cập nhật chỉ mục vì bạn sẽ không có bất kỳ và tôi đoán bạn có thêm dung lượng cho chỉ mục.
Tôi sẽ sử dụng postgres và lưu trữ dữ liệu trong hai bảng:
tạo bài viết bảng (số nguyên post_id, url varchar (255), số nguyên Author_id);
- Tải dữ liệu và sau đó tạo các chỉ số. - Điều đó sẽ dẫn đến tải nhanh hơn và các chỉ số tốt hơn thay đổi các bài đăng trong bảng thêm khóa chính ràng buộc post_pk (post_id); tạo chỉ mục post_ Tác giả trên các bài đăng (Author_id);
tạo bình luận bảng (số nguyên comment_id, số nguyên post_id, số nguyên Author_id, bình luận varchar (255)); thay đổi nhận xét bảng thêm ràng buộc khóa_pk khóa chính (comment_id); tạo chỉ mục bình luận về tác giả trên bình luận (Author_id); tạo chỉ mục bình luận_post trên bình luận (post_id);
Sau đó, bạn có thể tính toán độ tương tự của tác giả dựa trên các nhận xét trong các truy vấn như chọn m. tác giả_id là m_ Author_id, a. Author_id với tư cách là a_ Author_id, đếm (phân biệt m.post_id) dưới dạng bài đăng từ các bình luận khi m tham gia bình luận dưới dạng nhóm sử dụng (post_id) bởi m. mượt_id_id, a. tác giả_id
Trong trường hợp bạn quan tâm đến việc mã hóa các từ trong bình luận cho nlp, hãy thêm một bảng khác cho điều đó nhưng hãy nhớ rằng nó sẽ tăng khối lượng dữ liệu của bạn một cách đáng kể. Thường thì tốt hơn là không thể hiện toàn bộ mã thông báo trong cơ sở dữ liệu.