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


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

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

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

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

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

Дополнительные сведения см. в разделе "Материализованные представления", отмеченные экспериментальными архивами Apache Mail и предложением для этого.

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

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

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

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

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

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

Задайте 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