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

Trường danh sách có thể là khóa phân đoạn trong MongoDB không?

Dựa trên một số thông tin phản hồi mà tôi nhận được dường như khẳng định rằng không thể phân đoạn bằng cách sử dụng trường danh sách làm khóa phân đoạn, tôi muốn minh họa cách sử dụng trường hợp này có thể được phân đoạn bằng cách sử dụng các hạn chế của MongoDB:

Đối tượng ban đầu:

widget:
{
    primary_key: '2389sdjsdafnlfda'

    categories: ['hair', 'nails', 'dress']
    colors:     ['red', 'white']

    #All the other fields in the document that don't need to be queried upon: 
    ...
    ...
}

Lớp dữ liệu chia đối tượng thành nhiều đối tượng con trỏ dựa trên số phần tử trong trường được chọn cho khóa phân đoạn:

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'hair',
    colors:     ['red', 'white']
}

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'nails',
    colors:     ['red', 'white']
}

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'dress',
    colors:     ['red', 'white']
}

Giải thích:

  • Trường categories bây giờ có thể là khóa phân đoạn trong MongoDB.
  • Đối tượng ban đầu bây giờ sẽ được lưu trữ trong kho khóa-giá trị. Các truy vấn đối với dữ liệu trong MongoDB sẽ trả về một đối tượng con trỏ sẽ được sử dụng để lấy đối tượng từ kho khóa-giá trị.
  • Các truy vấn trên dữ liệu MongoDB sẽ chỉ đạt được một phân đoạn.
  • Các phần chèn vào dữ liệu MongoDB sẽ chạm vào bao nhiêu phân đoạn cũng như có các phần tử trong danh sách, trong hầu hết các trường hợp, chỉ một tập hợp con nhỏ trong tổng số phân đoạn sẽ bị ảnh hưởng.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sharding MongoDB, nó sẽ cân bằng lại như thế nào khi thêm các nút mới?

  2. Làm thế nào để thực hiện một upert trong Mongoose khi tìm kiếm một tài liệu được nhúng?

  3. Tối ưu hóa hiệu suất giản đồ MongoDB

  4. Trong Mongoose Model.find () và Model.find (). Execute () cho cùng một kết quả. Vậy tại sao phải sử dụng Model.find (). Execute ()?

  5. MongoDb:Lợi ích của việc sử dụng ObjectID so với chuỗi chứa Id?