Azure Managed Instance for Apache Cassandra는 순수 오픈 소스 Apache Cassandra 클러스터를 위한 완전 관리형 서비스입니다. 또한 서비스는 각 워크로드의 특정 요구 사항에 따라 구성을 재정의할 수 있습니다. 이 기능을 사용하면 필요한 경우 유연성을 극대화하고 제어할 수 있습니다. 이 문서에서는 구체화된 뷰를 사용하도록 설정하는 방법을 설명합니다.
구체화된 뷰 지원
구체화된 뷰는 기본적으로 사용하지 않도록 설정되지만 클러스터에서 사용하도록 설정할 수 있습니다. Apache Cassandra용 Azure Managed Instance 사용자가 구체화된 뷰를 사용하지 않도록 합니다. 실험적입니다. 특히 다음 사항에 주의하십시오.
- 구체화된 뷰의 구현은 광범위하게 모델링되고 시뮬레이션되지 않는 분산 시스템 디자인입니다. 속성에 대한 공식적인 증거는 없습니다.
- 구체화된 뷰가 기본 테이블과 동기화되지 않는지 확인할 수 있는 방법은 없습니다.
- 기본 테이블이 변경될 때 구체화된 뷰가 동기화되는 데 걸리는 시간 상한은 없습니다.
- 오류가 있고 구체화된 뷰가 동기화되지 않는 경우 상황을 해결하는 유일한 방법은 구체화된 뷰를 삭제하고 다시 만드는 것입니다.
자세한 내용은 실험적이라고 표시된 Apache 메일 보관 파일의 물리적 뷰와 그에 대한 제안서를 참조하세요.
Microsoft는 구체화된 뷰와 관련된 문제에 대한 서비스 수준 계약 또는 지원을 제공하지 않습니다.
구체화된 뷰에 대한 대안
대부분의 NoSQL 저장소와 마찬가지로 Apache Cassandra는 정규화된 데이터 모델을 갖도록 설계되지 않았습니다. 둘 이상의 위치에서 데이터를 업데이트해야 하는 경우 필요한 모든 문을 BATCH의 일부로 보냅니다. 이 방법은 구체화된 뷰보다 두 가지 이점이 있습니다.
BATCH는 일괄 처리의 모든 문이 커밋되거나 없음을 보장합니다.- 모든 문에는 동일한 쿼럼과 커밋 의미 체계가 있습니다.
워크로드에 정규화된 데이터 모델이 필요한 경우 Azure Cosmos DB for PostgreSQL과 같은 확장 가능한 관계형 저장소를 고려합니다.
구체화된 뷰를 사용하도록 설정
enable_materialized_views: true를 Cassandra 데이터 센터의 rawUserConfig 필드에 설정합니다. 다음 Azure CLI 명령을 사용하여 클러스터의 각 데이터 센터를 업데이트합니다.
FRAGMENT="enable_materialized_views: true"
ENCODED_FRAGMENT=$(echo "$FRAGMENT" | base64 -w 0)
# or
# ENCODED_FRAGMENT="ZW5hYmxlX21hdGVyaWFsaXplZF92aWV3czogdHJ1ZQo="
resourceGroupName='MyResourceGroup'
clusterName='cassandra-hybrid-cluster'
dataCenterName='dc1'
az managed-cassandra datacenter update \
--resource-group $resourceGroupName \
--cluster-name $clusterName \
--data-center-name $dataCenterName \
--base64-encoded-cassandra-yaml-fragment $ENCODED_FRAGMENT