Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практическая работа №1

.docx
Скачиваний:
4
Добавлен:
30.07.2024
Размер:
50.72 Mб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования «МИРЭА Российский технологический университет»

РТУ МИРЭА

Институт информационных технологий (ИИТ)

Кафедра прикладной математики (ПМ)

ОТЧЕТ ПО ПРАКТИЧЕСКОЙ РАБОТЕ

по дисциплине «Системы управления данными»

Практическое задание № 1

Студент группыИНБО-01-17

ИНБО-06-20

(подпись)

Преподаватель

Морошкин Никита Андреевич

(подпись)

Отчет представлен

«10»__мая_2023 г.

Москва 2023 г.

Доступ к данным с помощью Apache Cassandra

В этой лабораторной работе вы начнете использовать Cassandra.

  1. Установка Cassandra NoSQLy

      1. Создание cassandra репозитория для установки.

sudo nano /etc/yum.repos.d/cassandra.repo

[cassandra]

name=Apache Cassandra

baseurl=https://redhat.cassandra.apache.org/41x/noboolean

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://downloads.apache.org/cassandra/KEYS

      1. Установите Cassandra NoSQL

sudo yum install cassandra

      1. Запустите Cassandra service

sudo systemctl daemon-reload

sudo systemctl start cassandra

      1. Проверьте службу Cassandra

sudo systemctl status cassandra

    1. Запустите CQL shell

      1. Запустите CQL shell

cqlsh

      1. Вывод списка всех пространств ключей в кластере

cqlsh> desc keyspaces;

      1. Создание пространства ключей с именем «ks_work1» на одном узле.

cqlsh> CREATE KEYSPACE ks_work1

WITH REPLICATION = {

'class' : 'SimpleStrategy',

'replication_factor' : 1

};

      1. Если вы хотите использовать несколько центров обработки данных, используйте NetworkTopologyStrategy.

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

cqlsh> CREATE KEYSPACE ks_work2

WITH REPLICATION = {

'class' : 'NetworkTopologyStrategy',

'datacenter1' : 1

} ;

      1. Проверка сгенерированной информации о пространстве ключей.

cqlsh> describe keyspace ks_work1;

cqlsh> desc ks_work2;

      1. Изменение и удаление параметров пространства ключей

cqlsh> alter keyspace ks_work2 with durable_writes = false;

cqlsh> desc ks_work2;

  • Проверьте измененный параметр в ks_work2

cqlsh> drop KEYSPACE ks_work2;

cqlsh> desc ks_work2;

  • Проверка пространства ключей ks_work2.

Доступ к данным с помощью DDL

      1. Создание таблиц со следующими характеристиками (создание таблицы с пространством ключей без команды use)

  • Keyspace: ks_work1

  • Table name: user_info

  • Column name: id uuid, l_name text, f_name text, country text, birth int, gender text

  • Partition Key: id

cqlsh> create table ks_work1.user_info (id uuid primary key, l_name text, f_name text, country text, birth int, gender text);

      1. Проверка таблицы user_info (команда decs tables).

      1. Создадим ещё одну таблицу:

  • Table name: user_info2

  • Column name: id uuid, l_name text, f_name text, country text, birth int, gender text, s text, num int

  • static column: s

  • primary key : country, birth, id

  • composite partition key : country, birth

cqlsh> create table ks_work1.user_info2 (id int, l_name text, f_name text, country text, birth text, gender text, s text, num int, primary key((country,birth), id));

csqsh> desc tables;

      1. Проверка таблицы user_info2.

      1. Следующая таблица:

  • Keyspace: ks_work1

  • Table name: user_info3

  • Column name: id int, l_name text, f_name text, country text, birth int, age int

  • Compound Primary Key : country, id, birth

  • Clustering key: birth

cqlsh> create table ks_work1.user_info3 (id int, l_name text, f_name text, country text, birth text, gender text, s text static, num int, primary key(country, id, birth));

      1. Ещё одна таблица:

  • Keyspace: ks_work1

  • Table name: user_info33

  • Column name: id int, l_name text, f_name text, country text, birth int, age int

  • Compound Primary Key : country, id, birth (descending order)

  • Clustering key: birth (store data in descending order)

cqlsh>  create table ks_work1.user_info33 (id int, l_name text, f_name text, country text, birth text, gender text, s text static, age int, primary key(id, birth)) with clustering order by (birth desc);

csqsh> desc tables;

      1. Измените пространство ключей на ks_work1 и проверьте, успешно ли созданы таблицы user_info, user_info2 и user_info3.

cqlsh> use ks_work1;

