Учебники

Кассандра — Краткое руководство

Кассандра — Введение

Apache Cassandra — это высоко масштабируемая, высокопроизводительная распределенная база данных, предназначенная для обработки больших объемов данных на многих обычных серверах, обеспечивая высокую доступность без единой точки отказа. Это тип базы данных NoSQL. Давайте сначала разберемся, что делает база данных NoSQL.

NoSQLDatabase

База данных NoSQL (иногда называемая не только SQL) — это база данных, которая предоставляет механизм для хранения и извлечения данных, отличных от табличных отношений, используемых в реляционных базах данных. Эти базы данных не содержат схем, поддерживают простую репликацию, имеют простой API, в конечном итоге непротиворечивы и могут обрабатывать огромные объемы данных.

Основная цель базы данных NoSQL состоит в том, чтобы

  • простота дизайна,
  • горизонтальное масштабирование и
  • лучший контроль над доступностью.

Базы данных NoSql используют разные структуры данных по сравнению с реляционными базами данных. Это делает некоторые операции быстрее в NoSQL. Пригодность данной базы данных NoSQL зависит от проблемы, которую она должна решить.

NoSQL против реляционной базы данных

В следующей таблице перечислены точки, которые отличают реляционную базу данных от базы данных NoSQL.

Реляционная база данных NoSql база данных
Поддерживает мощный язык запросов. Поддерживает очень простой язык запросов.
Имеет фиксированную схему. Нет фиксированной схемы.
Следует ACID (атомарность, согласованность, изоляция и долговечность). Это только «в конечном итоге последовательным».
Поддерживает транзакции. Не поддерживает транзакции.

Помимо Cassandra, у нас есть следующие базы данных NoSQL, которые довольно популярны —

  • Apache HBase — HBase — это нереляционная распределенная база данных с открытым исходным кодом, созданная по образцу Google BigTable и написанная на Java. Он разработан как часть проекта Apache Hadoop и работает поверх HDFS, предоставляя возможности, подобные BigTable, для Hadoop.

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

Apache HBase — HBase — это нереляционная распределенная база данных с открытым исходным кодом, созданная по образцу Google BigTable и написанная на Java. Он разработан как часть проекта Apache Hadoop и работает поверх HDFS, предоставляя возможности, подобные BigTable, для Hadoop.

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

Что такое Apache Cassandra?

Apache Cassandra — это распределенная и децентрализованная / распределенная система хранения (база данных) с открытым исходным кодом, предназначенная для управления очень большими объемами структурированных данных, разбросанных по всему миру. Он предоставляет высокодоступный сервис без единой точки отказа.

Ниже перечислены некоторые заметные моменты Apache Cassandra —

  • Это масштабируемый, отказоустойчивый и последовательный.

  • Это база данных, ориентированная на столбцы.

  • Его дизайн распространения основан на Amazon Dynamo и его модели данных на Google Bigtable.

  • Созданный на Facebook, он резко отличается от систем управления реляционными базами данных.

  • Cassandra реализует модель репликации в стиле Dynamo без единой точки отказа, но добавляет более мощную модель данных «семейства столбцов».

  • Cassandra используется некоторыми крупнейшими компаниями, такими как Facebook, Twitter, Cisco, Rackspace, ebay, Twitter, Netflix и другими.

Это масштабируемый, отказоустойчивый и последовательный.

Это база данных, ориентированная на столбцы.

Его дизайн распространения основан на Amazon Dynamo и его модели данных на Google Bigtable.

Созданный на Facebook, он резко отличается от систем управления реляционными базами данных.

Cassandra реализует модель репликации в стиле Dynamo без единой точки отказа, но добавляет более мощную модель данных «семейства столбцов».

Cassandra используется некоторыми крупнейшими компаниями, такими как Facebook, Twitter, Cisco, Rackspace, ebay, Twitter, Netflix и другими.

Особенности Кассандры

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

  • Эластичная масштабируемость — Cassandra отлично масштабируется; это позволяет добавить больше оборудования, чтобы разместить больше клиентов и больше данных согласно требованию.

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

  • Высокая производительность в линейном масштабе — Cassandra линейно масштабируется, т. Е. Увеличивает пропускную способность при увеличении количества узлов в кластере. Поэтому он поддерживает быстрое время отклика.

  • Гибкое хранение данных — Cassandra поддерживает все возможные форматы данных, включая: структурированные, полуструктурированные и неструктурированные. Он может динамически приспосабливать изменения к вашим структурам данных в соответствии с вашими потребностями.

  • Простое распространение данных — Cassandra обеспечивает гибкость в распределении данных там, где вам нужно, путем репликации данных между несколькими центрами обработки данных.

  • Поддержка транзакций — Cassandra поддерживает такие свойства, как атомарность, согласованность, изоляция и долговечность (ACID).

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

Эластичная масштабируемость — Cassandra отлично масштабируется; это позволяет добавить больше оборудования, чтобы разместить больше клиентов и больше данных согласно требованию.

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

Высокая производительность в линейном масштабе — Cassandra линейно масштабируется, т. Е. Увеличивает пропускную способность при увеличении количества узлов в кластере. Поэтому он поддерживает быстрое время отклика.

Гибкое хранение данных — Cassandra поддерживает все возможные форматы данных, включая: структурированные, полуструктурированные и неструктурированные. Он может динамически приспосабливать изменения к вашим структурам данных в соответствии с вашими потребностями.

Простое распространение данных — Cassandra обеспечивает гибкость в распределении данных там, где вам нужно, путем репликации данных между несколькими центрами обработки данных.

Поддержка транзакций — Cassandra поддерживает такие свойства, как атомарность, согласованность, изоляция и долговечность (ACID).

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

История Кассандры

  • Cassandra была разработана на Facebook для поиска в почтовом ящике.
  • Это был открытый исходный код Facebook в июле 2008 года.
  • Кассандра была принята в Apache Incubator в марте 2009 года.
  • Это был проект верхнего уровня Apache с февраля 2010 года.

Кассандра — Архитектура

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

  • Все узлы в кластере играют одинаковую роль. Каждый узел независим и одновременно связан с другими узлами.

  • Каждый узел в кластере может принимать запросы на чтение и запись независимо от того, где данные фактически находятся в кластере.

  • Когда узел выходит из строя, запросы на чтение / запись могут обслуживаться другими узлами в сети.

Все узлы в кластере играют одинаковую роль. Каждый узел независим и одновременно связан с другими узлами.

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

Когда узел выходит из строя, запросы на чтение / запись могут обслуживаться другими узлами в сети.

Репликация данных в Кассандре

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

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

Репликация данных

Примечание. Cassandra использует протокол Gossip в фоновом режиме, чтобы узлы могли обмениваться данными друг с другом и обнаруживать любые неисправные узлы в кластере.

Компоненты Кассандры

Ключевые компоненты Кассандры следующие:

  • Узел — это место, где хранятся данные.

  • Центр обработки данных — это совокупность связанных узлов.

  • Кластер . Кластер — это компонент, содержащий один или несколько центров обработки данных.

  • Журнал фиксации — Журнал фиксации — это механизм восстановления после сбоя в Cassandra. Каждая операция записи записывается в журнал фиксации.

  • Mem-таблицаMem-таблица — это структура данных, хранящаяся в памяти. После фиксации, данные будут записаны в mem-таблицу. Иногда для семейства с одним столбцом может быть несколько таблиц памяти.

  • SSTable — это файл на диске, в который данные сбрасываются из таблицы памяти, когда его содержимое достигает порогового значения.

  • Фильтр Блума — это не более чем быстрые, недетерминированные алгоритмы для проверки того, является ли элемент членом набора. Это особый вид кеша. Фильтры Блума доступны после каждого запроса.

Узел — это место, где хранятся данные.

Центр обработки данных — это совокупность связанных узлов.

Кластер . Кластер — это компонент, содержащий один или несколько центров обработки данных.

Журнал фиксации — Журнал фиксации — это механизм восстановления после сбоя в Cassandra. Каждая операция записи записывается в журнал фиксации.

Mem-таблицаMem-таблица — это структура данных, хранящаяся в памяти. После фиксации, данные будут записаны в mem-таблицу. Иногда для семейства с одним столбцом может быть несколько таблиц памяти.

SSTable — это файл на диске, в который данные сбрасываются из таблицы памяти, когда его содержимое достигает порогового значения.

Фильтр Блума — это не более чем быстрые, недетерминированные алгоритмы для проверки того, является ли элемент членом набора. Это особый вид кеша. Фильтры Блума доступны после каждого запроса.

Кассандра Query Language

Пользователи могут получить доступ к Cassandra через его узлы, используя Cassandra Query Language (CQL). CQL рассматривает базу данных (Keyspace) как контейнер таблиц. Программисты используют cqlsh: приглашение работать с CQL или отдельными драйверами языка приложения.

Клиенты обращаются к любому из узлов за своими операциями чтения-записи. Этот узел (координатор) воспроизводит прокси между клиентом и узлами, содержащими данные.

Операции записи

Каждая операция записи узлов фиксируется журналами фиксации, записанными в узлах. Позже данные будут записаны и сохранены в mem-таблице. Когда таблица mem заполнена, данные записываются в файл данных SStable . Все записи автоматически распределяются и реплицируются по всему кластеру. Кассандра периодически объединяет SSTables, отбрасывая ненужные данные.

Операции чтения

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

Кассандра — модель данных

Модель данных Cassandra значительно отличается от того, что мы обычно видим в RDBMS. В этой главе представлен обзор того, как Cassandra хранит свои данные.

кластер

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

пространство ключей

Keyspace — самый внешний контейнер для данных в Cassandra. Основные атрибуты Keyspace в Кассандре:

  • Коэффициент репликации — это количество компьютеров в кластере, которые будут получать копии одних и тех же данных.

  • Стратегия размещения реплик — это не что иное, как стратегия размещения реплик на ринге. У нас есть такие стратегии, как простая стратегия ( стратегия с поддержкой стоек), старая стратегия топологии сети ( стратегия с поддержкой стоек) и стратегия топологии сети ( стратегия с общим центром обработки данных).

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

