Поделиться через


Материализованные представления в Azure Управляемый экземпляр для Apache Cassandra

Azure Управляемый экземпляр для Apache Cassandra — это полностью управляемая служба для чистых кластеров Apache Cassandra с открытым кодом. Служба также позволяет переопределить конфигурации в зависимости от конкретных потребностей каждой рабочей нагрузки, что позволяет обеспечить максимальную гибкость и контроль при необходимости. В этой статье описывается включение материализованных представлений.

Поддержка материализованного представления

Материализованные представления отключены по умолчанию, но пользователи могут включить их в кластере. Однако мы не рекомендуем пользователям Azure Управляемый экземпляр для Apache Cassandra использовать материализованные представления. Они являются экспериментальными (см . материализованные представления, помеченные экспериментальными архивами Apache Mail и предложение сделать это). В частности:

  • Реализация материализованных представлений — это распределенная система проектирования, которая не была тщательно моделирована и имитирована. Никаких формальных доказательств о его свойствах не было.
  • Невозможно определить, не синхронизировано ли материализованное представление с базовой таблицей.
  • Верхняя граница не зависит от времени синхронизации материализованного представления при изменении базовой таблицы.
  • Если возникает ошибка и материализованное представление выходит из синхронизации, единственным способом ее восстановления является удаление материализованного представления и его повторное создание.

Корпорация Майкрософт не может предлагать соглашение об уровне обслуживания или поддержку по проблемам с материализованными представлениями.

Альтернативные варианты материализованных представлений

Как и большинство хранилищ NoSQL, Apache Cassandra не предназначен для нормализованной модели данных. Если необходимо обновить данные в нескольких местах, программа должна отправлять все необходимые инструкции в рамках пакетной службы. Это имеет два преимущества по сравнению с материализованными представлениями:

  • BATCH гарантирует, что все инструкции в пакете зафиксированы или отсутствуют.
  • Все операторы имеют одинаковую семантику кворума и семантики фиксации.

Если рабочая нагрузка действительно нуждается в нормализованной модели данных, рассмотрите масштабируемое реляционное хранилище, например Гипермасштабирование PostgreSQL Azure.

Включение материализованных представлений

Необходимо задать enable_materialized_views: true в rawUserConfig поле центра обработки данных Cassandra. Для этого используйте следующую команду 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

Следующие шаги