다음을 통해 공유


Azure Managed Instance for Apache Cassandra에서 구체화된 뷰

Azure Managed Instance for Apache Cassandra는 순수 오픈 소스 Apache Cassandra 클러스터를 위한 완전 관리형 서비스입니다. 또한 이 서비스를 사용하면 각 워크로드의 특정 요구 사항에 따라 구성을 재정의할 수 있으므로 필요한 경우 최대한의 유연성과 제어가 가능합니다. 이 문서에서는 구체화된 뷰를 사용하도록 설정하는 방법을 설명합니다.

구체화된 뷰 지원

구체화된 뷰는 기본적으로 사용하지 않도록 설정되지만 사용자는 클러스터에서 사용하도록 설정할 수 있습니다. 그러나 Azure Managed Instance for Apache Cassandra의 사용자가 구체화된 뷰를 사용하지 못하도록 합니다. 실험적입니다(실험적 Apache 메일 보관으로 표시된 구체화된 뷰이를 위한 제안 참조). 특히 다음 사항에 주의하십시오.

  • 구체화된 뷰의 구현은 광범위하게 모델링 및 시뮬레이션되지 않은 분산 시스템 디자인입니다. 해당 속성에 대한 공식적인 증거는 없습니다.
  • 구체화된 뷰가 기본 테이블과 동기화되지 않는지 확인할 수 있는 방법은 없습니다.
  • 기본 테이블이 변경될 때 구체화된 뷰를 동기화하는 데 걸리는 시간은 상한이 없습니다.
  • 오류가 있고 구체화된 뷰가 동기화되지 않으면 복구하는 유일한 방법은 구체화된 뷰를 삭제하고 다시 만드는 것입니다.

Microsoft는 구체화된 뷰 문제에 대한 SLA 또는 지원을 제공할 수 없습니다.

구체화된 뷰에 대한 대안

대부분의 NoSQL 저장소와 마찬가지로 Apache Cassandra는 정규화된 데이터 모델을 갖도록 설계되지 않았습니다. 둘 이상의 위치에서 데이터를 업데이트해야 하는 경우 프로그램에서 필요한 모든 문을 BATCH의 일부로 보내야 합니다. 이렇게 하면 구체화된 뷰보다 두 가지 이점이 있습니다.

  • BATCH는 일괄 처리의 모든 문이 커밋되거나 없음을 보장합니다.
  • 모든 문에는 동일한 쿼럼과 커밋 의미 체계가 있습니다.

워크로드에 정규화된 데이터 모델이 진정으로 필요한 경우 Azure의 하이퍼스케일 PostgreSQL과 같은 확장 가능한 관계형 저장소를 고려합니다.

구체화된 뷰를 사용하도록 설정하는 방법

Cassandra 데이터 센터의 rawUserConfig 필드에 enable_materialized_views: true를 설정해야 합니다. 이렇게 하려면 다음 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

다음 단계