Рубрики

Материализованные взгляды с практическим подходом в Кассандре

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

Давайте сначала определим базовую таблицу так, чтобы student_marks была базовой таблицей для получения наивысших оценок в классе. В этой базовой таблице имя-субъекта, имя-студента и отметки являются столбцами. Мы создадим материализованную таблицу представлений базовой таблицы и запросим следующий запрос, приведенный ниже.

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

Пример: базовая таблица — student_marks

CREATE TABLE student_marks
(
  subject_name text, 
 student_name text,
  marks int,
  PRIMARY KEY (subject_name, marks)
); 

Выход:

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

Чтобы создать материализованное представление (таблица материализованного представления — everytime_high_marks), мы предоставляем простой оператор выбора и первичный ключ для использования в этом представлении. Задание параметра CLUSTERING ORDER BY позволяет нам отсортировать самые высокие оценки в обратном порядке, чтобы получить самые высокие оценки, просто выбрав первый элемент в разделе.

Для создания материализованного представления использовался следующий CQL-запрос.

CREATE MATERIALIZED VIEW everytime_high_marks AS
SELECT student_name, marks, subject_name 
FROM student_marks 
WHERE student_name IS NOT NULL 
      AND marks IS NOT NULL 
      AND subject_name IS NOT NULL
PRIMARY KEY (subject_name, marks) 
WITH CLUSTERING ORDER BY (marks desc);  

Выход:

Теперь сначала вставим данные в базовую таблицу, и она также будет отражать материализованное представление. После вставки данных мы можем выполнить запрос из материализованной таблицы представления и получить желаемый результат для запроса CQL. для практического использования мы используем DataStax Studio для выполнения всех запросов для проверки запроса CQL.

Для вставки данных в базовую таблицу использовался следующий CQL-запрос.

INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Ashish', 'Cassandra DB', 95);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Rana', ' Cassandra DB ', 80);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Amit', ' Cassandra DB ', 85);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Shivang', ' Cassandra DB ',90);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Kartikey', ' Cassandra DB ',92);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Dhruv', 'Cassandra DB',93);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Rahul', 'Cassandra DB',91);
INSERT INTO student_marks (student_name, subject_name, marks) 
       VALUES ('Gaurav', 'Cassandra DB',96); 

Выход:

Рисунок — Вставка данных в базовую таблицу

SELECT * 
FROM everytime_high_marks 
WHERE subject_name = 'Cassandra DB'; 

Выход:

Рисунок — Выход MV

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

SELECT student_name, marks 
FROM everytime_high_marks 
WHERE subject = 'Cassandra DB' limit 1; 

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

Выход:

Как показано в выходной таблице Gaurav имеет 96 баллов, которые являются самыми высокими в классе.

Рекомендуемые посты:

Материализованные взгляды с практическим подходом в Кассандре

0.00 (0%) 0 votes