2011-11-17 7 views
0

Azure Storage Tables에 관한 두 가지 간단한 질문이 있습니다.Azure 스토리지 테이블, 쿼리 및 쿼리 처리 관련 질문

  1. 스토리지 테이블을 쿼리하는 데 사용할 수있는 기술 개요가 있습니까? LINQ에 대한 예제를 발견했습니다. .NET 프레임 워크에 대안이 있습니까?

  2. "쿼리 처리"는 어디에서 발생합니까? 예 : SQL을 사용할 때 SQL 서버에 복잡한 쿼리를 보내면이 서버는이를 평가하기 시작하여 결과를 클라이언트에 반환합니다. 테이블 저장 영역과 동일합니까? 아니면 클라이언트가 데이터를로드하고 처리 자체를 수행해야합니까?

답변

4

# 1의 경우 테이블 저장소를 쿼리하기 위해 .NET에서 사용되는 WCF 데이터 서비스 클라이언트 라이브러리를 살펴보십시오. 손으로 URL을 구성하려는 경우 LINQ를 피할 수 있지만 LINQ는 사람들이 .NET 코드에서 테이블 저장소를 쿼리하는 데 가장 많이 사용됩니다.

# 2의 경우 테이블 저장소는 매우 적은 작업 (기본적으로 필터 만)을 지원합니다. 정렬, 그룹화 등을 수행해야하는 경우 먼저 로컬에서 데이터를 가져온 다음 거기에서 쿼리해야합니다. 상황이 발생하는 곳은 작성한 코드에 따라 다릅니다. 쿼리가 윈도우 Azure 테이블 스토리지로 전송됩니다

mytable.Select(e => e.PartitionKey == "foo").OrderBy(e => e.SomeTime).Take(10)

때문에 테이블이 정렬을 지원하지 않기 때문에 실패 : 예를 들어, 다음과 같은 오류가 발생합니다. 그러나, 다음은 작업 (하지만 매우 비효율적)됩니다

mytable.Select(e => e.PartitionKey == "foo").ToList().OrderBy(e => e.SomeTime).Take(10)

이것은 로컬 아래로 당겨지는 (이하 "foo는"파티션 키와 모든) 전체 결과 집합가 발생합니다 .ToList 원인 때문에 실행되는 쿼리. 그런 다음 모든 것이 메모리에 저장되면 정렬되고 상위 10 개 항목이 반환됩니다.

+0

감사합니다. 이 새로운 NoSQL 데이터베이스에 대해 일반적인 작업량이 적습니까, 아니면 Azure Storage가 기능상의 예외입니까? – ceran

관련 문제