Gần đây tôi đang khám phá Cơ sở dữ liệu NoSQL. Tôi cần một lời khuyên về cách lưu trữ dữ liệu theo cách tối ưu và hiệu quả nhất cho một vấn đề nhất định. Tôi đang nhắm MongoDB, bây giờ. Tuy nhiên nó phải giống với CouchDB.Tôi cần lời khuyên về cấu trúc NoSQL/MongoDb và dữ liệu/mô hình
giả sử chúng ta có những 3 mô hình:
Story:
id
title
User:
id
name
Vote:
id
story_id
user_id
Tôi muốn có thể yêu cầu các cơ sở dữ liệu các câu hỏi sau:
- Ai đã bình chọn cho chủ đề này?
- Người dùng này đã bỏ phiếu cho điều gì?
Tôi đang tham gia đơn giản khi làm việc với một DB quan hệ. Câu hỏi là, làm thế nào tôi nên lưu trữ dữ liệu cho các đối tượng đó để có hiệu quả nhất.
Ví dụ: nếu tôi lưu trữ đối tượng Bỏ phiếu dưới dạng phần phụ của Câu chuyện, bạn sẽ không dễ dàng nhận được thông tin - "Những gì người dùng đã bỏ phiếu cho".
Vâng, trên thực tế, tôi muốn lưu trữ thêm thông tin trong mô hình Bỏ phiếu. Ví dụ: created_at, ip, user_agent. Tôi có nên lưu trữ dữ liệu trong danh sách câu chuyện về bộ sưu tập của người dùng không? –
Bạn có thể lưu trữ các phiếu bầu dưới dạng một mảng các tài liệu phụ, mỗi câu như '{story_id: ..., created_at: ..., ip: ...}', v.v. Sau đó truy vấn trở thành 'find ({'stories) .story_id ': ...}) '. Bạn cũng có thể lập chỉ mục cho điều đó. – mdirolf
Tôi có một cơ sở dữ liệu khá lớn với một vài bản ghi M và sẽ kiểm tra kịch bản trên. –