Đối với mục đích thảo luận, hãy xem xét một kịch bản FourSapes.
Kịch bản
Các thực thể:
- Người dùng
- Nơi
Các mối quan hệ:
- Checkins: người dùng <-> địa điểm, nhiều đến nhiều
- Bạn bè: người dùng <-> người dùng, nhiều đến nhiều
Thiết kế cơ sở dữ liệu
Đây rất có thể sẽ có lỗi, xin vui lòng chỉ ra chúng.
RDBMS
Những cái bàn:
- Người dùng
- Nơi
- Checkins (ngã ba)
- Bạn bè (ngã ba)
Ưu điểm:
- CAP: tính nhất quán, sẵn có
Nhược điểm:
- CAP: dung sai phân vùng, còn gọi là shending
- sơ đồ = cấu trúc không linh hoạt
- nhân rộng kém?
Đồ thị
Các đối tượng:
- Người dùng
- Nơi
Các cạnh:
- Bạn bè: Người dùng <-> Người dùng
- Đăng ký: Người dùng -> Địa điểm
- chứa dấu thời gian
Ưu điểm:
- CAP: tính nhất quán, sẵn có?
- schemaless, các đối tượng và các cạnh dễ dàng thay đổi
- biểu đồ truy vấn ngang, ví dụ:
- phân cụm
- tìm nhóm bạn
- tìm nhà hàng thích bởi những người tương tự
- bất kỳ truy vấn phổ biến / hữu ích khác?
- phân cụm
Nhược điểm:
- CAP: dung sai phân vùng?
Tài liệu / Đối tượng
3 cơ sở dữ liệu riêng biệt?
- Người dùng
- danh sách bạn bè
- Checkin
- dấu thời gian
- người sử dụng
- địa điểm
- Nơi
Ưu điểm:
- CAP: sẵn có, dung sai phân vùng
- schemaless, đối tượng dễ biến đổi
Nhược điểm:
- CAP: tính nhất quán
Câu hỏi
Đối với hồ sơ, họ đã kết thúc bằng MongoDB. Ngoài tất cả những dấu hỏi ở trên:
- Tôi không chắc làm thế nào để thực hiện một cơ sở dữ liệu tài liệu.
- Làm thế nào để cơ sở dữ liệu tài liệu đạt được dung sai phân vùng?
- Để có được một lần đăng nhập của người dùng, tôi giả sử thao tác sẽ phân tích tất cả các lần đăng nhập và lọc siêu dữ liệu cho tên người dùng (map + filter). Hiệu suất phân tích hơn 1.000.000 tài liệu cho mỗi người dùng sẽ cực kỳ kém. Tôi cho rằng đây không phải là hành vi chính xác?
- Những pro / cons khác là gì?