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

Trường hợp cho chỉ số băm MongoDB

Ngoài các chỉ mục vô hướng (tăng dần, giảm dần), MongoDB cũng hỗ trợ các chỉ mục ‘băm’. Khi bạn sử dụng chỉ mục được băm trên một trường, MongoDB sẽ tính một giá trị băm của trường và lưu trữ băm trong chỉ mục. Các chỉ mục băm chỉ hỗ trợ so sánh bình đẳng và không hỗ trợ các truy vấn phạm vi và thường được sử dụng trong các trường hợp sharding.

Tạo chỉ mục băm MongoDB

Bạn có thể sử dụng cú pháp sau để tạo chỉ mục băm:

db.collection.ensureIndex({'field':'hashed'});

Bạn có thể tạo cả chỉ mục vô hướng và chỉ mục băm trên cùng một trường.

MongoDB Sharding

Thông thường, Sharding MongoDB được thực hiện bằng cách sử dụng phân vùng 'dựa trên phạm vi'. Trong cách tiếp cận này, mỗi phân đoạn được gán một dải giá trị của khóa phân đoạn. Nếu khóa phân đoạn tăng đơn điệu như dấu thời gian hoặc objectID, thì điều này đôi khi có thể dẫn đến phân đoạn 'nóng' vì các giá trị gần đây nhất luôn được chuyển đến cùng một phân đoạn.

Cách để giải quyết vấn đề này là sử dụng 'phân vùng dựa trên băm'. Một băm của khóa phân đoạn được tính toán và giá trị băm này được sử dụng để định tuyến đến một phân đoạn thay vì giá trị thực. Điều này giúp phân phối tải đồng đều trên tất cả các phân đoạn thay vì gửi tất cả dữ liệu mới nhất đến cùng một phân đoạn. Phân vùng dựa trên băm được thực hiện bằng cách sử dụng các chỉ mục được băm trên khóa phân đoạn của bạn. Để biết thêm thông tin, hãy tham khảo tài liệu sharding.

Ưu điểm và nhược điểm của chỉ mục băm

  • Ưu điểm

    Các chỉ mục băm có xu hướng nhỏ hơn các chỉ mục vô hướng vì chỉ một hàm băm của khóa được lưu trữ thay vì khóa đầy đủ. Ví dụ. Trong một thử nghiệm đơn giản với 100k tài liệu, chúng tôi đã thêm các chỉ mục băm và vô hướng trên một trường chuỗi - ‘fieldName’. Như được hiển thị bên dưới, chỉ mục băm có xu hướng nhỏ hơn đáng kể so với chỉ mục vô hướng:

    "indexSizes" : {
            "_id_" : 811008,
            "firstName_1" : 4415488,
            "firstName_hashed" : 1490944
    }
    
  • Nhược điểm

    Không hỗ trợ các truy vấn phạm vi. Nếu bạn chạy một truy vấn phạm vi trên một chỉ mục được băm, nó sẽ dẫn đến việc quét chỉ mục.

MongoDB Hash Indexes for Shards - Pro &ConsClick To Tweet

Ràng buộc lập chỉ mục băm

    1. Chỉ mục băm không hỗ trợ mảng.
    2. Chỉ mục băm không được là chỉ mục ghép.
    3. Bạn không thể thêm các ràng buộc duy nhất vào các chỉ mục được băm.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để định cấu hình AppArmor cho Bộ bản sao MongoDB?

  2. Các tùy chọn tìm kiếm toàn văn bản để thiết lập MongoDB

  3. Sử dụng toàn cầu JsonConverter trên một lớp không có thuộc tính

  4. Tính giá trị trung bình của các trường trong mảng / tài liệu được nhúng

  5. Không thể kết nối với MongoDB Atlas (queryTxt ETIMEOUT)