나는 Azure가있는 새 초보자입니다! 목적은 RowKey에 저장된 시간 소인에 따라 행을 리턴하는 것입니다. 각 쿼리와 거래 비용이, 나는 성능을Azure 테이블 스토리지 - 쿼리간에 사용할 PartitionKey 및 RowKey 선택
을 거래/쿼리의 수를 최소화하면서 유지하려는 이들은 제안 된 파티션과 행 키 :
- 파티션 키 : TextCache_ (계정 ID) _ (ParentMessageId)
- 행 키 : (DateOfMessage) _ (의 MessageID)
전설 :
- 통해 AccountId는 - 정수
- ParentMessageId입니다 - 부모 messageId가 그 부모
- DateOfMessage 경우, 빈 존재하는 경우 - 메시지가 생성 된 날짜 - 형식은 DateTime.Ticks 될 것입니다. ToString ("D19")
- 의 MessageID - 메시지
> 또는 < DateOfMessage_MessageId의 고유 ID
제안 된 PartitionKeys 및 RowKeys를 통해 수행 할 수 있습니까?
즉 ..
var results = ctx.PartitionKey.StartsWith(TextCache_AccountId)
&& ctx.RowKey > (TimeStamp)_MessageId
둘째 (사이비 코드), I는 계좌 번호를 가지고, 오직이 하나의 쿼리를 통해 수행 할 수 있습니다, 처음 10 다시 돌아가려면이 경우
즉 .. (사이비 코드) 질문에 대한
var results = (
(
ctx.PartitionKey.StartsWith(TextCache_(AccountId1)) &&
&& ctx.RowKey > (TimeStamp1)_MessageId1)
)
||
(
ctx.PartitionKey.StartsWith(TextCache_(AccountId2)) &&
&& ctx.RowKey > (TimeStamp2)_MessageId2)
) ...
)
.Take(10)
knightpfhor에게 감사드립니다. 테이블 저장 장치에서 500 초/초의 속도로 스로틀 링을하는 것이 더 중요했습니다. AccountId의 패딩에 대해서는 생각하지 않았습니다. 확실히 필요합니다. 일부 테스트를 수행 할 것입니다 –
전역 제한이 전역이 아닌, 파티션별로 스로틀 제한이 있음을 알아 두는 것이 중요합니다. – knightpfhor
'TextCache_'에 대해서는이를 테이블 식별자로 추가했습니다. 두 테이블을 구별해야합니까? –