Tôi có bộ sưu tập Cosmos DB với nhiều phân vùng dựa trên ID thiết bị. Tôi thường xuyên sử dụng các trường hợp yêu cầu truy xuất tài liệu gần đây nhất bằng một ID thiết bị cụ thể. Tôi hiện đang sử dụng các chức năng SELECT TOP 1
sẵn trong DocumentDB API như hình dưới đây để thực hiện điều này:Cosmos DB (DocumentDB API): Cách hiệu quả để truy vấn tài liệu gần đây nhất bằng ID phân vùng?
SELECT TOP 1 *
FROM c
WHERE c.deviceId = 5
ORDER BY c.timeStamp DESC
Cách tiếp cận này kết quả trong tăng RU/s tiêu thụ và giảm hiệu suất như bộ sưu tập và phân vùng cá nhân phát triển về kích thước, như người ta mong đợi. Như một phương thuốc tạm thời cho vấn đề này, tôi đã bổ sung thêm nơi khoản để giới hạn phạm vi truy vấn bởi dấu thời gian:
SELECT TOP 1 *
FROM c
WHERE c.deviceId = 5
AND c.timeStamp >= 1506608558 --timestamps are unix/epoch based to optimize indexing
AND c.timeStamp <= 1506694958
ORDER BY c.timeStamp DESC
Tôi muốn biết nếu có một cách tốt hơn để chọn tài liệu mới nhất của id phân vùng, khi thêm mệnh đề where where này có thể dẫn đến kết quả không mong đợi hoặc bị thiếu.
Cảm ơn @Mr Slim, tôi có thể kết thúc đi tuyến đường này, nhưng tôi hy vọng có một cách tiếp cận khác mà sẽ cung cấp việc đọc mới nhất mà không cần phải duy trì bộ sưu tập bổ sung có trạng thái này. –
Chúc may mắn. Nếu bạn tìm thấy một giải pháp thay thế, vui lòng đăng bài ở đây vì tôi muốn thấy một cách tiếp cận khác. –