cqlsh:ks_work1> desc tables;

cqlsh:ks_work1> desc user_info;

  • Проверка user_info

      1. Добавьте следующий столбец в таблицу user_info33. Проверьте таблицу user_info33.

  • Column name : height, type int

cqlsh:ks_work1> alter table user_info33 add height int;

cqlsh:ks_work1> desc user_info33;

      1. Удалите только что измененную таблицу user_info33.

cqlsh:ks_work1> drop table user_info33;

      1. Еще раз перечислите все таблицы, чтобы убедиться, что user_inf33 таблицы был успешно удален.

cqlsh:ks_work1> desc tables;

      1. Введите данные в таблицы user_info2 и user_info3 соответственно, как показано на следующем рисунке. Чтобы сделать это вызовите следующую команду для каждой добавляемой строки (показан пример для первой строки):

cqlsh:ks_work1> INSERT INTO user_info2(country, birth, id, s, f_name, gender, l_name, num) VALUES ('KOR', '1995', 1, 'value8', 'jason', 'M', 'jeong', 18);

  • User_info2

  • User_info3

    1. Доступ к данным с помощью DML

      1. Выберите инструкцию, которая выводит данные Info2, info3 и ограничение до 1 строки на секцию.

cqlsh:ks_work1> select * from user_info2;

cqlsh:ks_work1> select * from user_info3;

  • Проверка записей в user_info2 и user_info3;

cqlsh:ks_work1> select * from user_info2 per partition limit 1;

cqlsh:ks_work1> select * from user_info3 per partition limit 1;

  • Проверка записей в user_info2 и user_info3 с 1 строкой на раздел.

Список лиц, включенных в KOR/JPN.

cqlsh:ks_work1> select f_name, l_name from user_info3 where country in ('KOR', 'JPN');

      1. Найдите общее количество записей в таблице user_info3, а также сумму, минимальное и среднее значения поля num.

cqlsh:ks_work1> select count(id) as count, sum(num) as sum, min(num) as min, avg(num) as avg from user_info3;

      1. Получите запись о стране KOR.

cqlsh:ks_work1> select * from user_info3 where country='KOR';

      1. Поиск записей, где страна KOR и num больше 30

cqlsh:ks_work1> select * from user_info3 where country='KOR' and num > 30 allow filtering;

      1. Измените значение s в KOR на 'value8' и сделайте его пустым через 30 секунд.

cqlsh:ks_work1> update user_info3 using ttl 30 set s='value_new' where country='KOR';

  • Через 30 секунд значения в 3 строках удаляются и становятся пустыми..

      1. Обновите строку в таблице user_info3, где идентификатор равен 4.

cqlsh:ks_work1> insert into user_info3 (id, f_name, l_name, num, country, birth) values(4,'ann','kim', 85, 'JPN', '1974');

Измените значение f_name в записи с идентификатором 3 на "scott".

cqlsh:ks_work1> insert into user_info3 (id, l_name, f_name, country, birth, gender, s, num) values (3,'jeong','scott','USA','1967', 'M', 'value3', 32) if not exists;

      1. Измените Scitt на scott в 3-й строке таблицы user_info3. Какую команду надо написать?

      1. Удаление столбца s, в котором страна - США из таблицы user_info3.

cqlsh:ks_work1> delete s from user_info3 where country='USA';

cqlsh:ks_work1> select * from user_info3;

      1. Удаление строки, в которой указана страна CAN или JPN, из таблицы user_info3.

cqlsh:ks_work1> delete from user_info3 where country in ('CAN', 'JPN');

cqlsh:ks_work1> select * from user_info3;

Самостоятельная работа

    1. Напишите команду для создания таблицы “сountry"

      1. Создайте таблицы со следующими условиями:

Column Name

Column Type

Key

id

uuid

Primary Key

name

text

Partition Key

capital

text

Partition Key

population

int

      1. Введите следующие значения в созданную таблицу

id

Name

Capital

Population

1

USA

Washington D.C.

333 098 437

2

Germany

Berlin

84 073 352

3

France

Paris

65 426 179

4

Korea

Seoul

51 305 186

    1. Работа с запросами.

      1. Запросите из таблицы стран следующую информацию:

  • Население Кореи

  • Население и столицы всех стран в таблице

  • Страны с населением менее 100 000 000 человек.

  • Страны с населением от 50 до 100 миллионов человек

      1. Создайте запросы к таблице стран со следующей информацией:

  • Назовите страну с наименьшим населением

  • Выведите первую строку в таблице стран

  • Сколько стран указано в таблице?

18