From d7ab209538d6d56966b25d2e0175742b19dc772f Mon Sep 17 00:00:00 2001
From: MokhovAS <mokhovas@mpei.ru>
Date: Wed, 13 Dec 2023 04:31:19 +0000
Subject: [PATCH] lab04

---
 labs/lab04.md | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100644 labs/lab04.md

diff --git a/labs/lab04.md b/labs/lab04.md
new file mode 100644
index 0000000..2424adb
--- /dev/null
+++ b/labs/lab04.md
@@ -0,0 +1,90 @@
+ # Лабораторная работа №4. Знакомство с NoSQL СУБД HBase
+ 
+ 
+ ## Цель
+ 
+ * Познакомиться с функционалом СУБД HBase.
+ * Научиться добавлять и получать записи в СУБД HBase. 
+ 
+## Выполнение
+
+Защита лабораторной работы подразумевает наличие отчета, который должен содержать пункты задания, команды, которые вы вводите и ответы системы на них.
+При необходимости - комментарии по полученным результатам.
+
+
+### Задачи
+
+* Создать таблицу в СУБД HBase
+* Внести информацию по посещению интернет-ресурсов пользователями _alice_ и _bob_
+* Создать новое семейсто колонок для хранения мета-информации
+* Внести хэш используемых cookie для пользователей
+
+### Методические указания
+
+1. В терминале запустить оболочку HBase, выполнив команду 
+
+`hbase shell`
+
+2. Создать таблицу `visits` в которой будет хранится информация о том, какие сайты посещали пользователи.
+Внутри таблицы создать первую column family для хранения информации о непосредственно посещенном ресурсе.
+
+синтаксис команды `create` в самом простом случае:
+`create 'table_name', 'column_family_name'`
+
+3. Убедиться, что таблица создана. Для этого вывести список всех имеющихся таблиц.
+
+4. Добавить в таблицу первую запись:
+
+пользователь - _alice_
+
+ресурс - _vk.com_
+
+продолжительность посещения - _125_
+
+время посещения (timestamp) - _1702411635951_. Подразумевается, что timestamp вносится в стандартное поле `ts`, которое существует для любой ячейки в таблице, а НЕ создается отдельный столбец.
+
+
+Синтаксис операции put:
+
+`put 'table_name', 'row', 'column_family:column', 'value', timestamp` 
+
+В общем случае, `timestamp` является необязательным. Если не указать вручную, то проставится текущее время.
+
+5. С помощью оператора `scan` вывести строки таблицы на экран, убедиться в том, что данные сохранились в таблицу корректно.
+
+6. Добавить новую запись:
+
+пользователь - _bob_
+
+ресурс - _google.com_
+
+время посещения (timestamp) - текущее время
+
+7. Появилась необходимость создать новую column family для хранения мета-информации.
+Для этого необходимо отключить таблицу командой `disable`, внести требуемые изменения командой `alter` и включить таблицу обратно.
+
+Синтаксис команды `alter`:
+
+`alter 'table_name', 'new_cf_name'`
+
+8. Вывести описание таблицы с помощью команды `describe`, описать полученный результат. 
+
+9. Для пользователя _alice_ добавить мета-информацию в столбец `cookie` '_abc123_',
+Для пользователя _bob_ добавить `cookie` '_xyz987_'
+
+10. Вывести всю информацию по пользователю `alice` на текущий момент.
+
+11. Вывести всю информацию по пользователю `alice` на момент 1702411635955. 
+
+
+
+### Вопросы
+
+1. Каким типом СУБД является HBase?
+2. Какой командой можно создать новую таблицу в HBase?
+3. Что такое 'семейство колонок' (column family)?
+4. Какие команды нужно выполнить чтобы добавить новое семейство колонок в существующую таблицу?
+5. Какой командой можно вывести всю информацию по заданной строке?
+
+
+