2013-06-02 40 views
5

MongoDB 2.4 có một tính năng mới mà tôi thấy mọi người xung quanh đang nói về, vì vậy đây là câu hỏi của tôi (xin lỗi nếu họ là đơn giản):Hashed Index là gì?

  • Liệu MongoDB quản lý chúng mà không chỉ định phím mảnh vỡ? hoặc quản trị viên có chọn khóa không?
  • Có bất kỳ rủi ro nào trong vấn đề Hostspot hay đĩa IO bị trễ do có từ Hash và băm là thứ gì đó ngẫu nhiên?
+1

Bạn vẫn cần phải xác định một phím, nó hashs, nội bộ (những gì MongoDB thấy) chìa khóa. Chỉ số băm được thiết kế để đặc biệt dừng vấn đề điểm nóng, là cách nó được xây dựng Tôi không thể không thấy bất kỳ vấn đề với nó chưa – Sammaye

+0

vậy tại sao không sử dụng từ đầu một MD5 chìa khóa bổ sung (một khóa), hoặc nó chỉ thêm lãng phí không gian? và điều này như tôi đọc, nó là đau đớn cho đĩa đọc, vì nó là ngẫu nhiên và không được lưu giữ trong bộ nhớ? –

+1

Bởi vì nó nặng hơn việc tìm kiếm một khóa phân đoạn tuyệt vời, bạn chỉ cần băm khi bạn không có khóa phân mảnh tốt hơn so với khóa tăng dần đơn điệu như ObjectId – Sammaye

Trả lời

4

Ý tưởng là bạn có thể tạo chỉ mục băm trên trường mà bạn muốn sử dụng làm khóa phân phối để phân phối ghi sai (ví dụ: tăng đơn điệu và tạo điểm phát sóng trên các mục gần đây) .

Hàm băm được lưu trữ trong chỉ mục băm là 64 bit của băm md5 128 bit. Mục đích là để cho phép sharding bởi giá trị băm của khóa mà không cần ứng dụng cần biết về cơ chế băm.

Bạn có thể tìm thêm thông tin về vấn đề này ở đây: http://docs.mongodb.org/manual/core/sharded-cluster-internals/#sharding-hashed-shard-key-internals

+0

cảm ơn bạn, về điều này "Đối với khối lượng công việc nơi nhận phạm vi tài liệu quan trọng hơn (tức là tìm tài liệu gần đây từ tất cả người dùng), các lựa chọn khác của khóa phân đoạn có thể phù hợp hơn". http://blog.mongodb.org/post/47633823714/new-hash-based-sharding-feature-in-mongodb-2-4 –

+2

tùy thuộc vào loại truy vấn bạn sẽ thực hiện. Nếu một phần lớn trong số đó là bởi giá trị shardkey đơn (theo id) thì bạn tốt, hoặc nếu một số hoặc đủ của chúng là thuộc tính khác (được lập chỉ mục). Trường hợp có vấn đề sẽ là nếu bạn luôn truy vấn bằng "bản ghi trong phạm vi của id này cho id này" - điều đó sẽ không thể sử dụng chỉ mục băm. –

+0

và những gì về '_id' kể từ mongodb thêm chỉ mục chúng tự động, nó sẽ thêm một chỉ mục shard cho chúng quá tự động? –