고객이 메시지를 게시하는 Azure 테이블이 있는데 한 테이블에 수백만 개의 메시지가있을 수 있습니다. 지난 10 분 내에 메시지를 게시하는 가장 빠른 방법을 찾고 싶습니다 (웹 페이지를 새로 고치는 빈도수). 파티션 키만 인덱싱되었으므로 메시지가 파티션 키 (예 : "2009-06-15T13 : 45 : 30.0900000"Azure 테이블의 최신 항목을 쿼리하는 가장 빠른 방법은 무엇입니까?
과 같은 ISO8601 날짜 형식의 문자열)로 게시 된 날짜 & 시간을 사용한다는 아이디어를 가지고 놀았습니다.예 의사 코드 : 다음
var message = "Hello word!";
var messagePartitionKey = DateTime.Now.ToString("o");
var messageEntity = new MessageEntity(messagePartitionKey, message);
dataSource.Insert(messageEntity);
,이 같은 마지막 10 분 이내에 게시 된 메시지를 쿼리 (다시 안된 의사 코드) :
// Get the date and time 10 minutes ago
var tenMinutesAgo = DateTime.Now.Subtract(new TimeSpan(0, 10, 0)).ToString("o");
// Query for the latest messages
var latestMessages = (from t in
context.Messages
where t.PartitionKey.CompareTo(tenMinutesAgo) <= 0
select t
)
그러나 이것은으로 잘 이동합니다 색인? 또는 전체 테이블 스캔이 발생합니까? 누구나이 일을 더 잘 할 수 있을까요? 나는 각 테이블 항목에 타임 스탬프가 있음을 알고 있지만 인덱싱되지 않으므로 내 용도로는 너무 느릴 것입니다.
사이드 노트로, 좀 더 일반적인 것을 파티션 키로 사용해야합니다. 귀하의 게시물이 속한 곳과 같습니다. http://msdn.microsoft.com/en-us/library/windowsazure/hh508997.aspx –
같은 컴퓨터가 삽입과 쿼리를 모두 수행하고 있습니까? 그렇지 않은 경우 클라이언트 간의 잠재적 인 클럭 왜곡을 고려해야합니다. –