Обзор определяемого пользователем типа (UDT) в Cassandra

Опубликовано: 17 Августа, 2021

Тип данных, определяемый пользователем:
Одним из преимуществ пользовательских данных (UDT) является прикрепление нескольких полей данных к столбцу. В Cassandra UDT играют жизненно важную роль, позволяющую группировать связанные поля (например, поле 1, поле 2 и т. Д.) Могут содержать данные вместе и иметь имя и тип.

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

Для создания определяемого пользователем типа (UDT) любой допустимый тип данных может использоваться для типа полей в Cassandra, включая коллекцию (SET, LIST, MAP) или любые другие UDT. После создания UDT в Cassandra его можно использовать для определения столбца в основной таблице.

Синтаксис для определения UDT:
СОЗДАТЬ ТИП UDT_name 
(
  field_name 1 Data_Type 1,
  field_name 2 Data_Type 2,
  field_name 3 Data_Type 3,
  field_name 4 Data_Type 4,
  field_name 5 Тип данных 5,
);

Простые шаги для создания UDT:

Шаг 1: Создайте КЛЮЧЕВОЕ ПРОСТРАНСТВО, если оно не существует. Синтаксис:

create_keyspace_statement :: =  
      СОЗДАТЬ КЛЮЧЕВОЕ ПРОБЕЛ [ЕСЛИ НЕ СУЩЕСТВУЕТ] keypace_name 
       С вариантами

Шаг 2: Для создания пространства ключей используется следующий запрос CQL.

 СОЗДАТЬ КЛЮЧЕВОЕ ПРОСТРАНСТВО Emp
    С репликацией = {'class': 'SimpleStrategy', 
                        'replication_factor': 1};

Для проверки схемы пространства ключей используется следующий запрос CQl.

 ОПИСАТЬ КЛЮЧЕВОЕ ПРОСТРАНСТВО Emp;

Шаг 3. Чтобы создать тип данных пользователя «Сотрудник» для текущего адреса, используется следующий запрос CQL. Например, Тип данных пользователя для текущего адреса.

 СОЗДАТЬ ТИП Emp.Current_add
(
Emp_id int,
h_no text,
текст города
государственный текст,
pin_code int,
текст страны 
);

Здесь Current_add - это определяемый пользователем тип данных Cassandra.




Рисунок - Типы, определяемые пользователем (UDT)

Шаг 4: Создайте регистрацию таблицы с UDT current_address в качестве одного из столбцов, например:

СОЗДАТЬ ТАБЛИЦУ Регистрация
( 
Emp_id int ПЕРВИЧНЫЙ КЛЮЧ, 
Emp_Name текст, 
current_address ЗАМОРОЖЕННЫЙ <Current_add>
); 

Шаг 5: Для вставки данных с помощью UDT в Cassandra используется следующий запрос CQL.

Формат-1: с использованием формата JSON (обозначение объектов JavaScript).
В Cassandra мы также можем вставлять данные в формате JSON (JavaScript Object Notation). Например: запрос CQL с использованием формата JSON.

ВСТАВИТЬ В регистрационный JSON '
{
«Emp_id»: 2000, 
"current_address": {"h_no": "A 210", "city": 
                        "дели", "штат": "DL",
                        «pin_code»: «201307», 
                        "country": "india"},
"Emp_Name": "Ашиш Рана"} ';
 


Формат-2: простая вставка

ВСТАВИТЬ регистрацию (Emp_id, Emp_Name, current_address) 
            значения (1000, 'Ашиш', {h_no: 'A 210', город: 'Дели', штат: 'DL', pin_code 
                                    : 12345, страна: 'IN'});

ВСТАВИТЬ регистрацию (Emp_id, Emp_Name, current_address) 
            значения (1001, 'kartikey Rana', {h_no: 'B 210', city 
                                    : 'mumbai', состояние: 'MH', pin_code 
                                    : 12345, страна: 'IN'});

ВСТАВИТЬ регистрацию (Emp_id, Emp_Name, current_address) 
            значения (1002, 'Dhruv Gupta', {h_no: 'C 210', city 
                                    : 'delhi', состояние: 'DL', pin_code 
                                    : 12345, страна: 'IN'}); 

Выход:




Рисунок - Вставка таблицы UDT

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

Запрос CQL без вставки одного поля или нескольких значений поля UDT:

ВСТАВИТЬ регистрацию (Emp_id, Emp_Name, current_address) 
                 значения (1003, 'Амит Гупта', {h_no: 'D 210', город 
                               : "Бангалор", состояние: "MH", pin_code: 12345}
                               );

ВСТАВИТЬ регистрацию (Emp_id, Emp_Name, current_address) 
                 значения (1004, 'Шиванг Рана', {h_no: 'E 210', город 
                               : 'Хайдарабад', штат: 'HYD'});
                               

Выход:




Рисунок - Таблица UDT без вставки одного или нескольких значений поля