Начните использовать виртуальные таблицы в Apache Cassandra 4.0.
Что они собой представляют и как их использовать.
Среди многих дополнений в недавней бета-версии Apache Cassandra 4.0 виртуальные таблицы заслуживают некоторого внимания.
В предыдущих версиях Cassandra пользователям требовался доступ к расширениям управления Java (JMX) для изучения таких деталей Cassandra, как выполнение уплотнений, клиентов, показателей и различных параметров конфигурации. Виртуальные столы устраняют эти проблемы. Бета-версия Cassandra 4.0 позволяет пользователям запрашивать эти сведения и данные в виде строк языка запросов Cassandra (CQL) из системной таблицы, доступной только для чтения.
Вот как работал механизм на основе JMX в предыдущих версиях Cassandra. Представьте, что пользователь хочет проверить статус сжатия определенного узла в кластере. Сначала пользователю необходимо установить соединение JMX для запуска nodetool Compactionstats
на узле. Это требование сразу же ставит пользователя перед некоторыми сложностями. Настроен ли клиент пользователя для доступа JMX? Настроены ли узлы Cassandra и брандмауэр для разрешения доступа JMX? Подготовлены ли и приняты ли надлежащие меры безопасности и аудита? Это лишь некоторые из проблем, с которыми пользователям приходилось сталкиваться при работе в предыдущих версиях Cassandra.
В Cassandra 4.0 виртуальные таблицы позволяют пользователям запрашивать необходимую информацию, используя ранее настроенный драйвер. Это изменение устраняет все накладные расходы, связанные с реализацией и поддержкой доступа JMX.
Cassandra 4.0 создает два новых пространства ключей, чтобы помочь пользователям использовать виртуальные таблицы: system_views
и system_virtual_schema
. Пространство ключей system_views
содержит всю ценную информацию, которую ищут пользователи, и удобно хранится в нескольких таблицах. Пространство ключей system_virtual_schema
, как следует из названия, хранит всю необходимую информацию о схеме для этих виртуальных таблиц.
(Бен Бромхед, CC BY-SA 4.0)
Важно понимать, что область действия каждой виртуальной таблицы ограничена ее узлом. Любой запрос к виртуальным таблицам вернет данные, действительные только для узла, выступающего в качестве его координатора, независимо от согласованности. Чтобы упростить это требование, в несколько драйверов была добавлена поддержка указания узла-координатора в этих запросах (драйверы Python, DataStax Java и другие теперь предлагают такую поддержку).
Для иллюстрации изучите эту виртуальную таблицу sstable_tasks
. В этой виртуальной таблице отображаются все операции над SSTables, включая уплотнение, очистку, обновление и многое другое.
(Бен Бромхед, CC BY-SA 4.0)
Если бы пользователь запускал nodetool Compactionstats
в предыдущей версии Cassandra, это был бы тот же тип информации, который был бы отображен. Здесь запрос обнаруживает, что узел в настоящее время имеет одно активное уплотнение. Он также отображает ход выполнения, пространство ключей и таблицу. Благодаря виртуальной таблице пользователь может быстро собрать эту информацию и столь же эффективно получить информацию, необходимую для правильной диагностики состояния кластера.
Чтобы внести ясность, Cassandra 4.0 не устраняет необходимость доступа к JMX: JMX по-прежнему остается единственным вариантом запроса некоторых метрик. Тем не менее, пользователи будут рады возможности получать ключевые показатели кластера просто с помощью CQL. Благодаря удобству виртуальных таблиц пользователи смогут реинвестировать время и ресурсы, ранее посвященные инструментам JMX, в саму Cassandra. Инструменты на стороне клиента также должны начать использовать преимущества виртуальных таблиц.
Если вас интересует бета-версия Cassandra 4.0 и ее функция виртуальных таблиц, попробуйте ее.