2015-05-06 19 views
14

Tôi mới với khái niệm nosql, vì vậy khi tôi bắt đầu tìm hiểu PouchDB, tôi đã tìm thấy biểu đồ chuyển đổi này. Sự nhầm lẫn của tôi là, cách xử lý PouchDB nếu cho phép nói rằng tôi có nhiều bảng, có nghĩa là tôi cần tạo nhiều cơ sở dữ liệu không? Bởi vì từ sự hiểu biết của tôi trong pouchdb một cơ sở dữ liệu có thể lưu trữ rất nhiều tài liệu, nhưng một tài liệu có nghĩa là một hàng trong sql hoặc tôi hiểu lầm?Cấu trúc PouchDB

enter image description here

Trả lời

7

... không có nghĩa là tôi cần phải tạo ra nhiều cơ sở dữ liệu?

số

... một tài liệu có nghĩa là một hàng trong sql hoặc am i hiểu lầm?

Đúng vậy. Bảng SQL định nghĩa tiêu đề cột (tên và loại) - đó là các tên thuộc tính JSON của tài liệu.

Vì vậy, tất cả tài liệu (hàng) có cùng các thuộc tính (một "lược đồ" được gọi là) tương đương với bảng SQL của bạn. Bạn có thể có nhiều lược đồ khác nhau trong một cơ sở dữ liệu như bạn muốn (truy cập json-schema.org để lấy cảm hứng).

Cách yêu cầu riêng biệt? Tạo các khung nhìn CouchDB! Bạn có thể nhận tất cả/một số "hàng" của dữ liệu bảng (các tài liệu có cùng lược đồ) với một yêu cầu như bạn biết từ SQL.

Để viết chế độ xem đó dễ dàng, thuộc tính type rất phổ biến đối với tài liệu CouchDB. Tên đã biết của bạn từ bảng SQL có thể là loại của bạn như doc.type: "animal"

Tên chế độ xem của bạn có thể là animalByName hoặc animalByWeight. Phụ thuộc vào nhu cầu của bạn.

9

Câu trả lời cho câu hỏi này dường như đáng ngạc nhiên dưới dạng tài liệu. Trong khi @llabball rõ ràng đã đưa ra một câu trả lời khá, tôi không nghĩ rằng quan điểm luôn luôn là con đường để đi.

Như bạn có thể đọc here trong phần Khi không sử dụng bản đồ/giảm, Nolan giải thích rằng cho các ứng dụng đơn giản, chính là để lạm dụng_ids, và tận dụng sức mạnh của allDocs().

Nói cách khác, nếu bạn có hai loại riêng biệt (nói nghệ sĩ và album), thì bạn có thể thêm tiền tố id của từng loại để có được bộ dữ liệu có thể tìm kiếm dễ dàng. Ví dụ: _id: 'artist_name' & _id: 'album_title', sẽ cho phép bạn dễ dàng truy xuất các nghệ sĩ theo thứ tự tên.

Đặt dữ liệu theo cách này sẽ dẫn đến hiệu suất tốt hơn do không yêu cầu thêm chỉ mục và ít mã hơn. Tuy nhiên, rõ ràng, nếu yêu cầu dữ liệu của bạn phức tạp hơn, thì lượt xem là cách để đi.

0

Đôi khi kế hoạch nhiều cơ sở dữ liệu là một tùy chọn tốt, như cơ sở dữ liệu cho mỗi người dùng hoặc thậm chí là một cơ sở dữ liệu cho mỗi tính năng người dùng. Hãy xem this conversation trên danh sách gửi thư của CouchDB.