Обработка данных в Кассандре

{title}

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

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

Вставка информации
Вставка информации в любую базу данных является одной из основных операций, из которой производятся другие. В Cassandra это довольно просто и имеет определенное сходство с традиционным синтаксисом SQL, используется слово INSERT INTO, за которым следует имя таблицы, затем столбцы, и с помощью VALUES указывается информация для вставки.

Мы будем использовать таблицы, использованные в предыдущих уроках, однако CQL некоторых из этих таблиц оставлен ниже для пользователей, у которых их нет в их среде:

 CREATE TABLE пользователей (текст пользователя, текст пароля, текстовое имя, текстовая фамилия, текст страны, ПЕРВИЧНЫЙ КЛЮЧ (пользователь)); Учебник CREATE TABLE (пользовательский текст, дата метки времени, текстовое название, текстовая категория, текстовое содержимое, PRIMARY KEY (пользователь, дата)); 
Уже с созданными таблицами мы сделаем первую вставку в пользовательскую таблицу, здесь все довольно просто, поскольку все столбцы имеют тип text, давайте посмотрим, как выглядит наш оператор CQL :
 INSERT INTO users (имя пользователя, пароль, имя, фамилия, страна) VALUES («jacosta», «123456», «Jon», «Acosta», «Spain»); 
Будучи всеми значениями текстового типа, мы должны были указывать их только в одинарных кавычках, давайте посмотрим, что вставка была выполнена успешно, выполнив SELECT для нашей таблицы:

{title}

Как мы могли видеть, вставка была выполнена успешно, и если мы сравним операцию с ее одноранговым узлом в SQL, ее будет гораздо проще выполнить, мы выполним другую вставку данных, но на этот раз в нашей учебной таблице, где у нас есть поле типа отметки времени :

 Учебник INSERT INTO (пользователь, дата, заголовок, категория, контент) ЗНАЧЕНИЯ ('jacosta', '2015-04-12 11:35:20', 'Манипулирование данными Cassandra', 'Базы данных', 'Содержание учебника' ); 
Как мы могли видеть для вставки метки времени типа данных, просто следуя соответствующей структуре, мы могли бы сделать это без каких-либо проблем, мы сделали запрос к нашей таблице, который должен выглядеть следующим образом:

{title}

Обновление информации
Иногда, как и ожидалось в любой разработке, информация в нашей базе данных может быть изменена, для этого у нас есть ОБНОВЛЕНИЕ для обновления записей, однако Cassandra работает иначе, чем мы используем в реляционной модели, давайте посмотрим Первый синтаксис:

 ОБНОВЛЕНИЕ учебник SET title = 'Модифицированный заголовок' ГДЕ пользователь = 'jacosta' И дата = "2015-04-13 11:35:20"; 
Мы смогли обновить без каких-либо проблем, однако процесс обновления в Cassandra, что он делает, это добавляет новый столбец в строке с самой последней отметкой времени и помечает старые столбцы своего рода маркерами, эти маркеры не эффективны Сразу же, но при выполнении запроса Кассандра проверяет два столбца, и тот, кто имеет самые последние отметки времени, побеждает, давайте посмотрим:

{title}

Cassandra также отличается с точки зрения вставки данных относительно традиционных баз данных SQL, например, если мы попытаемся вставить те же значения с пользователем jacosta, который является первичным ключом, мы получим ошибку, однако Cassandra отличается, и ее задача заключается в том, чтобы вставить столбцы Особенность этого состоит в том, что, как мы упоминали в обновлении информации, Cassandra вернет, так сказать, самую новую строку, мы вставим данные с тем же пользователем, изменяя остальную информацию:

 Учебник INSERT INTO (пользователь, дата, название, категория, контент) ЗНАЧЕНИЯ («jacosta», «2015-04-22 06:35:20», «Тот же пользователь», «BD», «Новый контент»); 
Если мы посмотрим на нашу таблицу, то увидим, что все записи находятся в одном и том же, независимо от повторения того же первичного ключа, который мы видим на следующем изображении, на котором мы также можем убедиться, что при выполнении INSERT не было сгенерировано никакой ошибки:

$config[ads_text5] not found

{title}

Удаление информации
Для удаления информации Cassandra работает иначе, чем обычный синтаксис SQL, где нет необходимости указывать в предложении WHERE удаление информации, которая при выполнении удаляет все записи в таблице, это довольно опасно, поскольку мы можем потерять наша информация из-за неправильного использования предложения.

