내가 그러나 내가 쉽게 두 가지를 허용 최적의 솔루션 알아 내려고 노력하고있어 개체의 수백만을 저장하는 윈도우 Azure 테이블 스토리지를 사용하고 있습니다 :윈도우 Azure 페이징 대형 데이터 집합 솔루션
1)에 대한 검색을 엔티티는 해당 엔티티를 검색하고 해당 엔티티의 양쪽 엔티티 중 적어도 (pageSize) 엔티티의 수를 지정합니다.
2) 해당 엔티티의 양 쪽 엔티티가 (pageSize) 이전 링크가 표시되면 시작 또는 끝에 도달 할 때까지 계속됩니다.
3) 순서가 나는 각 컨테이너는 시스템에서 고유로에 PartitionKey는 사용자가 제공 한 제목이 될 것이라고 결정했습니다
시간의 역순이다. 새로운 날짜 (-
패드 (새 날짜 (100000000 * 86400000) .getTime() : 대신 C#을의 자바 스크립트로 변환
http://blog.smarx.com/posts/using-numbers-as-keys-in-windows-azure
은 다음과 같습니다 RowKey 스티브 마르크스의 lexiographical 알고리즘) .getTime(), 19) + "_"+ uuid()
uuid()는 guid를 반환하는 javascript 함수이며 pad는 길이가 19 자까지 0을 추가합니다.
PK RK
TEST 0008638662595845431_ecf134e4-b10d-47e8-91f2-4de9c4d64388
TEST 0008638662595845432_ae7bb505-8594-43bc-80b7-6bd34bb9541b
TEST 0008638662595845433_d527d215-03a5-4e46-8a54-10027b8e23f8
TEST 0008638662595845434_a2ebc3f4-67fe-43e2-becd-eaa41a4132e2
이 패턴은 위의 소수점 숫자 3을 만족 목록의 맨 위에 삽입마다 새로운 개체 수 있습니다 : 그래서 시스템의 레코드는 다음과 같이 보인다.
시스템에서 새 레코드를 추가하는 좋은 방법은 RowKey의 전반부, 즉 0008638662595845431_ 부분을 살펴보고 더 크거나 작게 비교하는 메커니즘을 만들 것이라고 생각했습니다. 이미 발견 된 항목. 즉 내가 지금처럼 쿼리를 할 것 즉시 0008638662595845431 전에 행 얻을 :
var tableService = azure.createTableService();
var minPossibleDateTimeNumber = pad(new Date(-100000000*86400000).getTime() - new Date().getTime(), 19);
tableService.getTable('testTable', function (error) {
if (error === null) {
var query = azure.TableQuery
.select()
.from('testTable')
.where('PartitionKey eq ?', 'TEST')
.and('RowKey gt ?', minPossibleDateTimeNumber + '_')
.and('RowKey lt ?', '0008638662595845431_')
.and('Deleted eq ?', 'false');
을 반환 결과가 1000보다 큰과 푸른 나에게 연속 토큰을 제공하는 경우를 다음 나는 마지막 항목을 기억하고 생각 RowKey 즉 숫자 부분 0008638662595845431입니다. 이제 다음 쿼리는 시작 값 등으로 기억 된 값을 갖게됩니다.
Windows Azure Node.Js SDK를 사용하고 있으며 언어는 javascript입니다.
누구나이 접근법에 잡았다 고 볼 수 있습니까?
감사합니다. lucifure, 올바른 순차 키가 트릭을 수행합니다. 순차적 키를 관리하기 위해 DB를 지불해야하는 것보다리스 BLOB 메커니즘을 찾고 있습니다 ... 건배 –