탄력적 테이블 만들기 및 편집
탄력적 테이블은 Microsoft Dataverse에서 관리하는 테이블입니다. 탄력적 테이블은 표준 테이블과 함께 제공되는 동일한 친숙한 사용자 경험 및 API와 함께 제공됩니다. 표준 테이블과 많은 측면 및 옵션을 공유하지만 Azure Cosmos DB에서 제공하는 고유한 기능을 제공합니다.
표준 테이블과 마찬가지로 탄력적 테이블은 Dataverse 데이터베이스 용량 사용에 포함됩니다.
탄력적 테이블에 대해 알아보려면 이 비디오를 시청하세요.
Dataverse 탄력적 테이블을 언제 고려해야 합니까?
탄력적 테이블은 대량의 데이터를 실시간으로 처리하도록 설계되었습니다. 탄력적 테이블을 사용하면 확장성, 대기 시간 또는 성능 문제 없이 대량의 데이터를 가져오고 저장하고 분석할 수 있습니다.
탄력적 테이블에는 유연한 스키마, 수평 확장 및 일정 기간 후 데이터 자동 제거를 위한 고유한 기능이 있습니다.
탄력적 테이블은 자동으로 확장되어 매시간 수천만 개의 행을 수집합니다. 백그라운드 프로세스는 IoT 신호를 수집하고 유지 관리 요구 사항을 예측하며 사전에 기술자를 예약할 수 있습니다.
Contoso가 수백만 명의 기존 고객을 보유한 소매업체인 시나리오를 고려하십시오. Contoso는 대규모 고객 데이터베이스를 보유하고 있으며 고객을 유지하면서 판매를 늘리고자 합니다. 이전 고객 기록을 기반으로 고객과 제품을 대상으로 하는 다양한 쿠폰으로 24시간 플래시 세일 이벤트를 진행하려고 합니다. 그들은 플래시 세일 캠페인당 필요한 쿠폰 수가 1억 개 이상일 것으로 추정했습니다. 마케팅 계획은 다양한 고객 세그먼트를 대상으로 여러 24시간 캠페인을 실행할 계획입니다.
Contoso의 마케팅 애플리케이션에 대한 요구 사항은 몇 시간 내에 최대 1억 개 이상의 쿠폰 세부 정보를 수집하고 시간당 수백만 개의 쿠폰을 읽고 고객에게 쿠폰을 보낼 수 있어야 한다는 것입니다.
탄력적 테이블은 이 높은 처리량 시나리오를 위해 자동으로 확장됩니다.
예를 들어 위의 시나리오에서 수백만 개의 레코드가 있는 쿠폰이라는 탄력적 테이블은 연락처(고객 정보) 및 제안(사용자 지정 표준 테이블)과 같은 Dataverse 표준 테이블과 연결할 수 있습니다. 탄력적 테이블은 표준 테이블과 분리되어 있으므로 전체 마케팅 애플리케이션의 성능에 부정적인 영향을 미치지 않습니다. 또한 탄력적 테이블(이 시나리오에서는 쿠폰)이 포함된 TTL(Time-to-Live) 기능을 통해 고정 기간 후 자동으로 데이터를 제거하고 스토리지 용량을 최적화할 수 있습니다.
다음과 같은 경우 탄력적 테이블을 사용합니다.
- 데이터가 비정형 또는 반정형이거나 데이터 모델이 지속적으로 변경될 수 있습니다.
- 자동 수평 확장이 필요합니다.
- 많은 양의 읽기 및 쓰기 요청을 처리해야 합니다.
다음과 같은 경우 표준 테이블을 사용합니다.
- 애플리케이션에 강력한 일관성이 필요합니다.
- 애플리케이션에는 관계형 모델링이 필요하고 테이블 전체에서 그리고 플러그 인 실행 단계 동안 트랜잭션 기능이 필요합니다.
- 애플리케이션에 복잡한 조인이 필요합니다.
테이블 선택은 애플리케이션의 특정 요구 사항을 기반으로 해야 합니다. 두 테이블 유형의 조합이 적절할 수 있습니다.
수평 확장 및 성능
비즈니스 데이터가 증가함에 따라 탄력적 테이블은 지정된 기간에 생성, 업데이트 또는 삭제된 레코드 수와 같은 스토리지 크기 및 처리량 모두에 대해 애플리케이션 워크로드를 기반으로 무제한 자동 확장성을 제공합니다.
비즈니스 시나리오에 매우 많은 양의 데이터 쓰기가 필요한 경우 애플리케이션 제작자는 Dataverse 다중 요청 API(예: CreateMultiple
, UpdateMultiple
및 DeleteMultiple
)를 사용하여 Dataverse 제한 한도 내에서 더 많은 처리량을 달성할 수 있습니다. 추가 정보: 개발자 가이드: 대량 작업 메시지 및 대량 작업 성능 최적화
데이터 자동 제거
TTL(Time to Live) 정책을 통해 리소스를 최적화하고 위험을 줄이면서 항상 최신의 정확한 정보로 작업할 수 있습니다. TTL 라이브 값은 레코드에서 초 단위로 설정되며 레코드가 마지막으로 수정된 시간의 델타로 해석됩니다.
JSON 열이 있는 유연한 스키마
탄력적 테이블을 사용하면 미리 정의된 스키마나 마이그레이션 없이 다양한 구조로 데이터를 저장하고 쿼리할 수 있습니다. 가져온 데이터를 고정 스키마에 매핑하기 위해 사용자 지정 코드를 작성할 필요가 없습니다. 추가 정보: 개발자 가이드: 탄력적 테이블의 JSON 열 쿼리 탄력적 테이블을 사용하면 사전 정의된 스키마나 마이그레이션 없이도 다양한 구조의 데이터를 저장하고 쿼리할 수 있습니다. 가져온 데이터를 고정 스키마에 매핑하기 위해 사용자 지정 코드를 작성할 필요가 없습니다. 추가 정보: 개발자 가이드: 탄력적 테이블의 JSON 열 쿼리
탄력적 테이블을 사용할 때 고려할 사항
탄력적 테이블은 대량의 요청을 대규모로 처리하는 데 적합하지만 다음과 같은 몇 가지 장단점이 있습니다.
- 탄력적 테이블은 다중 레코드 트랜잭션을 지원하지 않습니다. 이는 단일 요청 실행의 일부로 발생하는 여러 쓰기 작업이 서로 트랜잭션되지 않음을 의미합니다. 예를 들어 탄력적 테이블의
Create message
에 대한PostOperation
단계에 동기식 플러그 인 단계가 등록된 경우 플러그인의 오류는 Dataverse에서 생성된 레코드를 롤백하지 않습니다. 플러그인 전 유효성 검사는 기본 단계 전에 실행되기 때문에 여전히 예상대로 작동합니다. - 탄력적 테이블은 논리적 세션 내에서만 강력한 일관성을 지원합니다. 세션 컨텍스트 외부에서는 행에 대한 변경 사항이 즉시 표시되지 않을 수 있습니다. 추가 정보: 개발자 가이드: 일관성 수준
- 탄력적 테이블은 API를 사용하여 일반적으로 보기, 상세하게 찾기 또는 쿼리를 생성할 때 관련 테이블에 대한 필터를 지원하지 않습니다. 관련 테이블 열을 자주 필터링해야 하는 경우 기본 테이블 자체로 필터링해야 하는 관련 테이블의 열을 비정규화하는 것이 좋습니다. 고객 및 주소라는 두 개의 탄력적 테이블이 있는 소매업체를 고려하십시오. 한 고객이 여러 주소를 가지고 있습니다. 주소 테이블의 도시 값이 New York인 고객 테이블에서 모든 고객에 대한 쿼리 결과를 반환하려고 합니다. 이 예제에서는 고객 테이블을 쿼리할 때 관련 주소 테이블의 도시 열에 필터를 적용하려고 합니다. 탄력적 테이블에는 지원되지 않습니다. 이 작업을 수행하는 한 가지 방법은 모든 고객 도시 값이 고객 테이블 자체에 표시되도록 도시 열을 고객 테이블로 비정규화하는 것입니다.
탄력적 테이블 기능 지원
- API 다중 작업 (높은 처리량용), 대량 삭제 및 플러그인의 요청을 포함한 CRUD(만들기, 검색, 업데이트, 삭제) 작업.
- 관계:
- 일대다
- N 테이블이 표준 테이블인 경우 다대일
- 레코드 소유권, 변경 추적, 감사, 모바일 오프라인 및 Dataverse 검색.
- 파일 유형 특성이 있는 파일 열
고급 기능 지원
탄력적 테이블은 Dataverse 보안 모델을 준수합니다.
탄력적 테이블을 만들 때 다음을 설정할 수 있습니다.
- 사용자 또는 조직 소유
- 필드 수준 보안
탄력적 테이블에서 현재 지원되지 않는 기능
탄력적 테이블에서 현재 지원되지 않는 테이블 기능:
- 비즈니스 규칙
- 차트
- 비즈니스 프로세스 흐름
- Power BI용 Dataverse 커넥터 1개
- 표준 테이블에 대한 다대다(N:N) 관계
- 대체 키
- 중복 검색
- 계산 열 및 롤업 열
- 통화 열
- 쿼리의 열 비교
- 테이블 공유
- 복합 인덱스
- 캐스케이드 작업: 삭제, 상위 재지정, 할당, 공유, 공유 해제
- 조회 열 정렬
- 집계 쿼리:
attribute2
값을 기준으로 정렬하는 동안attribute1
의 고유 값- 여러 고유 항목이 있을 때 페이지 매김
- 여러 정렬 기준으로 구분
- 정렬 기준 및 그룹화 기준 모두
- 링크 엔터티를 기준으로 그룹화(왼쪽 우선 외부 조인)
- 고유한 사용자 소유 테이블
- 테이블 연결
- 액세스 팀
- 대기열
- 첨부
탄력적 테이블에서 현재 사용할 수 없는 열 데이터 유형:
- 통화
- 수식
- 없음 이외의 정수 형식(기간, 언어 코드 및 시간대)
- 고객 옵션을 기준으로 조회
탄력적 테이블 만들기
Dataverse의 다른 새 테이블과 마찬가지로 탄력적 테이블을 만듭니다.
- Power Apps에 로그인하고 왼쪽 탐색 창에서 테이블을 선택합니다. 항목이 측면 패널 창을 경우 ...자세히를 선택한 다음 원하는 항목을 선택하세요.
- 명령 표시줄에서 새 테이블 > 고급 속성 설정을 선택합니다.
- 오른쪽 속성 창에서 표시 이름 및 복수 이름을 입력합니다.
- 고급 옵션을 확장한 다음 테이블 유형으로 탄력적을 선택합니다.
- 원하는 속성을 선택한 후 저장을 선택합니다.
탄력적 테이블에 대해 time to live 열이 자동으로 생성됩니다. 필요에 따라 기간 값을 초 단위로 추가할 수 있습니다. 지정된 기간이 지나면 데이터가 자동으로 제거됩니다.
테이블에 대한 자세한 정보: 고급 옵션
알려진 문제점
- TTL(Time to Live)이 행에 사용되는 경우 TTL이 만료되면 탄력적 테이블에서 해당 행이 삭제됩니다. TTL이 만료되기 전에 Azure Synapse Link for Dataverse를 사용하여 데이터 레이크에 동기화하면 데이터 레이크에서 삭제되지 않습니다.
- 특정 시점 복원은 업데이트가 백업되지 않으므로 "업데이트된" 레코드를 복원하지 않습니다. 생성 및 삭제된 기록만 복원됩니다.
- 탄력적 테이블의 특정 열이 삭제된 경우 해당 열 값에 데이터가 있으면 테이블 행에서 제거되지 않습니다. 특정 열을 삭제하기 전에 해당 열의 모든 행에서 데이터를 삭제하세요.
대용량 탄력적 테이블 및 Dataverse API 조절 한도 관리
대량 작업 메시지를 사용합니다. 이를 통해 동일한 Dataverse API 조절 한도로 10배의 처리량을 달성할 수 있습니다. 개발자는 아래 섹션에 제공된 추가 링크를 참조할 수 있습니다.
개발자용
탄력적 테이블은 개발자가 Dataverse API와 함께 사용할 때 표준 테이블과 다른 동작 및 기능을 갖습니다. 개발자를 위한 다음 문서에서는 이러한 차이점을 설명합니다.
- 탄성 테이블
- 코드를 사용하여 탄력적 테이블 만들기
- 코드를 사용하여 탄력적 테이블 사용
- 탄력적 테이블의 JSON 열 쿼리
- 대량 작업 메시지(프리뷰)
- 탄력적 테이블 샘플 코드
- 병렬 요청 보내기
- 서비스 보호 API 한도