적용 대상: 테이블
Table 및 Azure Table Storage용 Azure Cosmos DB 비교
API for Table이 Azure Table Storage 동작과 동일하지 않은 경우는 언제인가요?
Azure Cosmos DB API for Table을 사용하여 테이블을 만들려는 Azure Table Storage에서 들어오는 사용자가 알고 있어야 하는 몇 가지 동작 차이점이 있습니다.
Azure Cosmos DB API for Table은 보장된 성능을 보장하기 위해 예약된 용량 모델을 사용합니다. 하지만 용량을 사용하지 않더라도 테이블이 생성되는 즉시 해당 용량에 대한 요금을 지불해야 합니다. Azure Table Storage에서는 사용하는 용량에 대해서만 요금을 지불합니다. Azure Table Storage가 10초 SLA를 제공하는 반면 API for Table이 99번째 백분위수로 10ms 및 15ms 쓰기 SLA를 제공할 수 있는 이유는 바로 이 때문입니다. 하지만 이로 인해 요청이 없는 빈 테이블이라도 API for Table 테이블을 사용하면 용량을 보장하기 위한 비용은 Azure Cosmos DB에서 제공한 SLA에서 모든 요청을 처리하는 데 사용할 수 있습니다.
API for Table에서 반환한 쿼리 결과는 Azure Table 스토리지에 있는 대로 파티션 키/행 키 순서로 정렬되지 않습니다.
행 키는 최대 255바이트일 수 있습니다.
일괄 처리에 최대 2MB를 포함할 수 있습니다.
CORS는 현재 지원되지 않습니다.
Azure Table Storage의 테이블 이름은 대/소문자를 구분하지 않지만 Azure Cosmos DB API for Table에 위치합니다.
이진 필드 같은 정보 인코딩을 위한 일부 Azure Cosmos DB의 내부 형식은 현재 생각만큼 효율이 좋지는 않습니다. 따라서 데이터 크기에 예기치 않은 제한이 발생할 수 있습니다. 예를 들어, 데이터를 인코드하면 데이터 크기가 커지기 때문에 현재는 테이블 엔터티 1Meg 전체를 이진 데이터 저장에 사용할 수 없습니다.
Azure Cosmos DB는 엔터티 속성 이름을
ID
rid
etag
예약하며ResourceId
현재 지원되지 않습니다.TableQuery TakeCount는 1000으로 제한되지 않습니다.
REST API 측면에서 Azure Table Storage(테이블용 Azure Cosmos DB는 아님)는 다음 엔드포인트/쿼리 옵션을 지원합니다.
Rest 메서드 Rest 엔드포인트/쿼리 옵션 문서 URL 설명 Table Storage에서 지원됨 API for Table에서 지원됨 GET
,PUT
/?Restype=service@comp=properties
테이블 서비스 속성 설정 및 테이블 서비스 속성 가져오기 이 엔드포인트는 CORS 규칙, 스토리지 분석 구성 및 로깅 설정을 설정하는 데 사용됩니다. CORS는 현재 지원되지 않습니다. 또한 분석 및 로깅은 Azure Storage 테이블과 다르게 Azure Cosmos DB에서 처리됩니다. 예 아니요 OPTIONS
/<table-resource-name>
실행 전 CORS 테이블 요청 Azure Cosmos DB에서 현재 지원하지 않는 CORS의 일부입니다. 예 아니요 GET
/?Restype=service@comp=stats
테이블 서비스 통계 가져오기 주 데이터베이스와 보조 데이터베이스 간에 데이터를 신속하게 복제하는 방법을 제공합니다. 복제가 쓰기의 일부이기 때문에 Azure Cosmos DB에서 필요하지 않습니다. 예 아니요 GET
,PUT
/mytable?comp=acl
테이블 ACL 가져오기 및 테이블 ACL 설정 SAS(공유 액세스 서명)을 관리하는 데 사용되는 저장 액세스 정책을 가져오고 설정합니다. 예 아니요 Azure Cosmos DB API for Table은 ATOM이 아닌 JSON 형식만을 지원합니다.
특히 .NET SDK의 경우 Azure Cosmos DB가 현재 지원하지 않는 일부의 클래스 및 메서드가 있습니다.
- CloudTableClient 클래스
\ServiceProperties
\ServiceStats
- CloudTable 클래스
SetPermissions
GetPermissions
- CloudTableClient 클래스
기타 질문과 대답
API for Table을 사용하려면 새 SDK가 필요하나요?
아니요, 기존 스토리지 SDK가 여전히 작동합니다. 그러나 대부분의 경우 더 뛰어난 성능을 가진 지원을 받기 위해 최신 SDK를 가져오는 것이 좋습니다. Azure Cosmos DB API for Table 소개에서 사용 가능한 언어 목록을 참조하세요.
API for Table에 연결하는 데 사용해야 하는 연결 문자열은 무엇인가요?
연결 문자열은 다음과 같습니다.
DefaultEndpointsProtocol=https;AccountName=<AccountNamefromCosmosDB;AccountKey=<FromKeysPaneofCosmosDB>;TableEndpoint=https://<AccountName>.table.cosmosdb.azure.com
Azure Portal의 연결 문자열 페이지에서 연결 문자열을 가져올 수 있습니다.
API for Table의 .NET SDK에서 요청 옵션에 대한 구성 설정을 재정의하려면 어떻게 할까요?
일부 설정은 CreateCloudTableClient 메서드에서 처리되고 다른 설정은 클라이언트 애플리케이션의 appSettings 섹션에서 app.config를 통해 처리됩니다. 구성 설정에 대한 자세한 내용은 Azure Cosmos DB 기능을 참조하세요.
기존 Azure Table Storage SDK를 사용하는 고객에 대한 변동 사항이 있나요?
없음. 기존 Azure Table Storage SDK를 사용하는 기존 고객 또는 신규 고객에 대한 변동 사항은 없습니다.
API for Table과 함께 사용하기 위해 Azure Cosmos DB에 저장된 테이블 데이터를 보려면 어떻게 해야 하나요?
Azure Portal을 사용하여 데이터를 찾을 수 있습니다. 또한 API for Table 코드 또는 다음 답변에 언급된 도구를 사용할 수 있습니다.
Table API에는 어떤 도구를 사용할 수 있나요?
Azure Storage Explorer를 사용할 수 있습니다.
이전에 지정된 형식으로 연결 문자열을 가져오는 유연성이 있는 도구에서 새 API for Table을 지원할 수 있습니다. 테이블 도구 목록은 Azure Storage Client 도구 페이지에 나와 있습니다.
제어되는 작업에 대한 동시성이 있나요?
예, 낙관적 동시성은 ETag 메커니즘 사용을 통해 제공됩니다.
엔터티에 대해 OData 쿼리 모델이 지원되나요?
예, API for Table은 OData 쿼리 및 LINQ 쿼리를 지원합니다.
동일한 애플리케이션에서 Azure Table Storage와 Azure Cosmos DB API for Table에 나란히 연결할 수 있나요?
예, 각각 연결 문자열을 통해 자체 URI를 가리키는 CloudTableClient의 두 가지 개별 인스턴스를 만들어 연결할 수 있습니다.
기존 Azure Table Storage 애플리케이션을 이 제품으로 마이그레이션하려면 어떻게 할까요?
AzCopy가 지원됩니다.
예를 들어 'n'GB에서 시작한 데이터가 시간이 흘러 1TB까지 증가하게 되면 이 서비스의 경우 스토리지 크기를 어떻게 확장할 수 있나요?
Azure Cosmos DB는 수평적 확장을 통해 무제한 스토리지를 제공하도록 설계되어 있습니다. 이 서비스는 스토리지를 모니터링하여 효율적으로 증가시킬 수 있습니다.
API for Table 서비스를 모니터링하려면 어떻게 해야 하나요?
API for Table 메트릭 창에서 요청 및 스토리지 사용량을 모니터링할 수 있습니다.
필요한 처리량은 어떻게 계산하나요?
용량 추정기를 사용하여 작업에 필요한 TableThroughput을 계산할 수 있습니다. 자세한 내용은 요청 단위 및 데이터 스토리지 예측을 참조하세요. 일반적으로 엔터티를 JSON으로 나타내고 작업 수를 제공할 수 있습니다.
API for Table SDK를 에뮬레이터에서 로컬로 사용할 수 있나요?
현재는 불가능합니다.
기존 애플리케이션을 API for Table에서 사용할 수 있나요?
예, 동일한 API가 지원됩니다.
API for Table 기능을 사용할 생각이 없는데 기존의 Azure Table Storage 애플리케이션을 SDK로 마이그레이션해야 하나요?
아니요, 어떤 종류의 중단도 없이 기존 Azure Table Storage 자산을 만들고 사용할 수 있습니다. 그러나 테이블용 API를 사용하지 않는 경우 자동 인덱스, 추가 일관성 옵션 또는 전역 배포를 활용할 수 없습니다.
둘 이상의 Azure 지역에 걸쳐 API for Table의 데이터 복제를 추가하려면 어떻게 해야 하나요?
Azure Cosmos DB 포털의 전역 복제 설정을 사용하여 애플리케이션에 적합한 지역을 추가할 수 있습니다. 전역적으로 분산된 애플리케이션을 개발하려면 읽기 대기 시간을 단축하기 위해 로컬 지역에 PreferredLocation 정보가 설정된 애플리케이션을 추가해야 합니다.
API for Table의 계정에 대한 기본 쓰기 지역을 변경하려면 어떻게 해야 하나요?
Azure Cosmos DB의 전역 복제 포털 창에서 지역을 추가한 다음 필요한 지역에 장애 조치(Failover)를 추가할 수 있습니다. 지침은 다중 지역 Azure Cosmos DB 계정을 사용하여 개발을 참조하세요.
데이터 분산 시 대기 시간을 단축하려면 기본 읽기 하위 지역을 어떻게 구성해야 하나요?
로컬 위치에서 쉽게 읽으려면 app.config 파일에서 PreferredLocation 키를 사용합니다. 기존 애플리케이션에 대해 LocationMode가 설정된 경우 API for Table은 오류를 throw합니다. API for Table이 app.config 파일에서 이 정보를 선택하므로 해당 코드를 제거합니다.
API for Table의 일관성 수준에 대해 어떻게 생각해야 하나요?
Azure Cosmos DB는 일관성, 가용성 및 대기 시간 간을 매우 논리적으로 절충합니다. Azure Cosmos DB는 API for Table 개발자에게 5가지 일관성 수준을 제공하므로 테이블 수준에서 올바른 일관성 모델을 선택하고 데이터를 쿼리하는 동안 개별적으로 요청할 수 있습니다. 클라이언트가 연결되면 일관성 수준을 지정할 수 있습니다. CreateCloudTableClient의 consistencyLevel 인수를 통해 수준을 변경할 수 있습니다.
API for Table은 읽기 및 쓰기에 짧은 대기 시간 읽기와 제한된 부실 일관성을 기본적으로 제공합니다. 자세한 내용은 일관성 수준을 참조하세요.
기본적으로 Azure Table Storage는 지역 내에서 강력한 일관성을 제공하고 보조 위치에서 최종 일관성을 제공합니다.
Azure Cosmos DB API for Table은 Azure Table Storage보다 더 많은 일관성 수준을 제공하나요?
예, Azure Cosmos DB의 분산된 특성에서 활용하는 방법에 대한 자세한 내용은 일관성 수준을 참조하세요. 일관성 수준에 대한 보장을 제공하기 때문에 확신을 가지고 사용할 수 있습니다.
전역 분산이 가능한 경우 데이터 복제에 얼마나 걸리나요?
Azure Cosmos DB는 로컬 지역에서 지속적으로 데이터를 적용하고 몇 밀리초 이내에 즉시 다른 지역에 데이터를 밀어넣습니다. 이 복제는 데이터 센터의 RTT(왕복 시간)에만 종속됩니다. Azure Cosmos DB의 전역 분산 기능에 대한 자세한 내용은 Azure Cosmos DB: Azure에서 전역적으로 분산 데이터베이스 서비스를 참조하세요.
읽기 요청 일관성 수준을 변경할 수 있나요?
Azure Cosmos DB를 사용하면 컨테이너 수준에서 일관성 수준을 설정할 수 있습니다. .NET SDK를 사용하면 app.config 파일에서 TableConsistencyLevel 키에 대한 값을 제공하여 컨테이너 수준을 변경할 수 있습니다. 가능한 값은 강력, 제한된 부실, 세션, 일관적인 접두사 및 최종입니다. 자세한 내용은 Azure Cosmos DB의 조정 가능한 데이터 일관성 수준을 참조하세요. 주요 개념은 테이블 설정보다 높게 요청 일관성 수준을 설정할 수 없다는 점입니다. 예를 들어 테이블에 대한 일관성 수준을 최종으로 설정하고 요청 일관성 수준을 강력으로 설정할 수 없습니다.
지역에서 작동이 중지된 경우 API for Table은 장애 조치(Failover)를 어떻게 처리하나요?
테이블용 API는 Azure Cosmos DB의 전역적으로 분산된 플랫폼을 사용합니다. 애플리케이션이 데이터 센터 가동 중지 시간을 견뎌낼 수 있도록 하려면 Azure Cosmos DB 포털 다중 하위 지역 Azure Cosmos DB 계정을 사용하여 개발에서 계정에 대해 하위 지역을 하나 이상 사용하도록 설정합니다. 포털 다중 하위 지역 Azure Cosmos DB 계정을 사용하여 개발을 사용하여 하위 지역의 우선 순위를 설정할 수 있습니다.
계정에 대해 원하는 개수의 지역을 추가하고 장애 조치(Failover) 우선 순위를 지정하여 장애 조치할 수 있는 위치를 제어할 수 있습니다. 데이터베이스를 사용하려면 애플리케이션도 제공해야 합니다. 이렇게 하면 고객에게 가동 중지 시간이 발생하지 않습니다. 최신 .NET 클라이언트 SDK는 자동으로 호밍되지만 다른 SDK는 그렇지 않습니다. 즉, 중단된 지역을 검색하여 새 지역으로 자동으로 장애 조치할 수 있습니다.
백업에 API for Table을 사용할 수 있나요?
예, Table용 API는 백업에 Azure Cosmos DB의 플랫폼을 사용합니다. Backup은 자동으로 수행됩니다. 자세한 내용은 Azure Cosmos DB로 자동 온라인 백업 및 복원을 참조하세요.
API for Table은 기본적으로 엔터티의 모든 특성을 인덱싱하나요?
예, 기본적으로 엔터티의 모든 특성이 인덱싱됩니다. 자세한 내용은 Azure Cosmos DB: 인덱싱 정책을 참조하세요.
그렇다면 쿼리를 충족하기 위해 인덱스를 둘 이상 만들 필요가 없다는 의미인가요?
예, Azure Cosmos DB API for Table에서는 스키마 정의 없이 모든 특성에 대한 자동 인덱싱을 제공합니다. 이 자동화 덕분에 개발자는 인덱스 만들기 및 관리보다 애플리케이션에 역량을 집중할 수 있습니다. 자세한 내용은 Azure Cosmos DB: 인덱싱 정책을 참조하세요.
인덱싱 정책을 변경할 수 있나요?
예, 인덱스 정의를 제공하여 인덱싱 정책을 변경할 수 있습니다. 설정을 적절하게 인코딩 및 이스케이프해야 합니다.
인덱싱 정책은 데이터 탐색기의 포털에서만 설정할 수 있으며 변경하려는 특정 테이블로 이동한 다음 크기 조정 및 설정 인덱싱 정책으로> 이동하여 원하는 변경을 한 다음 저장합니다.
플랫폼인 Azure Cosmos DB에는 정렬, 집계, 계층 구조 등 많은 기능이 있는데, 이러한 기능이 API for Table에 추가될 계획이 있나요 ?
API for Table은 Azure Table Storage와 동일한 쿼리 기능을 제공합니다. 또한 Azure Cosmos DB는 정렬, 집계, 지리 공간적 쿼리, 계층 구조 및 다양한 기본 제공 함수도 지원합니다. 자세한 내용은 SQL 쿼리를 참조하세요.
API for Table에 대한 TableThroughput은 언제 변경해야 하나요?
다음 조건 중 하나가 적용된 경우 TableThroughput을 변경해야 합니다.
- ETL(추출, 변환 및 로드)을 수행하거나 짧은 시간 안에 수많은 데이터를 업로드하려고 합니다.
- 백 엔드의 컨테이너 또는 컨테이너 집합에서 추가 처리량이 필요합니다. 예를 들어 사용되는 처리량이 프로비전된 처리량보다 많은 경우 제한됩니다. 자세한 내용은 Azure Cosmos DB 컨테이너에 대한 처리량 설정을 참조하세요.
내 API for Table 테이블의 처리량을 늘리거나 줄일 수 있나요?
예, Azure Cosmos DB 포털의 배율 창을 사용하여 처리량의 크기를 조정할 수 있습니다. 자세한 내용은 처리량 설정을 참조하세요.
새로 프로비전된 테이블에 대해 기본 TableThroughput이 설정되나요?
예, app.config를 통해 TableThroughput을 재정의하지 않고 Azure Cosmos DB에서 미리 생성된 컨테이너를 사용하지 않는 경우 서비스는 처리량이 400인 테이블을 만듭니다.
Azure Table Storage 서비스의 기존 고객에 대한 가격 책정에 변동 사항이 있나요?
없음. 기존 Azure Table Storage 고객을 위한 가격에는 변동 사항이 없습니다.
API for Table의 가격은 어떻게 계산하나요?
가격은 할당된 TableThroughput에 따라 달라집니다.
API for Table 제안에서 테이블에 대한 속도 제한을 처리하려면 어떻게 할까요?
요청 속도가 기본 컨테이너 또는 컨테이너 세트에 대해 프로비전된 처리량의 용량을 초과하면 오류가 발생하고, SDK에서 다시 시도 정책을 적용하여 호출을 다시 시도합니다.
Azure Cosmos DB의 API for Table 제품을 활용하기 위해 PartitionKey 및 RowKey와 별도로 처리량을 선택해야 하는 이유는 무엇인가요?
사용자가 app.config 파일에서 또는 포털을 통해 기본 처리량을 제공하지 않으면 Azure Cosmos DB가 사용자의 컨테이너에 대해 기본 처리량을 설정합니다.
Azure Cosmos DB는 작업에 대한 상한을 사용하여 성능 및 대기 시간을 보장합니다. 이 보장은 엔진이 테넌트의 작업에 대한 거버넌스를 적용할 수 있는 경우 가능합니다. TableThroughput을 설정하면 플랫폼에서 이 용량을 예약하고 작업 성공을 보장하므로 보장된 처리량 및 대기 시간을 가져올 수 있습니다.
처리량 지정을 사용하면 처리량을 탄력적으로 변경하여 애플리케이션의 계절성을 활용하고, 처리량 요구 사항을 충족하고, 비용을 절감할 수 있습니다.
저는 데이터 저장 비용만 부담하면 되고 거의 쿼리하지 않기 때문에 Azure Table Storage가 저렴했습니다. 그런데 단일 트랜잭션을 수행하지도 않았고, 어떠한 것도 저장하지 않았는데도 Azure Cosmos DB API for Table 제품에 비용이 청구되는 것 같습니다. 설명해 주시기 바랍니다.
Azure Cosmos DB는 전역적으로 분산된 SLA 기반 시스템으로, 가용성, 대기 시간 및 처리량을 보장하도록 설계되었습니다. Azure Cosmos DB에서 처리량을 예약하는 경우 다른 시스템과 달리 처리량이 보장됩니다. Azure Cosmos DB는 보조 인덱스 및 글로벌 배포와 같이 고객이 요청한 더 많은 기능을 제공합니다.
Azure Table Storage에 데이터를 수집할 때 파티션이 가득 찼음을 나타내는 "할당량 가득 참" 알림을 받은 적이 없는데, API for Table을 사용하면 이 메시지가 나타냅니다. 이 제품이 현재 사용자를 제한하거나 기존 애플리케이션을 변경하도록 강제하나요?
Azure Cosmos DB는 SLA 기반 시스템으로, 대기 시간, 처리량, 가용성 및 일관성을 보장할 뿐만 아니라 무제한 확장을 제공합니다. 보장된 최고의 성능을 얻기 위해서는 데이터 크기 및 인덱스가 관리 및 확장 가능해야 합니다. 파티션 키당 엔터티 또는 항목 수에 대한 20GB 한도는 뛰어난 조회 및 쿼리 성능을 제공하도록 보장합니다. Azure Storage에 대해서도 애플리케이션이 원활하게 확장할 수 있도록 하려면 단일 파티션에 대한 모든 정보를 저장 및 쿼리하여 핫 파티션을 만들지 않는 것이 좋습니다.
그렇다면 API for Table에도 여전히 PartitionKey 및 RowKey가 필요한가요?
예. API for Table의 노출 영역이 Azure Table Storage SDK와 유사하기 때문에 파티션 키를 사용하면 데이터를 효율적으로 배포할 수 있습니다. 행 키는 파티션 내에서 고유합니다. 행 키는 반드시 존재해야 하며 표준 SDK에서와 같이 null일 수 없습니다. RowKey의 길이는 255바이트이고 PartitionKey의 길이는 1KB입니다.
API for Table의 오류 메시지로는 어떤 것이 있나요?
Azure Table Storage 및 Table용 Azure Cosmos DB는 동일한 SDK를 사용하므로 대부분의 오류는 동일합니다.
API for Table에서 많은 수의 테이블을 차례로 만들려고 하면 제한되는 이유는 무엇인가요?
Azure Cosmos DB는 SLA 기반 시스템으로, 대기 시간, 처리량, 가용성 및 일관성을 보장하며, 프로비전된 시스템이기 때문에 이러한 요구 사항을 보장하기 위해 리소스를 예약해 둡니다. 따라서 빠른 테이블 만들기 속도가 감지되고 제한됩니다. 테이블 만들기 속도를 살펴보고 분당 5 미만으로 낮추는 것이 좋습니다. API for Table은 프로비전된 시스템입니다. 프로비전하는 순간 비용을 지불하기 시작합니다.
SDK 또는 버그에 대한 피드백은 어떻게 제공할 수 있나요?
다음 방법 중 하나로 사용자 의견을 공유할 수 있습니다.
- Microsoft Q&A 질문 페이지
- 스택 오버플로. Stack Overflow는 프로그래밍 질문에 가장 적합합니다. 질문이 주제와 관련된 것인지 확인하고 질문에 대해 분명하고 답변할 수 있도록 가능한 한 자세하게 제공하세요.
보안
RBAC(역할 기반 액세스 제어)란?
RBAC(역할 기반 액세스 제어)는 기업 내 개별 사용자의 역할에 따라 컴퓨터 또는 네트워크 리소스에 대한 액세스를 규제하는 방법입니다. Azure Cosmos DB에서 RBAC는 사용자 및 애플리케이션에 대한 데이터 평면 액세스 권한을 부여하는 데 사용됩니다.
Azure Cosmos DB for Table에 대해 데이터 평면 역할 기반 액세스 제어를 사용하도록 설정할 어떻게 할까요? 있나요?
Azure Cosmos DB RBAC(네이티브 역할 기반 액세스 제어) 기능을 사용하여 사용자 및 애플리케이션에 대한 데이터 평면 액세스 권한을 부여합니다.