Cassandra обязывает использовать предложение WHERE, таким образом, защищая нашу информацию, и мы затем удалим записи, которые соответствуют пользователю jacosta :

 УДАЛИТЬ ИЗ ОБУЧЕНИЯ ГДЕ user = 'jacosta'; 
Это исключит все учебные пособия, загруженные указанным пользователем, это неплохо, но все же далеко не самое оптимальное, для этого мы будем использовать оставшиеся указанные ключи, в данном случае ключевую дату кластеризации, давайте посмотрим, как выглядит наш оператор CQL :
 УДАЛИТЬ ИЗ ОБУЧЕНИЯ ГДЕ user = 'jacosta' И date = '2015-04-22 06:35:20'; 
Давайте посмотрим на следующем изображении, как у нас есть две доступные записи с одним и тем же пользователем или первичным ключом, и с помощью нашего более конкретного DELETE мы можем удалить нужную запись:

{title}

Информационный запрос
До сих пор нам удавалось увидеть несколько типов манипулирования информацией, но все они довольно просты в реализации, и, кроме того, мы использовали SELECT для просмотра изменений, внесенных этими операциями, но в этом пункте гораздо больше, чем то, что видно, где, хотя его синтаксис похож на SQL, его поведение может отличаться.

Одна из этих вариаций или различий, которые имеет SELECT языка CQL по отношению к SQL, заключаются в следующем:

Операции JOIN не поддерживаются

С помощью классических решений SQL мы можем объединить столько таблиц, сколько захотим, а затем объединить информацию для создания разных представлений. В Кассандре объединений избегают по причинам масштабируемости.

В базу данных не добавлено ни одной функции, кроме COUNT

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

Построение запросов ранее было довольно простым, так как мы знали имена пространств клавиш, таблиц и столбцов, но что произойдет, если мы не знаем имен для выполнения наших запросов? В этих случаях у нас есть команда DESCRIBE, мы выполним ее, чтобы сначала идентифицировать пространства клавиш:

 ОПИСАТЬ пространство клавиш; 
Давайте посмотрим, как выглядит выполнение команды:

{title}

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

{title}

Как мы видим, Cassandra дает нам список пространств клавиш и таблиц, содержащихся в каждом из них, однако команда DESCRIBE идет еще дальше, и мы можем понизить еще один уровень в структуре, поскольку нас больше всего интересует столбцы конкретной таблицы, давайте посмотрим результат, выданный командной консоли:

{title}

Как мы могли видеть, команда DESCRIBE довольно мощная, поскольку нам не только возвращает имя столбцов в нашей таблице, но также возвращает тип данных для каждого из столбцов и даже такие свойства, как комментарии, сжатие и сжатие. упомянуть некоторые.

Теперь, зная, что у него есть наша таблица, мы можем эффективно применить нашу команду SELECT, где мы можем выбрать только те столбцы, которые нам нужны:

 ВЫБЕРИТЕ пользователя, дату, название из учебника; 
Или просто фильтр по конкретному пользователю:
 ВЫБЕРИТЕ пользователя, дату, название ОТ учебника ГДЕ user = 'jacosta'; 
Мы можем даже фильтровать по нескольким пользователям, если мы пришли из мира SQL, мы можем применить оператор OR, однако в Cassandra его нет, для этого мы должны использовать IN, давайте посмотрим:
 ВЫБЕРИТЕ пользователя, дату, название ОТ учебника ГДЕ пользователь IN ('jacosta', 'cperez'); 
Наконец, мы можем фильтровать нашу информацию по диапазонам, в этом случае мы можем применить фильтр по диапазону дат. Для этого, просто применяя операторы больше и меньше, вместе с AND, мы можем достичь этого. давайте посмотрим, как мы будем выглядеть:
 ВЫБЕРИТЕ пользователя, дату, название ОТ учебника ГДЕ пользователь = 'jacosta' И дата> '2015-04-12' И дата <'2015-04-26'; 
С помощью этого последнего мы завершим этот урок, где мы увидим, что Cassandra не только мощна, но и чрезвычайно проста в обращении, давая нам синтаксис, аналогичный тому, к которому мы привыкли, если мы пришли из мира SQL для выполнения необходимых операций для манипулирования информацией в наших таблицах.