Коэффициент репликации — это количество компьютеров в кластере, которые будут получать копии одних и тех же данных.

Стратегия размещения реплик — это не что иное, как стратегия размещения реплик на ринге. У нас есть такие стратегии, как простая стратегия ( стратегия с поддержкой стоек), старая стратегия топологии сети ( стратегия с поддержкой стоек) и стратегия топологии сети ( стратегия с общим центром обработки данных).

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

Синтаксис создания пространства ключей следующий:

CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

На следующем рисунке показан схематический вид Keyspace.

пространство ключей

Семейство колонн

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

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

Семейство столбцов Cassandra имеет следующие атрибуты —

  • keys_cached — представляет количество мест для хранения в кеше на SSTable.

  • row_cached — представляет количество строк, все содержимое которых будет кэшироваться в памяти.

  • preload_row_cache — указывает, хотите ли вы предварительно заполнить кеш строк.

keys_cached — представляет количество мест для хранения в кеше на SSTable.

row_cached — представляет количество строк, все содержимое которых будет кэшироваться в памяти.

preload_row_cache — указывает, хотите ли вы предварительно заполнить кеш строк.

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

На следующем рисунке показан пример семейства столбцов Cassandra.

Семья Кассандры Колонны

колонка

Столбец — это базовая структура данных Cassandra с тремя значениями: ключом или именем столбца, значением и отметкой времени. Ниже приведена структура столбца.

Кассандра структура колонны

суперстолбцов

Супер столбец — это специальный столбец, поэтому он также является парой ключ-значение. Но супер столбец хранит карту подколонок.

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

Кассандра Супер Колонна

Модели данных Cassandra и RDBMS

В следующей таблице перечислены точки, которые отличают модель данных Cassandra от модели СУБД.

RDBMS Cassandra
СУРБД работает со структурированными данными. Кассандра имеет дело с неструктурированными данными.
Имеет фиксированную схему. Кассандра имеет гибкую схему.
В СУБД таблица представляет собой массив массивов. (Ряд х столбец) В Cassandra таблица представляет собой список «вложенных пар ключ-значение». (Строка x ключ COLUMN x значение COLUMN)
База данных — это внешний контейнер, который содержит данные, соответствующие приложению. Keyspace — это самый внешний контейнер, который содержит данные, соответствующие приложению.
Таблицы являются сущностями базы данных. Таблицы или семейства столбцов являются сущностью пространства ключей.
Строка — это индивидуальная запись в РСУБД. Ряд является единицей репликации в Кассандре.
Столбец представляет атрибуты отношения. Колонна — это единица хранения в Кассандре.
СУБД поддерживает понятия внешних ключей, объединяет. Отношения представлены с использованием коллекций.

Кассандра — Установка

Доступ к Cassandra можно получить с помощью cqlsh, а также драйверов разных языков. В этой главе объясняется, как настроить среды cqlsh и java для работы с Cassandra.

Настройка перед установкой

Перед установкой Cassandra в среде Linux нам необходимо настроить Linux с помощью ssh (Secure Shell). Следуйте приведенным ниже инструкциям для настройки среды Linux.

Создать пользователя

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

  • Откройте root с помощью команды «su» .

  • Создайте пользователя из учетной записи root с помощью команды «useradd username» .

  • Теперь вы можете открыть существующую учетную запись пользователя с помощью команды «su username» .

Откройте root с помощью команды «su» .

Создайте пользователя из учетной записи root с помощью команды «useradd username» .

Теперь вы можете открыть существующую учетную запись пользователя с помощью команды «su username» .

Откройте терминал Linux и введите следующие команды, чтобы создать пользователя.

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

Настройка SSH и генерация ключей

Настройка SSH требуется для выполнения различных операций в кластере, таких как запуск, остановка и операции распределенной оболочки демона. Для аутентификации разных пользователей Hadoop требуется предоставить пару открытого / закрытого ключа для пользователя Hadoop и поделиться ею с разными пользователями.

Следующие команды используются для генерации пары ключ-значение с использованием SSH —

  • скопируйте форму открытых ключей id_rsa.pub в авторизованные ключи,
  • и предоставить владельцу,
  • разрешения на чтение и запись в файл authorized_keys соответственно.
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
  • Проверьте SSH:
ssh localhost

Установка Java

Ява является основной предпосылкой для Кассандры. Прежде всего, вы должны проверить существование Java в вашей системе, используя следующую команду —

$ java -version

Если все работает нормально, вы получите следующий вывод.

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Если у вас нет Java в вашей системе, выполните следующие шаги для установки Java.

Шаг 1

Загрузите Java (JDK <последняя версия> — X64.tar.gz) по следующей ссылке:

Затем jdk-7u71-linux-x64.tar.gz будет загружен в вашу систему.

Шаг 2

Обычно вы найдете загруженный файл Java в папке Downloads. Проверьте его и извлеките файл jdk-7u71-linux-x64.gz, используя следующие команды.

$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

Шаг 3

Чтобы сделать Java доступным для всех пользователей, вы должны переместить его в папку «/ usr / local /». Откройте root и введите следующие команды.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Шаг 4

Для настройки переменных PATH и JAVA_HOME добавьте следующие команды в файл ~ / .bashrc .

export JAVA_HOME = /usr/local/jdk1.7.0_71
export PATH = $PATH:$JAVA_HOME/bin

Теперь примените все изменения в текущей работающей системе.

$ source ~/.bashrc

Шаг 5

Используйте следующие команды для настройки альтернатив Java.

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

Теперь используйте команду java -version из терминала, как описано выше.

Настройка пути

Установите путь Cassandra в «/.bashrc», как показано ниже.

[hadoop@linux ~]$ gedit ~/.bashrc

export CASSANDRA_HOME = ~/cassandra
export PATH = $PATH:$CASSANDRA_HOME/bin

Скачать Кассандра

Apache Cassandra доступен по ссылке Download Cassandra с помощью следующей команды.

$ wget http://supergsego.com/apache/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz

Разархивируйте Cassandra с помощью команды zxvf, как показано ниже.

$ tar zxvf apache-cassandra-2.1.2-bin.tar.gz.

Создайте новый каталог с именем cassandra и переместите в него содержимое загруженного файла, как показано ниже.

