Spec-Zone.ru › MariaDB

Обработка объединений с Cassandra

CassandraSE больше не активно развивается и был удален в MariaDB 10.6. См. MDEV-23024.

Объединения с данными, хранящимися в базе данных Cassandra, возможны только со стороны MariaDB. То есть, если мы хотим вычислить объединение между двумя таблицами, мы будем:

  1. Считывать соответствующие данные для первой таблицы.
  2. На основе данных, полученных в п. 1, считывать соответствующие записи из второй таблицы.

Любая из таблиц может быть таблицей InnoDB или таблицей Cassandra. В случае, если вторая таблица является таблицей Cassandra, движок хранения Cassandra позволяет эффективно считывать соответствующие записи.

Общие сведения

Всё это направлено на выполнение объединений, затрагивающих небольшую часть таблиц. Предполагаемый типичный случай использования выглядит так:

  • Основные данные хранятся в MariaDB (т. е. в InnoDB).
  • Также некоторые дополнительные данные хранятся в Cassandra (например, счётчики обращений).
  • Пользователь получает доступ к данным в MariaDB (например, сайт и запрос типа:
select * from user_accounts where username='joe')

Движок хранения Cassandra позволяет также получить некоторые данные Cassandra. Можно написать такие вещи:

select 
  user_accounts.*, 
  cassandra_table.some_more_fields
from 
  user_accounts, cassandra_data 
where 
  user_accounts.username='joe' and
  user_accounts.user_id= cassandra_table.user_id

что намного проще, чем использовать API Thrift.

Если пользователь хочет выполнить большие объединения, затрагивающие большую часть данных таблицы, например:

«Какие 10 стран посещали мой сайт больше всего за последний месяц?»

или

«Просмотрите заказы за последний месяц и дайте мне 10 самых продаваемых товаров»

тогда движок хранения Cassandra не является хорошим решением. Запросы такого типа обрабатываются двумя способами:

  1. Проектируйте схему в Cassandra таким образом, чтобы эти данные можно было получить одним небольшим запросом. Без шуток. Именно на это нацелена Cassandra; они явно рекомендуют, чтобы проектирование схемы Cassandra начиналось с запросов.
  2. Если запрос не соответствует схеме Cassandra, необходимо запустить Hive (или Pig), которые имеют поддержку распределённых объединений. Hive/Pig компилируют запросы в задачу Map/reduce, которая выполняется по всему кластеру, поэтому они определённо превзойдут движок хранения Cassandra, который работает на одном узле mysqld (можно иметь несколько узлов mysqld, но они не будут сотрудничать друг с другом).

Можно запустить Hive/Pig на Cassandra.

Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают мнения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/handling-joins-with-cassandra/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API