Материализованные представления в 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