MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Các phương pháp hay nhất về NoSQL

Tôi nghĩ rằng hiện tại, toàn bộ ý tưởng về kho lưu trữ dữ liệu NoSQL và khái niệm về cơ sở dữ liệu tài liệu rất mới và khác với những ý tưởng đã được thiết lập nhằm thúc đẩy lưu trữ quan hệ mà hiện tại có rất ít (nếu có) các phương pháp hay nhất.

Tại thời điểm này, chúng tôi biết rằng các quy tắc lưu trữ dữ liệu của bạn trong CouchDB (hoặc bất kỳ cơ sở dữ liệu tài liệu nào khác) khá khác với các quy tắc dành cho quan hệ. Ví dụ, có khá nhiều thực tế là việc bình thường hóa và hướng tới 3NF không phải là điều mà người ta nên phấn đấu. Một trong những ví dụ phổ biến là blog đơn giản.

Trong cửa hàng quan hệ, bạn sẽ có mỗi bảng cho "Bài đăng", "Nhận xét" và "Tác giả". Mỗi Tác giả sẽ có nhiều Bài viết, và mỗi Bài viết sẽ có nhiều Bình luận. Đây là một mô hình hoạt động đủ tốt và ánh xạ tốt trên bất kỳ DB quan hệ nào. Tuy nhiên, việc lưu trữ cùng một dữ liệu trong một docDB rất có thể sẽ khác. Bạn có thể sẽ có một bộ sưu tập các tài liệu Bài đăng, mỗi tài liệu sẽ có Tác giả và bộ sưu tập Nhận xét riêng được nhúng ngay vào. Tất nhiên đó có lẽ không phải là cách duy nhất bạn có thể làm và đó là một sự thỏa hiệp (bây giờ truy vấn cho một bài đăng rất nhanh - bạn chỉ thực hiện một thao tác và lấy lại mọi thứ), nhưng bạn không có cách nào để duy trì mối quan hệ giữa tác giả và bài đăng (vì tất cả đều trở thành một phần của tài liệu bài đăng).

Tôi cũng đã thấy các ví dụ sử dụng thuộc tính "type" (trong ví dụ CouchDB). Chắc chắn, đó có vẻ là một cách tiếp cận khả thi. Nó có phải là một trong những tốt nhất? Tôi không có manh mối. Chắc chắn trong MongoDB, bạn sẽ sử dụng các bộ sưu tập riêng biệt trong cơ sở dữ liệu, khiến cho thuộc tính type trở nên vô nghĩa. Tuy nhiên, trong CouchDB ... có lẽ đó tốt nhất. Các lựa chọn thay thế khác? Cơ sở dữ liệu riêng biệt cho từng loại tài liệu? Điều này có vẻ hơi rắc rối, vì vậy bản thân tôi sẽ nghiêng về giải pháp "loại". Nhưng đó chỉ là tôi. Có lẽ có điều gì đó tốt hơn.

Tôi nhận ra rằng tôi đã lan man khá nhiều ở đây và nói rất ít, rất có thể không có gì bạn chưa biết. Tuy nhiên, quan điểm của tôi là điều này - tôi nghĩ tùy thuộc vào chúng tôi để thử nghiệm với các công cụ chúng tôi có và dữ liệu chúng tôi đang làm việc và theo thời gian, những ý tưởng tốt sẽ được lan truyền và trở thành các phương pháp hay nhất. Tôi chỉ nghĩ rằng bạn đang hỏi hơi quá sớm trong trò chơi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể xác thực người dùng trong MongoDB 3.0.2 bằng kết nối java

  2. Làm thế nào để tải hình ảnh lên thư mục bằng nodejs và lưu đường dẫn vào mongodb?

  3. Làm thế nào để cài đặt mongoDB trên Windows?

  4. Tài liệu của MongoDB có ý nghĩa gì khi nói rằng các ObjectID có thể là duy nhất?

  5. tại sao tôi nhận được favicon.ico khi tôi đang sử dụng phương thức findOne cho các tuyến đường params nhanh?