Khóa phân đoạn băm MongoDB
Những gì tôi hiểu rằng chỉ cần sử dụng {ts. 1} vì khóa phân đoạn sẽ trợ giúp trong truy vấn của tôi nhưng sẽ không trợ giúp khi chèn Show Vì tôi cũng đang chèn hơn 1000 tài liệu mỗi phút nên tôi cũng cần các phần chèn được phân phối tốt Do đó, hàm băm (ts) là tùy chọn tốt hơn ở đây, nhưng sau đó các truy vấn phạm vi của tôi sẽ không nhanh, đây cũng là thứ tôi cần Vì vậy, những gì tôi hiểu từ đề xuất của bạn, tốt hơn là sử dụng khóa ghép có khóa phân đoạn của tôi Vì vậy, một khóa như {ts. 1, pn. 1, không. 1, chị. 1} sẽ là cách để thực hiện? Vì hầu hết các thuộc tính này sẽ được sử dụng với ts khi truy vấn dữ liệu Ngoài ra, vui lòng cho tôi biết nếu trường hợp này xảy ra thì các thuộc tính khác như (pn, un, ss) có cần phải có trong tất cả các tài liệu không Điều gì sẽ xảy ra nếu chúng bị thiếu (có thể) trong một số tài liệu. Vì vậy, khi chúng bị thiếu và vẫn được sử dụng như một phần của khóa phân đoạn phức hợp, chúng có gây ra sự cố nào không? Vì vậy, vâng, ban đầu tôi dự định chỉ sử dụng ts làm khóa phân đoạn, nhưng có vẻ như đây không phải là một tùy chọn ở đây Bạn chọn khóa phân đoạn khi phân đoạn bộ sưu tập. Mỗi bản ghi chứa một khóa phân đoạn và khóa phân đoạn là một trường được lập chỉ mục hoặc các trường phức hợp được lập chỉ mục. Cơ sở dữ liệu MongoDB phân phối dữ liệu theo các khối khác nhau theo khóa phân đoạn và phân phối các khối đồng đều giữa các phân đoạn. Để phân chia khối dữ liệu theo khóa phân đoạn, cơ sở dữ liệu MongoDB sử dụng hai phương thức phân đoạn. sharding dựa trên phạm vi và sharding băm Bảng 1 Phân loại khóa Shard Loại khóa mảnh Sự miêu tả Kịch bản ứng dụng Bảo vệ dựa trên phạm vi Phân đoạn dựa trên phạm vi liên quan đến việc chia dữ liệu thành các phạm vi liền kề được xác định bởi các giá trị khóa phân đoạn. Bảo vệ dựa trên phạm vi là phương pháp bảo vệ mặc định nếu không có tùy chọn nào khác được chỉ định Điều này cho phép các truy vấn hiệu quả khi đọc các tài liệu đích trong một phạm vi liền kề. Tuyến phân phối xác định đoạn dữ liệu nào lưu trữ dữ liệu được yêu cầu và chuyển tiếp yêu cầu đến phân đoạn tương ứng Nên sử dụng khi khóa phân đoạn có số lượng thẻ cao với tần số thấp và giá trị khóa phân đoạn không thay đổi đơn điệu băm nhỏ Bảo vệ băm đã băm sử dụng chỉ mục đã băm để phân vùng dữ liệu trên cụm được chia sẻ của bạn và để tạo các khối Phân đoạn băm cung cấp phân phối dữ liệu đồng đều hơn trên cụm phân đoạn Giá trị băm cho phép dữ liệu được phân phối ngẫu nhiên trong mỗi đoạn và do đó được phân phối ngẫu nhiên trong các phân đoạn khác nhau Nếu các giá trị khóa phân đoạn có số lượng thẻ cao hoặc thay đổi đơn điệu hoặc có số lượng lớn các giá trị khác nhau, thì phân đoạn băm là một lựa chọn lý tưởng Khi bạn phân đoạn một bộ sưu tập, khóa phân đoạn và các giá trị của khóa phân đoạn là bất biến. Nếu bạn cần sửa đổi khóa phân đoạn của tài liệu, bạn phải xóa tài liệu đó. Sau đó sửa đổi khóa phân đoạn và chèn lại tài liệu Khóa phân đoạn không hỗ trợ chỉ mục mảng, chỉ mục văn bản, chỉ mục địa lý và chỉ mục không gian Sharding dựa trên phạm vi
Sharding băm
|