Tôi bắt đầu một dự án MongoDB chỉ dành cho các cú đá và là một cơ hội để tìm hiểu các lược đồ MongoDB/NoSQL. Nó sẽ là một ứng dụng trò chuyện trực tiếp và ngăn xếp bao gồm: Rails 3, Ruby 1.9.2, Devise, Mongoid/MongoDB, CarrierWave, Redis, JQuery.Cần tư vấn về Lược đồ MongoDB cho Ứng dụng trò chuyện. Nhúng vs Các tài liệu liên quan
Tôi sẽ xử lý riêng hàng đợi cuộc trò chuyện/tin nhắn trò chuyện trực tiếp. Bạn chưa chắc chắn cách thức, hoặc là Node.js, APE hoặc ứng dụng EventMachine tùy chỉnh. Nhưng đối với Mongo, tôi đang nghĩ để sử dụng nó cho mọi thứ khác trong ứng dụng, cụ thể là các bản ghi trò chuyện và bảng điểm lịch sử.
Câu hỏi của tôi là cách tốt nhất để thiết kế lược đồ như tất cả kinh nghiệm trước đây của tôi là với MySQL và lược đồ DB quan hệ. Và như một câu hỏi phụ, khi nào thì tốt nhất là chúng tôi nhúng tài liệu với các tài liệu liên quan.
Ứng dụng sẽ có:
- Nhiều tài khoản đó có nhiều phòng
- Nhiều phòng
- Nhiều người sử dụng mỗi phòng
- Danh sách phòng một người dùng được phép có trong
- Nhiều cuộc trò chuyện của người dùng trên mỗi phòng
- Nhật ký trò chuyện có thể tìm kiếm trên cơ sở mỗi phòng và cho mỗi người dùng
- tập tin đính kèm tập tin tùy chọn cho một cuộc trò chuyện trao
Với Mông Cổ (ít nhất là cuối cùng thời gian tôi đã kiểm tra) có một giới hạn tài liệu của 4MB, tôi không nghĩ rằng có một bộ sưu tập cho các phòng và lưu trữ tất cả chat room như các văn bản nhúng sẽ hoạt động rất tốt.
Từ những gì tôi đã suy nghĩ về cho đến nay, tôi đang nghĩ đến việc làm một cái gì đó như:
- Một bộ sưu tập cho các tài khoản
- Một bộ sưu tập cho phòng
- Mỗi phòng đều liên quan trở lại một tài khoản
- Tài liệu liên quan trong bộ sưu tập trò chuyện cho tất cả các tin nhắn trò chuyện trong phòng
- Tài liệu nhúng liệt kê tất cả người dùng hiện tại ông phòng
- Một bộ sưu tập cho người dùng
- Document Embedded liệt kê tất cả các phòng người dùng hiện tại
- Document Embedded liệt kê tất cả các phòng người dùng được phép có trong
- Bộ sưu tập cho các cuộc trò chuyện
- Mỗi cuộc trò chuyện liên quan trở lại phòng trong bộ sưu tập phòng
- Mỗi cuộc trò chuyện liên quan đến người dùng trong bộ sưu tập người dùng
- Tài liệu được nhúng với thông tin về tệp đính kèm được tải lên tùy chọn.
mối quan tâm chính của tôi là bao xa để tôi đi cho đến khi kết thúc này lên trông như một lược đồ quan hệ và tôi đánh bại mục đích? Có chắc chắn là có liên quan nhiều hơn nhúng đang xảy ra.
Một mối quan ngại khác là việc tham chiếu tài liệu liên quan chậm hơn nhiều so với việc truy cập tài liệu được nhúng mà tôi đã nghe.
Tôi muốn làm cho các truy vấn chung chung như:
- Hãy cho tôi tất cả các phòng cho một tài khoản
- Hãy cho tôi tất cả các cuộc trò chuyện trong phòng (hoặc lọc qua phạm vi ngày)
- Hãy cho tôi tất cả chat từ một người dùng cụ
- Hãy cho tôi tất cả các file được tải lên trong một căn phòng nhất định hoặc cho một org cho
- vv
Bất kỳ đề xuất nào về cách cấu trúc giản đồ hiệu quả theo cách có quy mô? Cảm ơn mọi người.
Bạn đã chọn hướng nào cuối cùng? Làm thế nào bạn xử lý toàn vẹn dữ liệu với các tài liệu liên quan trong Mongo? Bạn đã kết thúc có bất kỳ vấn đề toàn vẹn ngày với Mongo và nếu như vậy làm thế nào bạn có được xung quanh họ? –