$ mkdir Cassandra
$ mv apache-cassandra-2.1.2/* cassandra.

Настроить Кассандру

Откройте файл cassandra.yaml:, который будет доступен в каталоге bin Cassandra.

$ gedit cassandra.yaml

Примечание. Если вы установили Cassandra из пакета deb или rpm, файлы конфигурации будут находиться в каталоге / etc / cassandra Cassandra.

Приведенная выше команда открывает файл cassandra.yaml . Проверьте следующие конфигурации. По умолчанию эти значения будут установлены в указанные каталоги.

  • каталог_данных_каталогов «/ var / lib / cassandra / data»

  • commitlog_directory «/ var / lib / cassandra / commitlog»

  • Сохраненный_каталог_каталогов «/ var / lib / cassandra / save_caches»

каталог_данных_каталогов «/ var / lib / cassandra / data»

commitlog_directory «/ var / lib / cassandra / commitlog»

Сохраненный_каталог_каталогов «/ var / lib / cassandra / save_caches»

Убедитесь, что эти каталоги существуют и могут быть записаны, как показано ниже.

Создать каталоги

Как суперпользователь, создайте две директории / var / lib / cassandra и /var./log/cassandra, в которые Cassandra записывает свои данные.

[root@linux cassandra]# mkdir /var/lib/cassandra
[root@linux cassandra]# mkdir /var/log/cassandra

Разрешить папки

Дайте разрешения на чтение и запись для вновь созданных папок, как показано ниже.

[root@linux /]# chmod 777 /var/lib/cassandra
[root@linux /]# chmod 777 /var/log/cassandra

Старт Кассандры

Чтобы запустить Cassandra, откройте окно терминала, перейдите в домашний каталог Cassandra / home, куда вы распаковали Cassandra, и выполните следующую команду, чтобы запустить сервер Cassandra.

$ cd $CASSANDRA_HOME
$./bin/cassandra -f 

Использование опции -f говорит Кассандре оставаться на переднем плане, а не запускаться в качестве фонового процесса. Если все идет хорошо, вы можете увидеть запуск сервера Cassandra.

Среда программирования

Чтобы настроить Cassandra программно, загрузите следующие файлы jar —

  • SLF4J-апи-1.7.5.jar
  • Cassandra-водитель-ядро-2.0.2.jar
  • гуавы-16.0.1.jar
  • Метрики-ядро-3.0.2.jar
  • Нетти-3.9.0.Final.jar

Поместите их в отдельную папку. Например, мы загружаем эти файлы в папку с именем «Cassandra_jars» .

Установите classpath для этой папки в файле «.bashrc», как показано ниже.

[hadoop@linux ~]$ gedit ~/.bashrc

//Set the following class path in the .bashrc file.

export CLASSPATH = $CLASSPATH:/home/hadoop/Cassandra_jars/*

Eclipse Environment

Откройте Eclipse и создайте новый проект под названием Cassandra _Examples.

Щелкните правой кнопкой мыши по проекту, выберите « Путь сборки» → «Настроить путь сборки», как показано ниже.

Cassandra Build Path

Откроется окно свойств. На вкладке «Библиотеки» выберите « Добавить внешние JAR-файлы» . Перейдите в каталог, где вы сохранили ваши файлы JAR. Выберите все пять файлов jar и нажмите OK, как показано ниже.

Кассандра Внешние банки

В разделе «Библиотеки со ссылками» вы можете увидеть все необходимые файлы, добавленные как показано ниже:

Eclipse3

Maven Зависимости

Ниже приведен файл pom.xml для создания проекта Cassandra с использованием maven.

<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"  
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
				
               <configuration>
                  <source>1.7</source>
                  <target>1.7</target>
               </configuration>
					
         </plugin>
      </plugins>
   </build> 

   <dependencies>
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>1.7.5</version>
      </dependency>
 
      <dependency>
         <groupId>com.datastax.cassandra</groupId>
         <artifactId>cassandra-driver-core</artifactId>
         <version>2.0.2</version>
      </dependency>
 
      <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>16.0.1</version>
      </dependency>
 
      <dependency>
         <groupId>com.codahale.metrics</groupId>
         <artifactId>metrics-core</artifactId>
         <version>3.0.2</version>
      </dependency>
 
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty</artifactId>
         <version>3.9.0.Final</version>
      </dependency>
   </dependencies>

</project>

Кассандра — Ссылочный Api

Эта глава охватывает все важные классы в Кассандре.

кластер

Этот класс является основной точкой входа водителя. Он принадлежит пакету com.datastax.driver.core .

методы

С. Нет. Методы и описание
1

Сеанс подключения ()

Он создает новый сеанс в текущем кластере и инициализирует его.

2

void close ()

Он используется для закрытия экземпляра кластера.

3

статический строитель Cluster.Builder ()

Он используется для создания нового экземпляра Cluster.Builder.

Сеанс подключения ()

Он создает новый сеанс в текущем кластере и инициализирует его.

void close ()

Он используется для закрытия экземпляра кластера.

статический строитель Cluster.Builder ()

Он используется для создания нового экземпляра Cluster.Builder.

Cluster.Builder

Этот класс используется для создания экземпляра класса Cluster.Builder .

методы

Нет Методы и описание
1

Cluster.Builder addContactPoint (Строковый адрес)

Этот метод добавляет контактную точку в кластер.

2

Сборка кластера ()

Этот метод строит кластер с заданными контактными точками.

Cluster.Builder addContactPoint (Строковый адрес)

Этот метод добавляет контактную точку в кластер.

Сборка кластера ()

Этот метод строит кластер с заданными контактными точками.

сессия

Этот интерфейс содержит соединения с кластером Cassandra. Используя этот интерфейс, вы можете выполнять CQL- запросы. Он принадлежит пакету com.datastax.driver.core .

методы

С. Нет. Методы и описание
1

void close ()

Этот метод используется для закрытия текущего экземпляра сеанса.

2

ResultSet execute (оператор Statement)

Этот метод используется для выполнения запроса. Требуется объект оператора.

3

ResultSet execute (String query)

Этот метод используется для выполнения запроса. Требуется запрос в форме объекта String.

4

PreparedStatement prepare (инструкция RegularStatement)

Этот метод готовит предоставленный запрос. Запрос должен быть предоставлен в форме Заявления.

5

PreparedStatement prepare (строковый запрос)

Этот метод готовит предоставленный запрос. Запрос должен быть представлен в виде строки.

void close ()

Этот метод используется для закрытия текущего экземпляра сеанса.

ResultSet execute (оператор Statement)

Этот метод используется для выполнения запроса. Требуется объект оператора.

ResultSet execute (String query)

Этот метод используется для выполнения запроса. Требуется запрос в форме объекта String.

PreparedStatement prepare (инструкция RegularStatement)

Этот метод готовит предоставленный запрос. Запрос должен быть предоставлен в форме Заявления.

PreparedStatement prepare (строковый запрос)

Этот метод готовит предоставленный запрос. Запрос должен быть представлен в виде строки.

Кассандра — Cqlsh

В этой главе описывается оболочка языка запросов Cassandra и объясняется, как использовать ее команды.

По умолчанию Cassandra предоставляет оболочку языка запросов Cassandra (cqlsh), которая позволяет пользователям общаться с ним. Используя эту оболочку, вы можете запустить Cassandra Query Language (CQL) .

Используя cqlsh, вы можете

  • определить схему,
  • вставить данные и
  • выполнить запрос.

Начиная cqlsh

Запустите cqlsh, используя команду cqlsh, как показано ниже. В качестве вывода выдается приглашение Cassandra cqlsh.

[hadoop@linux bin]$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>

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

Опции использование
cqlsh —help Показывает разделы справки о параметрах команд cqlsh .
cqlsh — версия Предоставляет версию cqlsh, которую вы используете.
cqlsh —color Направляет оболочку для использования цветного вывода.
cqlsh —debug Показывает дополнительную информацию отладки.

cqlsh —execute

cql_statement

Указывает оболочке принимать и выполнять команду CQL.
cqlsh —file = «имя файла» Если вы используете эту опцию, Cassandra выполняет команду в указанном файле и завершает работу.
cqlsh —no-color Направляет Кассандру не использовать цветной вывод.
cqlsh -u «имя пользователя» Используя эту опцию, вы можете аутентифицировать пользователя. Имя пользователя по умолчанию: cassandra.
cqlsh-p «пароль» Используя эту опцию, вы можете аутентифицировать пользователя с помощью пароля. Пароль по умолчанию: cassandra.

cqlsh —execute

cql_statement

Cqlsh Команды

Cqlsh имеет несколько команд, которые позволяют пользователям взаимодействовать с ним. Команды перечислены ниже.

Документированные команды оболочки

Ниже приведены документированные команды оболочки Cqlsh. Это команды, используемые для выполнения таких задач, как отображение разделов справки, выход из cqlsh, description и т. Д.

  • HELP — отображает разделы справки для всех команд cqlsh.

  • CAPTURE — захватывает выходные данные команды и добавляет их в файл.

  • CONSISTENCY — показывает текущий уровень согласованности или устанавливает новый уровень согласованности.

  • КОПИЯ — Копирует данные в Кассандру и из нее.

  • DESCRIBE — описывает текущий кластер Cassandra и его объекты.

  • EXPAND — Расширяет вывод запроса по вертикали.

  • ВЫХОД — Используя эту команду, вы можете прекратить cqlsh.

  • PAGING — включает или отключает подкачку запросов.

  • SHOW — отображает подробную информацию о текущем сеансе cqlsh, такую ​​как предположения о версии Cassandra, хосте или типе данных.

  • SOURCE — выполняет файл, содержащий операторы CQL.

  • TRACING — Включает или отключает отслеживание запросов.

HELP — отображает разделы справки для всех команд cqlsh.

CAPTURE — захватывает выходные данные команды и добавляет их в файл.

CONSISTENCY — показывает текущий уровень согласованности или устанавливает новый уровень согласованности.

КОПИЯ — Копирует данные в Кассандру и из нее.

DESCRIBE — описывает текущий кластер Cassandra и его объекты.

EXPAND — Расширяет вывод запроса по вертикали.

ВЫХОД — Используя эту команду, вы можете прекратить cqlsh.

PAGING — включает или отключает подкачку запросов.

SHOW — отображает подробную информацию о текущем сеансе cqlsh, такую ​​как предположения о версии Cassandra, хосте или типе данных.

SOURCE — выполняет файл, содержащий операторы CQL.

TRACING — Включает или отключает отслеживание запросов.

Команды определения данных CQL

  • CREATE KEYSPACE — Создает KeySpace в Кассандре.

  • ИСПОЛЬЗОВАНИЕ — Соединяется с созданным KeySpace.

  • ALTER KEYSPACE — изменяет свойства KeySpace.

  • DROP KEYSPACE — удаляет KeySpace

  • CREATE TABLE — создает таблицу в KeySpace.

  • ALTER TABLE — изменяет свойства столбца таблицы.

  • DROP TABLE — удаляет таблицу.

  • TRUNCATE — удаляет все данные из таблицы.

  • CREATE INDEX — Определяет новый индекс для одного столбца таблицы.

  • DROP INDEX — удаляет именованный индекс.

CREATE KEYSPACE — Создает KeySpace в Кассандре.

ИСПОЛЬЗОВАНИЕ — Соединяется с созданным KeySpace.

ALTER KEYSPACE — изменяет свойства KeySpace.

DROP KEYSPACE — удаляет KeySpace

CREATE TABLE — создает таблицу в KeySpace.

ALTER TABLE — изменяет свойства столбца таблицы.

DROP TABLE — удаляет таблицу.

TRUNCATE — удаляет все данные из таблицы.

CREATE INDEX — Определяет новый индекс для одного столбца таблицы.

DROP INDEX — удаляет именованный индекс.

Команды управления данными CQL

  • INSERT — добавляет столбцы для строки в таблице.

  • ОБНОВЛЕНИЕ — Обновляет столбец строки.

  • УДАЛИТЬ — Удаляет данные из таблицы.

  • BATCH — выполняет несколько операторов DML одновременно.

INSERT — добавляет столбцы для строки в таблице.

ОБНОВЛЕНИЕ — Обновляет столбец строки.

УДАЛИТЬ — Удаляет данные из таблицы.

BATCH — выполняет несколько операторов DML одновременно.

Статьи CQL

  • SELECT — это предложение читает данные из таблицы

  • WHERE — Предложение where используется вместе с select для чтения определенных данных.

  • ORDERBY — Предложение orderby используется вместе с select для чтения определенных данных в определенном порядке.

SELECT — это предложение читает данные из таблицы

WHERE — Предложение where используется вместе с select для чтения определенных данных.

ORDERBY — Предложение orderby используется вместе с select для чтения определенных данных в определенном порядке.

Кассандра — Команды Shell

Cassandra предоставляет документированные команды оболочки в дополнение к командам CQL. Ниже приведены документированные команды оболочки Cassandra.

Помогите

Команда HELP отображает краткий обзор и краткое описание всех команд cqlsh. Ниже приведено использование справочной команды.

cqlsh> help

Documented shell commands:
===========================
CAPTURE COPY DESCRIBE EXPAND PAGING SOURCE
CONSISTENCY DESC EXIT HELP SHOW TRACING.

CQL help topics:
================
ALTER           CREATE_TABLE_OPTIONS       SELECT
ALTER_ADD       CREATE_TABLE_TYPES         SELECT_COLUMNFAMILY
ALTER_ALTER     CREATE_USER                SELECT_EXPR
ALTER_DROP      DELETE                     SELECT_LIMIT
ALTER_RENAME    DELETE_COLUMNS             SELECT_TABLE 

Захватить

Эта команда захватывает выходные данные команды и добавляет их в файл. Например, взгляните на следующий код, который записывает выходные данные в файл с именем Outputfile .

cqlsh> CAPTURE '/home/hadoop/CassandraProgs/Outputfile'

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

cqlsh:tutorialspoint> select * from emp;

файл

Вы можете отключить захват, используя следующую команду.

cqlsh:tutorialspoint> capture off;

консистенция

Эта команда отображает текущий уровень согласованности или устанавливает новый уровень согласованности.

cqlsh:tutorialspoint> CONSISTENCY
Current consistency level is 1.

копия

Эта команда копирует данные в и из Кассандры в файл. Ниже приведен пример копирования таблицы с именем emp в файл myfile .

cqlsh:tutorialspoint> COPY emp (emp_id, emp_city, emp_name, emp_phone,emp_sal) TO ‘myfile’;
4 rows exported in 0.034 seconds.

Если вы откроете и подтвердите указанный файл, вы сможете найти скопированные данные, как показано ниже.

File2

описывать

Эта команда описывает текущий кластер Cassandra и его объектов. Варианты этой команды описаны ниже.

Описать кластер — эта команда предоставляет информацию о кластере.

cqlsh:tutorialspoint> describe cluster;

Cluster: Test Cluster
Partitioner: Murmur3Partitioner

Range ownership:
                  -658380912249644557 [127.0.0.1]
                  -2833890865268921414 [127.0.0.1]
                  -6792159006375935836 [127.0.0.1] 

Describe Keyspaces — эта команда перечисляет все пространства ключей в кластере. Ниже приведено использование этой команды.

cqlsh:tutorialspoint> describe keyspaces;

system_traces system tp tutorialspoint

Описать таблицы — эта команда выводит список всех таблиц в пространстве ключей. Ниже приведено использование этой команды.

cqlsh:tutorialspoint> describe tables;
emp

Описать таблицу — Эта команда предоставляет описание таблицы. Ниже приведено использование этой команды.

cqlsh:tutorialspoint> describe table emp;

CREATE TABLE tutorialspoint.emp (
   emp_id int PRIMARY KEY,
   emp_city text,
   emp_name text,
   emp_phone varint,
   emp_sal varint
) WITH bloom_filter_fp_chance = 0.01
   AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
   AND comment = ''
   AND compaction = {'min_threshold': '4', 'class':
   'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy',
   'max_threshold': '32'}
	
   AND compression = {'sstable_compression':
   'org.apache.cassandra.io.compress.LZ4Compressor'}
	
   AND dclocal_read_repair_chance = 0.1
   AND default_time_to_live = 0
   AND gc_grace_seconds = 864000
   AND max_index_interval = 2048
   AND memtable_flush_period_in_ms = 0
   AND min_index_interval = 128
   AND read_repair_chance = 0.0
   AND speculative_retry = '99.0PERCENTILE';
CREATE INDEX emp_emp_sal_idx ON tutorialspoint.emp (emp_sal);

Опишите тип

Эта команда используется для описания пользовательского типа данных. Ниже приведено использование этой команды.

cqlsh:tutorialspoint> describe type card_details;

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
);

Опишите типы

Эта команда выводит список всех пользовательских типов данных. Ниже приведено использование этой команды. Предположим, есть два пользовательских типа данных: card и card_details .

cqlsh:tutorialspoint> DESCRIBE TYPES;

card_details card

расширять

Эта команда используется для расширения вывода. Перед использованием этой команды вы должны включить команду расширения. Ниже приведено использование этой команды.

cqlsh:tutorialspoint> expand on;
cqlsh:tutorialspoint> select * from emp;

@ Row 1
-----------+------------
    emp_id | 1
  emp_city | Hyderabad
  emp_name | ram
 emp_phone | 9848022338
   emp_sal | 50000
  
@ Row 2
-----------+------------
    emp_id | 2
  emp_city | Delhi
  emp_name | robin
 emp_phone | 9848022339
   emp_sal | 50000
  
@ Row 3
-----------+------------
    emp_id | 4
  emp_city | Pune
  emp_name | rajeev
 emp_phone | 9848022331
   emp_sal | 30000
  
@ Row 4
-----------+------------
    emp_id | 3
  emp_city | Chennai
  emp_name | rahman
 emp_phone | 9848022330
   emp_sal | 50000
(4 rows)

Примечание. Вы можете отключить параметр расширения с помощью следующей команды.

cqlsh:tutorialspoint> expand off;
Disabled Expanded output.

Выход

Эта команда используется для завершения оболочки cql.

Шоу

Эта команда отображает сведения о текущем сеансе cqlsh, такие как версия Cassandra, предположения о хосте или типе данных. Ниже приведено использование этой команды.

cqlsh:tutorialspoint> show host;
Connected to Test Cluster at 127.0.0.1:9042.

cqlsh:tutorialspoint> show version;
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]

Источник

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

Source1

Затем вы можете выполнить файл, содержащий команды, как показано ниже.

cqlsh:tutorialspoint> source '/home/hadoop/CassandraProgs/inputfile';

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | Delhi     |   robin  | 9848022339 | 50000
      3 | Pune      |   rajeev | 9848022331 | 30000
      4 | Chennai   |   rahman | 9848022330 | 50000
(4 rows)

Кассандра — Создать пространство ключей

Создание Keyspace с использованием Cqlsh

Пространство ключей в Cassandra — это пространство имен, которое определяет репликацию данных на узлах. Кластер содержит одно пространство ключей на узел. Ниже приведен синтаксис для создания пространства ключей с помощью оператора CREATE KEYSPACE .

Синтаксис

CREATE KEYSPACE <identifier> WITH <properties>

т.е.

CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of   replicas’};

CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’}

AND durable_writes = ‘Boolean value’;

Оператор CREATE KEYSPACE имеет два свойства: репликация и durable_writes .

копирование

Вариант репликации — указать стратегию размещения реплики и количество требуемых реплик. В следующей таблице перечислены все стратегии размещения реплик.

Название стратегии Описание
Простая стратегия » Указывает простой фактор репликации для кластера.
Стратегия топологии сети Используя эту опцию, вы можете установить коэффициент репликации для каждого датацентра независимо.
Старая стратегия топологии сети Это устаревшая стратегия репликации.

Используя эту опцию, вы можете указать Cassandra, использовать ли commitlog для обновлений в текущем KeySpace. Этот параметр не является обязательным и по умолчанию он имеет значение true.

пример

Ниже приведен пример создания KeySpace.

  • Здесь мы создаем пространство ключей с именем TutorialsPoint .

  • Мы используем первую стратегию размещения реплик, т.е. простую стратегию .

  • И мы выбираем коэффициент репликации до 1 реплики .

Здесь мы создаем пространство ключей с именем TutorialsPoint .

Мы используем первую стратегию размещения реплик, т.е. простую стратегию .

И мы выбираем коэффициент репликации до 1 реплики .

cqlsh.> CREATE KEYSPACE tutorialspoint
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

верификация

Вы можете проверить, создана ли таблица или нет, используя команду Describe . Если вы используете эту команду над пространствами клавиш, она отобразит все пространства клавиш, созданные, как показано ниже.

cqlsh> DESCRIBE keyspaces;

tutorialspoint system system_traces 

Здесь вы можете наблюдать недавно созданную точку обучения KeySpace .

Durable_writes

По умолчанию для свойств таблицы durable_writes задано значение true, однако может быть установлено значение false. Вы не можете установить это свойство для симплекс стратегии.

пример

Ниже приведен пример, демонстрирующий использование свойства долговременной записи.

cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;

верификация

Вы можете проверить, было ли для свойства durable_writes теста KeySpace установлено значение false, запросив системное пространство ключей. Этот запрос дает вам все KeySpaces вместе с их свойствами.

cqlsh> SELECT * FROM system.schema_keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------

           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "2"}

(4 rows)

Здесь вы можете видеть, что свойство durable_writes теста KeySpace было установлено в false.

Использование пространства ключей

Вы можете использовать созданное KeySpace, используя ключевое слово USE . Его синтаксис выглядит следующим образом —

Syntax:USE <identifier>

пример

В следующем примере мы используем учебную точку KeySpace .

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>

Создание Keyspace с использованием Java API

Вы можете создать пространство ключей, используя метод execute () класса Session . Следуйте приведенным ниже инструкциям, чтобы создать пространство ключей с помощью Java API.

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object

Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object

Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект в одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

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

Session session = cluster.connect(“ Your keyspace name ” );

Шаг 3: Выполнить запрос

Вы можете выполнять CQL- запросы, используя метод execute () класса Session . Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute () . Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В этом примере мы создаем пространство ключей с именем tp. Мы используем первую стратегию размещения реплик, т. Е. Простую стратегию, и мы выбираем коэффициент репликации для одной реплики.

Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

String query = "CREATE KEYSPACE tp WITH replication "
   + "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);

Шаг 4: Используйте KeySpace

Вы можете использовать созданное KeySpace, используя метод execute (), как показано ниже.

execute(“ USE tp ” );

Ниже приведена полная программа для создания и использования пространства ключей в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_KeySpace {

   public static void main(String args[]){

      //Query
      String query = "CREATE KEYSPACE tp WITH replication "
         + "= {'class':'SimpleStrategy', 'replication_factor':1};";
                    
      //creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect();
     
      //Executing the query
      session.execute(query);
     
      //using the KeySpace
      session.execute("USE tp");
      System.out.println("Keyspace created"); 
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Create_KeySpace.java
$java Create_KeySpace

При нормальных условиях он выдаст следующий результат:

Keyspace created

Кассандра — Alter Keyspace

Изменение KeySpace

ALTER KEYSPACE можно использовать для изменения свойств, таких как количество реплик и durable_writes для KeySpace. Ниже приведен синтаксис этой команды.

Синтаксис

ALTER KEYSPACE <identifier> WITH <properties>

т.е.

ALTER KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’};

Свойства ALTER KEYSPACE такие же, как CREATE KEYSPACE. У него есть два свойства: replication и durable_writes .

копирование

Опция репликации определяет стратегию размещения реплик и количество требуемых реплик.

Durable_writes

Используя эту опцию, вы можете указать Cassandra, использовать ли commitlog для обновлений в текущем KeySpace. Этот параметр не является обязательным и по умолчанию он имеет значение true.

пример

Ниже приведен пример изменения KeySpace.

  • Здесь мы изменяем KeySpace с именем TutorialsPoint .

  • Мы меняем коэффициент репликации с 1 на 3.

Здесь мы изменяем KeySpace с именем TutorialsPoint .

Мы меняем коэффициент репликации с 1 на 3.

cqlsh.> ALTER KEYSPACE tutorialspoint
WITH replication = {'class':'NetworkTopologyStrategy', 'replication_factor' : 3};

Изменение Durable_writes

Вы также можете изменить свойство durable_writes KeySpace. Ниже приведено свойство durable_writes тестового KeySpace.

SELECT * FROM system.schema_keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}
(4 rows)

ALTER KEYSPACE test
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3}
AND DURABLE_WRITES = true;

Еще раз, если вы проверите свойства KeySpaces, он выдаст следующий результат.

SELECT * FROM system.schema_keyspaces;
  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
           test |           True | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}

(4 rows)

Изменение пространства ключей с помощью Java API

Вы можете изменить пространство клавиш, используя метод execute () класса Session . Выполните приведенные ниже шаги, чтобы изменить пространство клавиш с помощью Java API

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster

Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

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

Session session = cluster.connect(“ Your keyspace name ” );

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В этом примере

  • Мы изменяем пространство ключей с именем tp . Мы изменяем параметр репликации с простой стратегии на стратегию топологии сети.

  • Мы изменяем durable_writes на false

Мы изменяем пространство ключей с именем tp . Мы изменяем параметр репликации с простой стратегии на стратегию топологии сети.

Мы изменяем durable_writes на false

Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

//Query
String query = "ALTER KEYSPACE tp WITH replication " + "=   {'class':'NetworkTopologyStrategy', 'datacenter1':3}" +" AND DURABLE_WRITES = false;";
session.execute(query);

Ниже приведена полная программа для создания и использования пространства ключей в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Alter_KeySpace {
   public static void main(String args[]){

      //Query
      String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}"
         + "AND DURABLE_WRITES = false;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect();
 
      //Executing the query
      session.execute(query);
 
      System.out.println("Keyspace altered");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Alter_KeySpace.java
$java Alter_KeySpace

При нормальных условиях он производит следующий вывод —

Keyspace Altered

Кассандра — Drop Keyspace

Отбрасывание пространства ключей

Вы можете удалить KeySpace, используя команду DROP KEYSPACE . Ниже приведен синтаксис удаления KeySpace.

Синтаксис

DROP KEYSPACE <identifier>

т.е.

DROP KEYSPACE “KeySpace name”

пример

Следующий код удаляет учебную точку пространства ключей.

cqlsh> DROP KEYSPACE tutorialspoint;

верификация

Проверьте пространство клавиш, используя команду Describe, и проверьте, отбрасывается ли таблица, как показано ниже.

cqlsh> DESCRIBE keyspaces;

system system_traces

Так как мы удалили учебную точку пространства ключей, вы не найдете ее в списке пространств ключей.

Отбрасывание пространства ключей с помощью Java API

Вы можете создать пространство ключей, используя метод execute () класса Session. Следуйте приведенным ниже инструкциям, чтобы удалить пространство ключей с помощью Java API.

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object 
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

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

Session session = cluster.connect(“ Your keyspace name”);

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh.

В следующем примере мы удаляем пространство ключей с именем tp . Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

String query = "DROP KEYSPACE tp; ";

session.execute(query);

Ниже приведена полная программа для создания и использования пространства ключей в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Drop_KeySpace {

   public static void main(String args[]){

      //Query
      String query = "Drop KEYSPACE tp";

      //creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect();
    
      //Executing the query
      session.execute(query);
      System.out.println("Keyspace deleted");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Delete_KeySpace.java
$java Delete_KeySpace

В нормальных условиях он должен выдавать следующий результат:

Keyspace deleted

Кассандра — Создать Стол

Создание таблицы

Вы можете создать таблицу с помощью команды CREATE TABLE . Ниже приведен синтаксис для создания таблицы.

Синтаксис

CREATE (TABLE | COLUMNFAMILY) <tablename>
('<column-definition>' , '<column-definition>')
(WITH <option> AND <option>)

Определение столбца

Вы можете определить столбец, как показано ниже.

column name1 data type,
column name2 data type,

example:

age int,
name text

Основной ключ

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

CREATE TABLE tablename(
   column1 name datatype PRIMARYKEY,
   column2 name data type,
   column3 name data type.
   )

или же

CREATE TABLE tablename(
   column1 name datatype PRIMARYKEY,
   column2 name data type,
   column3 name data type,
   PRIMARY KEY (column1)
   )

пример

Ниже приведен пример создания таблицы в Cassandra с использованием cqlsh. Вот и мы —

  • Использование обучающей программы

  • Создание таблицы с именем emp

Использование обучающей программы

Создание таблицы с именем emp

Он будет содержать такие данные, как имя сотрудника, идентификатор, город, зарплата и номер телефона. Идентификатор сотрудника является первичным ключом.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>; CREATE TABLE emp(
   emp_id int PRIMARY KEY,
   emp_name text,
   emp_city text,
   emp_sal varint,
   emp_phone varint
   );

верификация

Оператор выбора даст вам схему. Проверьте таблицу с помощью оператора select, как показано ниже.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------

(0 rows)

Здесь вы можете наблюдать за таблицей, созданной по заданным столбцам. Так как мы удалили учебную точку пространства ключей, вы не найдете ее в списке пространств ключей.

Создание таблицы с использованием Java API

Вы можете создать таблицу с помощью метода execute () класса Session. Следуйте приведенным ниже инструкциям, чтобы создать таблицу с использованием Java API.

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

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

Session session = cluster.connect(“ Your keyspace name ” );

Здесь мы используем пространство ключей с именем tp . Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“ tp” );

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh.

В следующем примере мы создаем таблицу с именем emp. Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

//Query
String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
   + "emp_name text, "
   + "emp_city text, "
   + "emp_sal varint, "
   + "emp_phone varint );";
session.execute(query);

Ниже приведена полная программа для создания и использования пространства ключей в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Table {

   public static void main(String args[]){

      //Query
      String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
         + "emp_name text, "
         + "emp_city text, "
         + "emp_sal varint, "
         + "emp_phone varint );";
		
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);
 
      System.out.println("Table created");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Create_Table.java
$java Create_Table

В нормальных условиях он должен выдавать следующий результат:

Table created

Кассандра — Alter Table

Изменение таблицы

Вы можете изменить таблицу, используя команду ALTER TABLE . Ниже приведен синтаксис для создания таблицы.

Синтаксис

ALTER (TABLE | COLUMNFAMILY) <tablename> <instruction>

Используя команду ALTER, вы можете выполнить следующие операции:

  • Добавить столбец

  • Оставить столбец

Добавить столбец

Оставить столбец

Добавление столбца

Используя команду ALTER, вы можете добавить столбец в таблицу. При добавлении столбцов необходимо следить за тем, чтобы имя столбца не конфликтовало с существующими именами столбцов и чтобы таблица не была определена с опцией компактного хранения. Ниже приведен синтаксис добавления столбца в таблицу.

ALTER TABLE table name
ADD  new column datatype;

пример

Ниже приведен пример добавления столбца к существующей таблице. Здесь мы добавляем столбец с именем emp_email текстового типа данных в таблицу с именем emp .

cqlsh:tutorialspoint> ALTER TABLE emp
   ... ADD emp_email text;

верификация

Используйте оператор SELECT, чтобы проверить, добавлен столбец или нет. Здесь вы можете увидеть недавно добавленный столбец emp_email.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_email | emp_name | emp_phone | emp_sal
--------+----------+-----------+----------+-----------+---------

Отбрасывание столбца

Используя команду ALTER, вы можете удалить столбец из таблицы. Перед удалением столбца из таблицы убедитесь, что таблица не определена с опцией компактного хранения. Ниже приведен синтаксис для удаления столбца из таблицы с помощью команды ALTER.

ALTER table name
DROP column name;

пример

Ниже приведен пример удаления столбца из таблицы. Здесь мы удаляем столбец с именем emp_email .

cqlsh:tutorialspoint> ALTER TABLE emp DROP emp_email;

верификация

Убедитесь, что столбец удален, используя оператор выбора , как показано ниже.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------
(0 rows)

Так как столбец emp_email был удален, вы больше не можете его найти.

Изменение таблицы с использованием Java API

Вы можете создать таблицу с помощью метода execute () класса Session. Выполните шаги, приведенные ниже, чтобы изменить таблицу с помощью Java API.

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“ Your keyspace name ” );
Session session = cluster.connect(“ tp” );

Здесь мы используем KeySpace с именем tp. Поэтому создайте объект сеанса, как показано ниже.

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы добавляем столбец в таблицу с именем emp. Для этого необходимо сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

//Query
String query1 = "ALTER TABLE emp ADD emp_email text";
session.execute(query);

Ниже приведена полная программа для добавления столбца к существующей таблице.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Add_column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp ADD emp_email text";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
     
      //Creating Session object
      Session session = cluster.connect("tp");
    
      //Executing the query
      session.execute(query);
  
      System.out.println("Column added");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Add_Column.java
$java Add_Column

В нормальных условиях он должен выдавать следующий результат:

Column added

Удаление столбца

Ниже приведена полная программа для удаления столбца из существующей таблицы.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Delete_Column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp DROP emp_email;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //executing the query
      session.execute(query);
    
      System.out.println("Column deleted");
   }
 }

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Delete_Column.java
$java Delete_Column

В нормальных условиях он должен выдавать следующий результат:

Column deleted

Кассандра — Дроп Стол

Отбрасывание стола

Вы можете удалить таблицу с помощью команды Удалить таблицу . Его синтаксис выглядит следующим образом —

Синтаксис

DROP TABLE <tablename>

пример

Следующий код удаляет существующую таблицу из KeySpace.

cqlsh:tutorialspoint> DROP TABLE emp;

верификация

Используйте команду Describe, чтобы проверить, удалена ли таблица или нет. Поскольку таблица emp была удалена, вы не найдете ее в списке семейств столбцов.

cqlsh:tutorialspoint> DESCRIBE COLUMNFAMILIES;
employee

Удаление таблицы с использованием Java API

Вы можете удалить таблицу, используя метод execute () класса Session. Следуйте приведенным ниже инструкциям, чтобы удалить таблицу с помощью Java API.

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже —

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“Your keyspace name”);

Здесь мы используем пространство ключей с именем tp . Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“tp”);

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы удаляем таблицу с именем emp . Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

// Query

String query = "DROP TABLE emp1;”;
session.execute(query);

Ниже приведена полная программа для удаления таблицы в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
 
public class Drop_Table {

   public static void main(String args[]){

      //Query
      String query = "DROP TABLE emp1;";
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tp");
   
      //Executing the query
      session.execute(query);
    
      System.out.println("Table dropped");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Drop_Table.java
$java Drop_Table

В нормальных условиях он должен выдавать следующий результат:

Table dropped

Кассандра — Усеченный Стол

Усечение таблицы

Вы можете обрезать таблицу с помощью команды TRUNCATE. Когда вы усекаете таблицу, все строки таблицы удаляются навсегда. Ниже приведен синтаксис этой команды.

Синтаксис

TRUNCATE <tablename>

пример

Предположим, что есть таблица с именем student и следующими данными.

s_id s_name s_branch s_aggregate
1 баран ЭТО 70
2 рахман EEE 75
3 Роббин Мех 72

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

cqlsh:tp> select * from student;

 s_id | s_aggregate | s_branch | s_name
------+-------------+----------+--------
    1 |          70 |       IT | ram
    2 |          75 |      EEE | rahman
    3 |          72 |     MECH | robbin

(3 rows)

Теперь обрежьте таблицу с помощью команды TRUNCATE.

cqlsh:tp> TRUNCATE student;

верификация

Убедитесь, что таблица обрезана, выполнив оператор select . Ниже приведен вывод оператора select в таблице учеников после усечения.

cqlsh:tp> select * from student;

 s_id | s_aggregate | s_branch | s_name
------+-------------+----------+--------

(0 rows)

Усечение таблицы с использованием Java API

Вы можете обрезать таблицу, используя метод execute () класса Session. Следуйте приведенным ниже инструкциям, чтобы обрезать таблицу.

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2: Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“ Your keyspace name ” );
Session session = cluster.connect(“ tp” );

Здесь мы используем пространство ключей с именем tp. Поэтому создайте объект сеанса, как показано ниже.

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы усекаем таблицу с именем emp . Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

//Query
String query = "TRUNCATE emp;;”;
session.execute(query);

Ниже приведена полная программа для усечения таблицы в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Truncate_Table {

   public static void main(String args[]){
   
      //Query
      String query = "Truncate student;";
   
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect("tp");
   
      //Executing the query
      session.execute(query);
      System.out.println("Table truncated");
   }
} 

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Truncate_Table.java
$java Truncate_Table

В нормальных условиях он должен выдавать следующий результат:

Table truncated

Кассандра — Создать индекс

Создание индекса с использованием Cqlsh

Вы можете создать индекс в Cassandra с помощью команды CREATE INDEX. Его синтаксис выглядит следующим образом —

CREATE INDEX <identifier> ON <tablename>

Ниже приведен пример создания индекса для столбца. Здесь мы создаем индекс для столбца emp_name в таблице с именем emp.

cqlsh:tutorialspoint> CREATE INDEX name ON emp1 (emp_name);

Создание индекса с использованием Java API

Вы можете создать индекс для столбца таблицы, используя метод execute () класса Session. Выполните шаги, приведенные ниже, чтобы создать индекс для столбца в таблице.

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“ Your keyspace name ” );

Здесь мы используем KeySpace под названием tp. Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“ tp” );

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы создаем индекс для столбца с именем emp_name в таблице с именем emp. Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

//Query
String query = "CREATE INDEX name ON emp1 (emp_name);";
session.execute(query);

Ниже приведена полная программа для создания индекса столбца в таблице в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Index {
 
   public static void main(String args[]){

      //Query
      String query = "CREATE INDEX name ON emp1 (emp_name);";
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
       
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);
      System.out.println("Index created");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Create_Index.java
$java Create_Index

В нормальных условиях он должен выдавать следующий результат:

Index created

Кассандра — падение индекса

Отбрасывание индекса

Вы можете удалить индекс, используя команду DROP INDEX . Его синтаксис выглядит следующим образом —

DROP INDEX <identifier>

Ниже приведен пример удаления индекса столбца в таблице. Здесь мы отбрасываем индекс имени столбца в таблице emp.

cqlsh:tp> drop index name;

Удаление индекса с использованием Java API

Вы можете удалить индекс таблицы, используя метод execute () класса Session. Следуйте приведенным ниже инструкциям, чтобы удалить индекс из таблицы.

Шаг 1: Создайте объект кластера

Создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“ Your keyspace name ” );

Здесь мы используем KeySpace с именем tp. Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“ tp” );

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы отбрасываем индекс «имя» таблицы emp . Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

//Query
String query = "DROP INDEX user_name;";
session.execute(query);

Ниже приведена полная программа для удаления индекса в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Drop_Index {

   public static void main(String args[]){
     
      //Query
      String query = "DROP INDEX user_name;";
 
      //Creating cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();.
 
      //Creating Session object
      Session session = cluster.connect("tp"); 
 
      //Executing the query
      session.execute(query);
      
      System.out.println("Index dropped");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Drop_index.java
$java Drop_index

В нормальных условиях он должен выдавать следующий результат:

Index dropped

Кассандра — Пакетная отчетность

Использование пакетных операторов

Используя BATCH, вы можете выполнять несколько операторов модификации (вставка, обновление, удаление) одновременно. Его синтаксис выглядит следующим образом —

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH

пример

Предположим, что в Кассандре есть таблица с именем emp, имеющая следующие данные:

emp_id emp_name emp_city emp_phone emp_sal
1 баран Хайдарабад 9848022338 50000
2 Робин Дели 9848022339 50000
3 рахман Chennai 9848022330 45000

В этом примере мы выполним следующие операции:

  • Вставьте новую строку со следующими данными (4, rajeev, pune, 9848022331, 30000).
  • Обновите зарплату сотрудника с идентификатором строки 3 до 50000.
  • Удалить город сотрудника с идентификатором строки 2.

Чтобы выполнить вышеуказанные операции за один раз, используйте следующую команду BATCH —

cqlsh:tutorialspoint> BEGIN BATCH
... INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values(  4,'Pune','rajeev',9848022331, 30000);
... UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
... DELETE emp_city FROM emp WHERE emp_id = 2;
... APPLY BATCH;

верификация

После внесения изменений проверьте таблицу с помощью инструкции SELECT. Он должен произвести следующий вывод —

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad | ram      | 9848022338 | 50000
      2 | null      | robin    | 9848022339 | 50000
      3 | Chennai   | rahman   | 9848022330 | 50000
      4 | Pune      | rajeev   | 9848022331 | 30000
    
(4 rows)

Здесь вы можете наблюдать за таблицей с измененными данными.

Пакетные операторы с использованием Java API

Пакетные операторы могут быть записаны программно в таблицу с помощью метода execute () класса Session. Выполните шаги, приведенные ниже, чтобы выполнить несколько операторов, используя пакетный оператор с помощью Java API.

Шаг 1: Создайте объект кластера

Создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Используйте следующий код для создания объекта кластера —

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“ Your keyspace name ”);

Здесь мы используем KeySpace с именем tp . Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“tp”);

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В этом примере мы выполним следующие операции:

  • Вставьте новую строку со следующими данными (4, rajeev, pune, 9848022331, 30000).
  • Обновите зарплату сотрудника с идентификатором строки 3 до 50000.
  • Удалите город сотрудника с идентификатором строки 2.

Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

String query1 = ” BEGIN BATCH INSERT INTO emp (emp_id, emp_city, emp_name,   emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
DELETE emp_city FROM emp WHERE emp_id = 2;
APPLY BATCH;”;

Ниже приведена полная программа для одновременного выполнения нескольких операторов в таблице в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Batch {

   public static void main(String args[]){
    
      //query
      String query =" BEGIN BATCH INSERT INTO emp (emp_id, emp_city,
         emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);"
    
         + "UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;"
         + "DELETE emp_city FROM emp WHERE emp_id = 2;"
         + "APPLY BATCH;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);

      System.out.println("Changes done");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Batch.java
$java Batch

В нормальных условиях он должен выдавать следующий результат:

Changes done

Кассандра — Создать данные

Создание данных в таблице

Вы можете вставить данные в столбцы строки в таблице, используя команду INSERT . Ниже приведен синтаксис для создания данных в таблице.

INSERT INTO <tablename>
(<column1 name>, <column2 name>....)
VALUES (<value1>, <value2>....)
USING <option>

пример

Предположим, что есть таблица emp со столбцами (emp_id, emp_name, emp_city, emp_phone, emp_sal), и вам нужно вставить следующие данные в таблицу emp .

emp_id emp_name emp_city emp_phone emp_sal
1 баран Хайдарабад 9848022338 50000
2 Робин Хайдарабад 9848022339 40000
3 рахман Chennai 9848022330 45000

Используйте команды, приведенные ниже, чтобы заполнить таблицу необходимыми данными.

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(3,'rahman', 'Chennai', 9848022330, 45000);

верификация

После вставки данных используйте инструкцию SELECT, чтобы проверить, были ли вставлены данные или нет. Если вы проверите таблицу emp с помощью оператора SELECT, вы получите следующий вывод.

cqlsh:tutorialspoint> SELECT * FROM emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 | Hyderabad |    robin | 9848022339 | 40000
      3 |   Chennai |   rahman | 9848022330 | 45000
 
(3 rows)

Здесь вы можете увидеть, что таблица заполнена данными, которые мы вставили.

Создание данных с использованием Java API

Вы можете создавать данные в таблице, используя метод execute () класса Session. Следуйте приведенным ниже инструкциям, чтобы создать данные в таблице с помощью API Java.

Шаг 1: Создайте объект кластера

Создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“ Your keyspace name ” );

Здесь мы используем KeySpace под названием tp . Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“ tp” );

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы вставляем данные в таблицу с именем emp . Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

String query1 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);” ;
 
String query2 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);” ;
 
String query3 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(3,'rahman', 'Chennai', 9848022330, 45000);” ;
 
session.execute(query1);
session.execute(query2);
session.execute(query3); 

Ниже приведена полная программа для вставки данных в таблицу в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Data {

   public static void main(String args[]){

      //queries
      String query1 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone,  emp_sal)"
		
         + " VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);" ;
                             
      String query2 = "INSERT INTO emp (emp_id, emp_name, emp_city,
         emp_phone, emp_sal)"
      
         + " VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);" ;
                             
      String query3 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)"
       
         + " VALUES(3,'rahman', 'Chennai', 9848022330, 45000);" ;

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
       
      //Executing the query
      session.execute(query1);
        
      session.execute(query2);
        
      session.execute(query3);
        
      System.out.println("Data created");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Create_Data.java
$java Create_Data

В нормальных условиях он должен выдавать следующий результат:

Data created

Кассандра — Обновить данные

Обновление данных в таблице

UPDATE — это команда, используемая для обновления данных в таблице. Следующие ключевые слова используются при обновлении данных в таблице —

  • Где — это предложение используется для выбора строки, подлежащей обновлению.

  • Set — установить значение, используя это ключевое слово.

  • Должен — включает все столбцы, составляющие первичный ключ.

Где — это предложение используется для выбора строки, подлежащей обновлению.

Set — установить значение, используя это ключевое слово.

Должен — включает все столбцы, составляющие первичный ключ.

При обновлении строк, если данная строка недоступна, UPDATE создает новую строку. Ниже приведен синтаксис команды UPDATE —

UPDATE <tablename>
SET <column name> = <new value>
<column name> = <value>....
WHERE <condition>

пример

Предположим, есть таблица с именем emp . В этой таблице хранятся данные о сотрудниках определенной компании, и она имеет следующие данные —

emp_id emp_name emp_city emp_phone emp_sal
1 баран Хайдарабад 9848022338 50000
2 Робин Хайдарабад 9848022339 40000
3 рахман Chennai 9848022330 45000

Давайте теперь обновим emp_city робина до Дели, а его зарплату до 50000. Ниже приведен запрос на выполнение необходимых обновлений.

cqlsh:tutorialspoint> UPDATE emp SET emp_city='Delhi',emp_sal=50000
   WHERE emp_id=2;

верификация

Используйте оператор SELECT, чтобы проверить, были ли данные обновлены или нет. Если вы проверите таблицу emp с помощью оператора SELECT, она выдаст следующий вывод.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 45000
      
(3 rows)

Здесь вы можете наблюдать, как обновляются данные таблицы.

Обновление данных с использованием Java API

Вы можете обновить данные в таблице, используя метод execute () класса Session. Следуйте приведенным ниже инструкциям, чтобы обновить данные в таблице с помощью Java API.

Шаг 1: Создайте объект кластера

Создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Используйте следующий код для создания объекта кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“ Your keyspace name”);

Здесь мы используем KeySpace с именем tp . Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“tp”);

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы обновляем таблицу emp. Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже:

String query = “ UPDATE emp SET emp_city='Delhi',emp_sal=50000
WHERE emp_id = 2;” ;

Ниже приведена полная программа для обновления данных в таблице с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Update_Data {
  
   public static void main(String args[]){
      
      //query
      String query = " UPDATE emp SET emp_city='Delhi',emp_sal=50000"
          
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
         
      //Creating Session object
      Session session = cluster.connect("tp");
         
      //Executing the query
      session.execute(query);

      System.out.println("Data updated");
   }
 }

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Update_Data.java
$java Update_Data

В нормальных условиях он должен выдавать следующий результат:

Data updated

Кассандра — Читать данные

Чтение данных с использованием предложения Select

Предложение SELECT используется для чтения данных из таблицы в Cassandra. Используя это предложение, вы можете прочитать всю таблицу, один столбец или конкретную ячейку. Ниже приведен синтаксис предложения SELECT.

SELECT FROM <tablename>

пример

Предположим, что в пространстве ключей есть таблица с именем emp со следующими деталями:

emp_id emp_name emp_city emp_phone emp_sal
1 баран Хайдарабад 9848022338 50000
2 Робин ноль 9848022339 50000
3 рахман Chennai 9848022330 50000
4 Раджив Пуна 9848022331 30000

В следующем примере показано, как прочитать всю таблицу с помощью предложения SELECT. Здесь мы читаем таблицу с именем emp .

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

Чтение обязательных столбцов

В следующем примере показано, как прочитать определенный столбец в таблице.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Где пункт

Используя предложение WHERE, вы можете наложить ограничение на необходимые столбцы. Его синтаксис выглядит следующим образом —

SELECT FROM <table name> WHERE <condition>;

Примечание. Предложение WHERE может использоваться только для столбцов, которые являются частью первичного ключа или имеют вторичный индекс.

В следующем примере мы читаем сведения о сотруднике, чья зарплата составляет 50000. Прежде всего, установите вторичный индекс в столбце emp_sal.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Чтение данных с использованием Java API

Вы можете прочитать данные из таблицы, используя метод execute () класса Session. Выполните шаги, приведенные ниже, чтобы выполнить несколько операторов, используя пакетный оператор с помощью Java API.

Шаг 1: Создайте объект кластера

Создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Используйте следующий код для создания объекта кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“Your keyspace name”);

Здесь мы используем KeySpace под названием tp . Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“tp”);

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В этом примере мы получаем данные из таблицы emp . Сохраните запрос в строке и передайте его методу execute () класса сеанса, как показано ниже.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Выполните запрос, используя метод execute () класса Session.

Шаг 4: Получить объект ResultSet

Запросы select вернут результат в виде объекта ResultSet , поэтому сохраните результат в объекте класса RESULTSET, как показано ниже.

ResultSet result = session.execute( );

Ниже приведена полная программа для чтения данных из таблицы.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Read_Data.java
$java Read_Data

В нормальных условиях он должен выдавать следующий результат:

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]

Кассандра — Читать данные

Чтение данных с использованием предложения Select

Предложение SELECT используется для чтения данных из таблицы в Cassandra. Используя это предложение, вы можете прочитать всю таблицу, один столбец или конкретную ячейку. Ниже приведен синтаксис предложения SELECT.

SELECT FROM <tablename>

пример

Предположим, что в пространстве ключей есть таблица с именем emp со следующими деталями:

emp_id emp_name emp_city emp_phone emp_sal
1 баран Хайдарабад 9848022338 50000
2 Робин ноль 9848022339 50000
3 рахман Chennai 9848022330 50000
4 Раджив Пуна 9848022331 30000

В следующем примере показано, как прочитать всю таблицу с помощью предложения SELECT. Здесь мы читаем таблицу с именем emp .

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

Чтение обязательных столбцов

В следующем примере показано, как прочитать определенный столбец в таблице.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Где пункт

Используя предложение WHERE, вы можете наложить ограничение на необходимые столбцы. Его синтаксис выглядит следующим образом —

SELECT FROM <table name> WHERE <condition>;

Примечание. Предложение WHERE может использоваться только для столбцов, которые являются частью первичного ключа или имеют вторичный индекс.

В следующем примере мы читаем сведения о сотруднике, чья зарплата составляет 50000. Прежде всего, установите вторичный индекс в столбце emp_sal.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Чтение данных с использованием Java API

Вы можете прочитать данные из таблицы, используя метод execute () класса Session. Выполните шаги, приведенные ниже, чтобы выполнить несколько операторов, используя пакетный оператор с помощью Java API.

Шаг 1: Создайте объект кластера

Создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Используйте следующий код для создания объекта кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“Your keyspace name”);

Здесь мы используем KeySpace под названием tp . Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“tp”);

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В этом примере мы получаем данные из таблицы emp . Сохраните запрос в строке и передайте его методу execute () класса сеанса, как показано ниже.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Выполните запрос, используя метод execute () класса Session.

Шаг 4: Получить объект ResultSet

Запросы select вернут результат в виде объекта ResultSet , поэтому сохраните результат в объекте класса RESULTSET, как показано ниже.

ResultSet result = session.execute( );

Ниже приведена полная программа для чтения данных из таблицы.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Read_Data.java
$java Read_Data

В нормальных условиях он должен выдавать следующий результат:

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]

Кассандра — Удалить данные

Удаление данных из таблицы

Вы можете удалить данные из таблицы, используя команду DELETE . Его синтаксис выглядит следующим образом —

DELETE FROM <identifier> WHERE <condition>;

пример

Предположим, что в Кассандре есть таблица с именем emp, имеющая следующие данные:

emp_id emp_name emp_city emp_phone emp_sal
1 баран Хайдарабад 9848022338 50000
2 Робин Хайдарабад 9848022339 40000
3 рахман Chennai 9848022330 45000

Следующая инструкция удаляет столбец emp_sal последней строки —

cqlsh:tutorialspoint> DELETE emp_sal FROM emp WHERE emp_id=3;

верификация

Используйте оператор SELECT, чтобы проверить, были ли данные удалены или нет. Если вы проверите таблицу emp с помощью SELECT, она выдаст следующий вывод:

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | null
(3 rows)

Поскольку мы удалили зарплату Рахмана, вместо зарплаты вы увидите нулевое значение.

Удаление всей строки

Следующая команда удаляет всю строку из таблицы.

cqlsh:tutorialspoint> DELETE FROM emp WHERE emp_id=3;

верификация

Используйте оператор SELECT, чтобы проверить, были ли данные удалены или нет. Если вы проверите таблицу emp с помощью SELECT, она выдаст следующий вывод:

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
 
(2 rows)

Так как мы удалили последнюю строку, в таблице осталось только две строки.

Удаление данных с использованием Java API

Вы можете удалить данные в таблице, используя метод execute () класса Session. Следуйте приведенным ниже инструкциям, чтобы удалить данные из таблицы с помощью API Java.

Шаг 1: Создайте объект кластера

Создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Используйте следующий код для создания объекта кластера.

//Building a cluster
Cluster cluster = builder.build();

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect();

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

Session session = cluster.connect(“ Your keyspace name ”);

Здесь мы используем KeySpace под названием tp . Поэтому создайте объект сеанса, как показано ниже.

Session session = cluster.connect(“tp”);

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы удаляем данные из таблицы с именем emp. Вы должны сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

String query1 = ”DELETE FROM emp WHERE emp_id=3; ”;
session.execute(query);

Ниже приведена полная программа для удаления данных из таблицы в Cassandra с использованием Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Delete_Data {

   public static void main(String args[]){
   
      //query
      String query = "DELETE FROM emp WHERE emp_id=3;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
       
      //Creating Session object
      Session session = cluster.connect("tp");
       
      //Executing the query
      session.execute(query);
       
      System.out.println("Data deleted");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Delete_Data.java
$java Delete_Data

В нормальных условиях он должен выдавать следующий результат:

Data deleted

Кассандра — типы данных CQL

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

Тип данных Константы Описание
ASCII строки Представляет строку символов ASCII
BIGINT BIGINT Представляет 64-битную подписанную длинную
капля сгустки Представляет произвольные байты
логический булевы Представляет истину или ложь
счетчик целые Представляет счетчик столбец
десятичный целые числа, числа с плавающей запятой Представляет десятичную с переменной точностью
двойной целые Представляет 64-битную IEEE-754 с плавающей точкой
поплавок целые числа, числа с плавающей запятой Представляет 32-битную IEEE-754 с плавающей точкой
инет строки Представляет IP-адрес, IPv4 или IPv6
ИНТ целые Представляет 32-битный со знаком int
текст строки Представляет строку в кодировке UTF8
отметка времени целые числа, строки Представляет метку времени
timeuuid UUID, Представляет UUID типа 1
UUID UUID, Представляет тип 1 или тип 4
UUID
VARCHAR строки Представляет строку в кодировке uTF8
varint целые Представляет целое число произвольной точности

Типы коллекций

Cassandra Query Language также предоставляет коллекцию типов данных. В следующей таблице представлен список коллекций, доступных на CQL.

Коллекция Описание
список Список — это набор из одного или нескольких упорядоченных элементов.
карта Карта представляет собой набор пар ключ-значение.
задавать Набор представляет собой набор из одного или нескольких элементов.

Пользовательские типы данных

Cqlsh предоставляет пользователям возможность создавать свои собственные типы данных. Ниже приведены команды, используемые при работе с пользовательскими типами данных.

  • CREATE TYPE — создает пользовательский тип данных.

  • ALTER TYPE — изменяет пользовательский тип данных.

  • DROP TYPE — удаляет определенный пользователем тип данных.

  • DESCRIBE TYPE — Описывает определенный пользователем тип данных.

  • ОПИСАТЬ ТИПЫ — Описывает определяемые пользователем типы данных.

CREATE TYPE — создает пользовательский тип данных.

ALTER TYPE — изменяет пользовательский тип данных.

DROP TYPE — удаляет определенный пользователем тип данных.

DESCRIBE TYPE — Описывает определенный пользователем тип данных.

ОПИСАТЬ ТИПЫ — Описывает определяемые пользователем типы данных.

Кассандра — CQL Коллекции

CQL предоставляет возможность использования типов данных Collection. Используя эти типы коллекций, вы можете хранить несколько значений в одной переменной. Эта глава объясняет, как использовать Коллекции в Кассандре.

Список

Список используется в тех случаях, когда

  • порядок элементов должен быть сохранен, и
  • значение должно храниться несколько раз.

Вы можете получить значения типа данных списка, используя индекс элементов в списке.

Создание таблицы со списком

Ниже приведен пример создания таблицы с двумя столбцами: name и email. Для хранения нескольких электронных писем мы используем список.

cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);

Вставка данных в список

Вставляя данные в элементы списка, введите все значения, разделенные запятой в квадратных скобках [], как показано ниже.

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['abc@gmail.com','cba@yahoo.com'])

Обновление списка

Ниже приведен пример обновления списка типов данных в таблице с именем data . Здесь мы добавляем еще одно письмо в список.

cqlsh:tutorialspoint> UPDATE data
... SET email = email +['xyz@tutorialspoint.com']
... where name = 'ramu';

верификация

Если вы проверите таблицу с помощью оператора SELECT, вы получите следующий результат —

cqlsh:tutorialspoint> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['abc@gmail.com', 'cba@yahoo.com', 'xyz@tutorialspoint.com']

(1 rows)

ЗАДАВАТЬ

Set — это тип данных, который используется для хранения группы элементов. Элементы набора будут возвращены в отсортированном порядке.

Создание таблицы с множеством

В следующем примере создается образец таблицы с двумя столбцами: name и phone. Для хранения нескольких телефонных номеров мы используем set.

cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);

Вставка данных в набор

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

cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman',    {9848022338,9848022339});

Обновление набора

Следующий код показывает, как обновить набор в таблице с именем data2. Здесь мы добавляем еще один номер телефона для набора.

cqlsh:tutorialspoint> UPDATE data2
   ... SET phone = phone + {9848022330}
   ... where name = 'rahman';

верификация

Если вы проверите таблицу с помощью оператора SELECT, вы получите следующий результат —

cqlsh:tutorialspoint> SELECT * FROM data2;

   name | phone
--------+--------------------------------------
 rahman | {9848022330, 9848022338, 9848022339}

(1 rows)

КАРТА

Карта — это тип данных, который используется для хранения пары элементов ключ-значение.

Создание таблицы с картой

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

cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address
map<timestamp, text>);

Вставка данных в карту

Вставляя данные в элементы на карте, введите все пары ключ: значение, разделенные запятой в фигурных скобках {}, как показано ниже.

cqlsh:tutorialspoint> INSERT INTO data3 (name, address)
   VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );

Обновление набора

Следующий код показывает, как обновить тип данных карты в таблице с именем data3. Здесь мы меняем значение ключевого офиса, то есть мы меняем адрес офиса человека по имени Робин.

cqlsh:tutorialspoint> UPDATE data3
   ... SET address = address+{'office':'mumbai'}
   ... WHERE name = 'robin';

верификация

Если вы проверите таблицу с помощью оператора SELECT, вы получите следующий результат —

cqlsh:tutorialspoint> select * from data3;

  name | address
-------+-------------------------------------------
 robin | {'home': 'hyderabad', 'office': 'mumbai'}

(1 rows)

Cassandra — CQL, определенные пользователем типы данных

CQL предоставляет возможность создания и использования пользовательских типов данных. Вы можете создать тип данных для обработки нескольких полей. В этой главе объясняется, как создавать, изменять и удалять пользовательский тип данных.

Создание пользовательского типа данных

Команда CREATE TYPE используется для создания пользовательского типа данных. Его синтаксис выглядит следующим образом —

CREATE TYPE <keyspace name>. <data typename>
( variable1, variable2).

пример

Ниже приведен пример создания пользовательского типа данных. В этом примере мы создаем тип данных card_details, содержащий следующие данные.

поле Имя поля Тип данных
номер кредитной карты Num ИНТ
PIN-код кредитной карты штырь ИНТ
Имя на кредитной карте название текст
CVV CVV ИНТ
Контактные данные владельца карты Телефон задавать
cqlsh:tutorialspoint> CREATE TYPE card_details (
   ... num int,
   ... pin int,
   ... name text,
   ... cvv int,
   ... phone set<int>
... );

Примечание . Имя, используемое для определяемого пользователем типа данных, не должно совпадать с зарезервированными именами типов.

верификация

Используйте команду DESCRIBE, чтобы проверить, был ли создан созданный тип или нет.

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>
   );

Изменение пользовательского типа данных

ALTER TYPE — команда используется для изменения существующего типа данных. Используя ALTER, вы можете добавить новое поле или переименовать существующее поле.

Добавление поля в тип

Используйте следующий синтаксис, чтобы добавить новое поле к существующему пользовательскому типу данных.

ALTER TYPE typename
ADD field_name field_type; 

Следующий код добавляет новое поле к типу данных Card_details . Здесь мы добавляем новое поле с именем электронной почты.

cqlsh:tutorialspoint> ALTER TYPE card_details ADD email text;

верификация

Используйте команду DESCRIBE, чтобы проверить, добавлено ли новое поле или нет.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   );

Переименование поля в типе

Используйте следующий синтаксис, чтобы переименовать существующий пользовательский тип данных.

ALTER TYPE typename
RENAME existing_name TO new_name;

Следующий код изменяет имя поля в типе. Здесь мы переименовываем поле электронной почты в почту.

cqlsh:tutorialspoint> ALTER TYPE card_details RENAME email TO mail;

верификация

Используйте команду DESCRIBE, чтобы проверить, изменилось имя типа или нет.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
   );

Удаление пользовательского типа данных

DROP TYPE — это команда, используемая для удаления пользовательского типа данных. Ниже приведен пример удаления пользовательского типа данных.

пример

Перед удалением проверьте список всех пользовательских типов данных с помощью команды DESCRIBE_TYPES, как показано ниже.

cqlsh:tutorialspoint> DESCRIBE TYPES;
card_details card

Из двух типов удалите тип именованной карты, как показано ниже.

cqlsh:tutorialspoint> drop type card;

Используйте команду DESCRIBE, чтобы проверить, пропущен тип данных или нет.