Материализованные представления в Azure Cosmos DB для Apache Cassandra (предварительная версия)
Область применения: Кассандра
Внимание
Материализованные представления в Azure Cosmos DB для Cassandra в настоящее время находятся в предварительной версии. Эту функцию можно включить с помощью портал Azure. Эта предварительная версия материализованных представлений предоставляется без соглашения об уровне обслуживания. В настоящее время материализованные представления не рекомендуется использовать для рабочих нагрузок. Некоторые функции этой предварительной версии могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см . в дополнительных условиях использования для предварительных версий Microsoft Azure.
Материализованные представления при определении помогают эффективно запрашивать базовую таблицу (или контейнер в Azure Cosmos DB) с фильтрами, которые не являются первичными ключами. Когда пользователи записывают в базовую таблицу, материализованное представление создается автоматически в фоновом режиме. Это представление может иметь другой первичный ключ для эффективного поиска. Представление также будет содержать только столбцы, явно проецируемые из базовой таблицы. Это представление будет таблицей, доступной только для чтения.
Хранилище столбцов можно запрашивать без указания ключа секции с помощью вторичных индексов. Однако запрос не будет эффективным для столбцов с высоким или низким кратностью. Запрос может сканировать все данные для небольшого результирующий набор. Такие запросы в конечном итоге будут дорогостоящими, так как они в конечном итоге непреднамеренно выполняются как межсекционный запрос.
С материализованным представлением можно:
- Используйте в качестве таблицы поиска или сопоставления для сохранения межсекционных проверок, которые в противном случае будут дорогостоящими запросами.
- Укажите условный предикат на основе SQL, чтобы заполнить только определенные столбцы и данные, соответствующие предварительному условию.
- Создание представлений в режиме реального времени, упрощающих сценарии на основе событий, которые обычно хранятся в виде отдельных коллекций с помощью триггеров канала изменений.
Преимущества материализованных представлений
Материализованные представления имеют множество преимуществ, которые включают в себя, но не ограничиваются следующими преимуществами:
- Вы можете реализовать денормализацию на стороне сервера с помощью материализованных представлений. С помощью денормализации на стороне сервера можно избежать нескольких независимых таблиц и вычислительно сложной денормализации в клиентских приложениях.
- Материализованные представления автоматически обновляют представления, чтобы они соответствовали базовой таблице. Это автоматическое обновление абстрагирует обязанности клиентских приложений с обычной реализацией пользовательской логики для выполнения двойной записи в базовую таблицу и представление.
- Материализованные представления оптимизируют производительность чтения путем чтения из одного представления.
- Пропускную способность для материализованного представления можно указать независимо.
- Вы можете настроить материализованный слой построителя представлений для сопоставления с вашими требованиями для гидратации представления.
- Материализованные представления повышают производительность записи, так как операции записи необходимо записывать только в базовую таблицу.
- Кроме того, реализация материализованных представлений Azure Cosmos DB основана на модели извлечения. Эта реализация не влияет на производительность записи.
Начало работы с материализованными представлениями
Создайте новый API для учетных записей Cassandra с помощью Azure CLI, чтобы включить материализованные представления с помощью собственной команды или операции REST API.
Войдите на портал Azure.
Перейдите к своей учетной записи API для Cassandra.
В меню ресурсов выберите "Параметры".
В разделе "Параметры" выберите "Материализованное представление" для API Cassandra (предварительная версия).
В новом диалоговом окне выберите "Включить ", чтобы включить эту функцию для этой учетной записи.
Внутренняя логика
API для Cassandra использует материализованный слой вычислений построителя представлений для поддержания представлений.
Вы получаете гибкость для настройки вычислительных экземпляров построителя представлений на основе ваших требований к задержке и задержке для гидратации представлений. С технической точки зрения этот уровень вычислений помогает управлять подключениями между секциями более эффективно, даже если размер данных велик, а количество секций — высоким.
Контейнеры вычислений используются для всех материализованных представлений в учетной записи Azure Cosmos DB. Каждый подготовленный вычислительный контейнер создает несколько задач, которые считывают канал изменений из секций базовой таблицы и записывают данные в целевое материализованное представление[s]. Контейнер вычислений преобразует данные в определение материализованного представления для каждого материализованного представления в учетной записи.
Создание материализованного построителя представлений
Создайте построитель материализованных представлений для автоматического преобразования данных и записи в материализованное представление.
Войдите на портал Azure.
Перейдите к своей учетной записи API для Cassandra.
В меню ресурсов выберите построитель материализованных представлений.
На странице построителя материализованных представлений настройте номер SKU и количество экземпляров для построителя.
Примечание.
Этот параметр меню ресурсов и страница будут отображаться только в том случае, если функция "Материализованные представления" включена для учетной записи.
Выберите Сохранить.
Создание материализованного представления
После настройки учетной записи и конструктора материализованных представлений вы сможете создавать материализованные представления с помощью CQLSH.
Примечание.
Если у вас еще нет автономного средства CQLSH, ознакомьтесь с установкой средства CQLSH. Вы также должны обновить строка подключения в средстве.
Ниже приведены несколько примеров команд для создания материализованного представления:
Сначала создайте имя
uprofile
пространства ключей.CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
Затем создайте таблицу с именем
user
в пространстве ключей.CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
Теперь создайте материализованное представление
user_by_bcity
в одном пространстве ключей. Укажите, используя запрос, как данные проецируются в представление из базовой таблицы.CREATE MATERIALIZED VIEW uprofile.user_by_bcity AS SELECT user_id, user_name, user_bcity FROM uprofile.USER WHERE user_id IS NOT NULL AND user_bcity IS NOT NULL PRIMARY KEY (user_bcity, user_id);
Вставка строк в базовую таблицу.
INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 101, 'johnjoe', 'New York' ); INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 102, 'james', 'New York' );
Запрос материализованного представления.
SELECT * FROM user_by_bcity;
Просмотрите выходные данные из материализованного представления.
user_bcity | user_id | user_name ------------+---------+----------- New York | 101 | johnjoe New York | 102 | james (2 rows)
При необходимости можно также использовать поставщик ресурсов для создания или обновления материализованного представления.
- Создание или обновление представления в API для Cassandra
- Получение представления в API для Cassandra
- Вывод списка представлений в API для Cassandra
- Удаление представления в API для Cassandra
- Обновление пропускной способности представления в API для Cassandra
Текущие ограничения
Существует несколько ограничений для предварительной версии API для предварительной версии Cassandra для материализованных представлений:
- Материализованные представления нельзя создать в таблице, которая существовала до включения поддержки материализованных представлений в учетной записи. Чтобы использовать материализованные представления, создайте новую таблицу после включения функции.
- Для предложения определения материализованного
WHERE
представления в настоящее время разрешены толькоIS NOT NULL
фильтры. - После создания материализованного представления в базовой таблице
ALTER TABLE ADD
операции не допускаются в схеме базовой таблицы.ALTER TABLE APP
допускается только в том случае, если ни одно из материализованных представлений не выбрано*
в их определении. - Существуют ограничения на размер ключа секции (2 КБ) и общую длину размера ключа кластеризации (1 КБ). Если этот предел превышается, ответственное сообщение в конечном итоге появится в очереди подозрительных сообщений.
- Если в базовой таблице есть определяемые пользователем типы (определяемые пользователем) и материализованные определения представления имеют
SELECT * FROM
либо имеют определяемый пользователем UDT в одном из проецируемых столбцов, обновления UDT не разрешены в учетной записи. - Материализованные представления могут стать несогласованными с базовой таблицей для нескольких строк после автоматической отработки отказа региона. Чтобы избежать этого несоответствия, перестройте материализованное представление после отработки отказа.
- Создание экземпляров построителя материализованных представлений с 32 ядрами не поддерживается. При необходимости можно создать несколько экземпляров построителя с меньшим количеством ядер.
Помимо указанных выше ограничений рассмотрите следующие дополнительные ограничения:
- Зоны доступности
- Материализованные представления нельзя включить в учетной записи с включенными регионами зоны доступности.
- Добавление нового региона с зоной доступности не поддерживается один раз
enableMaterializedViews
, когда оно имеет значение true в учетной записи.
- Периодическое резервное копирование и восстановление
- Материализованные представления не восстанавливаются автоматически в рамках процесса восстановления. После завершения процесса восстановления необходимо повторно создать материализованные представления. Затем необходимо настроить
enableMaterializedViews
для восстановленной учетной записи перед созданием материализованных представлений и построителей снова.
- Материализованные представления не восстанавливаются автоматически в рамках процесса восстановления. После завершения процесса восстановления необходимо повторно создать материализованные представления. Затем необходимо настроить
- Apache Cassandra
- Определение политики разрешения конфликтов для материализованных представлений не допускается.
- Операции записи не допускаются для материализованных представлений.
- Междокументные запросы и использование агрегатных функций не поддерживаются в материализованных представлениях.
- Схема материализованного представления не может быть изменена после создания.
- Удаление базовой таблицы не допускается, если на ней определен хотя бы одно материализованное представление. Сначала необходимо удалить все представления, а затем можно удалить базовую таблицу.
- Определение материализованных представлений для контейнеров со статическими столбцами запрещено.