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. Какой командой можно вывести всю информацию по заданной строке? + + +