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

экзамен

.pdf
Скачиваний:
0
Добавлен:
19.01.2026
Размер:
3.28 Mб
Скачать

• CREATE TRIGGER trigger_name trigger_time trigger_event

ON tbl_name FOR EACH ROW trigger_stmt

23. Учётные записи в MySQL. Привилегии в MySQL.

Учетные записи

'username' @ 'host‘

'root' @ '127.0.0.1‘

'wet' @ '62.78.56.34‘

‘user' @ '%'

Управление учётными записями

CREATE USER 'username' @ 'host' [IDENTIFIED

BY [PASSWORD] 'пароль'];

DROP USER 'username' @ 'host';

RENAME USER старое_имя TO новое_имя;

24. Реляционная алгебра и теоретико-множественные операторы.

При работе с реляционной классической модель или расширениями реляционной модели вплоть до объектно-ориентированной реляционной модели (ООР) используются операции, которые вышли из теории множеств.

Рассматриваются 8 основных операций. Наиболее частые в применении: соединение, селекция,

проекция.

Основные восемь операций реляционной алгебры были предложены Э.Коддом:

Объединение

Пересечение

Вычитание

Декартово произведение

Выборка

Проекция

Соединение

Деление

Операции реляционной алгебры Кодда можно разделить на две группы: базовые теоретико-

множественные и специальные реляционные. Первая группа операций включает в себя

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

Объединение – результат объединения двух совместимых отношений R1 и R2 одинаковой размерности (R1 UNION R2 или R1 ᴜ R2) является отношение R, содержащее все элементы исходных отношений (с исключением повторений).

Пересечение двух совместимых отношений R1 и R2 одинаковой размерности (R1 INTERSECT R2 или R1 ᴖ R2 ) порождает новое отношение R с телом, включающим в себя кортежи, одновременно принадлежащие обоим исходным отношениям.

Вычитание совместимых отношений R1 и R2 одинаковой размерности (R1 MINUS R2 или R1 – R2) есть новое отношение, тело которого состоит из множества кортежей, принадлежащих R1, но не принадлежащих отношению R2.

Произведение отношения R1 степени к1 и отношения R2 степени к2 (Rl TIMES R2 или R1 x R2), есть такое новое отношение R степени (к1+к2), заголовок которого представляет сцепление заголовков отношений R1 и R2, а тело имеет кортежи такие, что первые к1 элементов кортежей принадлежат множеству R1, а последние к2 элементов — множеству R2 (все попарные комбинации 1-го и 2-го отношений).

25. Реляционная алгебра и Специальные реляционные операторы.

При работе с реляционной классической модель или расширениями реляционной модели вплоть до объектно-ориентированной реляционной модели (ООР) используются операции, которые вышли из теории множеств.

Рассматриваются 8 основных операций. Наиболее частые в применении: соединение, селекция,

проекция.

Основные восемь операций реляционной алгебры были предложены Э.Коддом:

Объединение

Пересечение

Вычитание

Декартово произведение

Выборка

Проекция

Соединение

Деление

Операции реляционной алгебры Кодда можно разделить на две группы: базовые теоретико-

множественные и специальные реляционные. Первая группа операций включает в себя

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

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

Операция соединения обратна операции проекции и создает новое отношение из двух уже существующих. Новое отношение получается конкатенацией кортежей первого и второго отношений, при этом конкатенации подвергаются отношения, в которых совпадают значения заданных атрибутов.

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

Результатом операции деления () является набор кортежей (строк) отношения R1, которые соответствуют комбинации всех кортежей отношения R2.

26. Виды соединений подробно.

Полным, или декартовым соединением (англ. Cross join, Cartesian join) двух отношений R1 и R2, у

которых нет общих атрибутов, называется отношение, в котором заголовок является объединением заголовков R1 и R2, а тело — декартовым произведением тел R1 и R2. Обозначение: RR2

Естественным соединением (англ. Natural join) двух отношений R1 и R2 называется отношение, в котором заголовок является объединением заголовков R1 и R2, а тело состоит из кортежей, полученных всевозможными соединениями кортежей R1 и R2, имеющих равные значения одноимённых атрибутов. Обозначение: R1 R2

Внешним соединением (англ. Outer join или Full outer join) двух отношений R1 и R2 называется отношение, в котором заголовок является объединением заголовков R1 и R2, а тело состоит из кортежей, полученных всевозможными соединениями кортежей R1 и R2, имеющих равные значения одноимённых атрибутов. Если по одноимённым атрибутам кортежу из одного отношения не соответствует ни одного кортежа из другого, то в результат добавляется этот кортеж, дополненный пустыми значениями. Обозначение: R1 R2

Условным соединением (англ. Conditional join) двух отношений R1 и R2, у которых нет общих атрибутов, по условию θ называется отношение, в котором заголовок является объединением заголовков R1 и R2, а кортежами тела являются всевозможные конкатенации кортежей тел R1 и R2, удовлетворяющих условию θ. Обозначение: RθR2

27. Docker подробно. Контейнеры. Свойства контейнера.

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на почти любую систему, а также предоставляет среду по управлению контейнерами.

Контейнер — это набор ограничений для запуска приложений, которые поддерживаются ядром (kernel) операционной системы Linux. Эти ограничения заставляют приложение исполняться в закрытой файловой системе, со своим пространством процессов (приложение не видит процессы вне своей группы), и с квотами на использование памяти, мощности процессоров CPU, дисков, и возможно сети. При этом у приложения в таком ограниченном пространстве существует свой сетевой IP-адрес и полный набор портов, а также полная поддержка ядра системы - устройств ввода/вывода, управление памятью и процессором, многозадачность, и наконец самое главное, возможность установить любые расширения и библиотеки, не беспокоясь о конфликтах с другими приложениями.

Свойства контейнера

-Легкая миграция приложения и его распространение.

-Конфигурация контейнера не может и не должна меняться после запуска.

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

-При запуске контейнер не копирует файловую систему образа, из которого создан. Контейнер всего-лишь создает пустую файловую систему поверх образа. В docker'е это называется слоем.

28. Docker подробно. В чем отличие от виртуализации. Достоинства.

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на почти любую систему, а также предоставляет среду по управлению контейнерами.

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

Docker.

Виртуальная машина

Изоляция процесса на аппаратном уровне

Каждая виртуальная машина имеет отдельную ОС

Загружается в считанные минуты

Виртуальные машины занимают несколько ГБ

Готовые виртуальные машины трудно найти

Виртуальные машины могут легко перейти на новый хост

Docker контейнер

Изоляция процесса на уровне ОС

Каждый контейнер может совместно использовать ОС

Загружается в считанные секунды

Контейнеры легкие (КБ / МБ)

Готовые док-контейнеры легко доступны

Контейнеры уничтожаются и воссоздаются, а не перемещаются

Создание ВМ занимает относительно

Контейнеры могут быть созданы в считанные

больше времени

секунды

Больше использования ресурса

Меньшее использование ресурсов

Преимущества

Ускоренный процесс разработки. Нет необходимости устанавливать вспомогательные инструменты вроде PostgreSQL, Redis, Elasticsearch: их можно запускать в контейнерах.

Удобная инкапсуляция приложений. Понятный мониторинг.

Простое масштабирование.

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

Быстрое выкладывание ваших приложений

Более простое выкладывание и разворачивание

Высокие нагрузки и больше полезных нагрузок

29. Docker подробно. Компоненты Docker. Терминология.

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на почти любую систему, а также предоставляет среду по управлению контейнерами.

Из чего состоит докер

docker daemon сердце docker'а. Это демон (компьютерная программа в системах класса UNIX, запускаемая самой системой и работающая в фоновом режиме без прямого взаимодействия с пользователем.) работающий на хост-машине и умеющий скачивать и заливать образы, запускать из них контейнеры, следить за запущенными контейнерами, собирать логи и настраивать сеть между контейнерами (а с версии 0.8 и между машинами).

Docker это консольная утилита для управления docker-демоном по HTTP.

Терминология

Контейнер – это исполняемый экземпляр, который инкапсулирует требуемое программное обеспечение. Он состоит из образов. Его можно легко удалить и снова создать за короткий промежуток времени.

Образ – базовый элемент каждого контейнера. В зависимости от образа, может потребоваться некоторое время для его создания.

Порт – это порт TCP/UDP в своем первоначальном значении. Чтобы все было просто, предположим, что порты могут быть открыты во внешнем мире или подключены к контейнерам (доступны только из этих контейнеров и невидимы для внешнего мира).

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

30. Docker подробно. Dockerfile, примеры. Слои

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на почти любую систему, а также предоставляет среду по управлению контейнерами.

Все свойства контейнера хранятся в декларативном виде. Этапы создания образа тоже описаны строго разделенными шагами. Параметры сети, содержимое файловой системы, объем памяти, публичные порты и так далее и тому подобное задается в Dockerfile

Dockerfile содержит набор инструкций с аргументами. Каждая инструкция пишется заглавными буквами (например FROM). Инструкции обрабатываются сверху вниз.

Инструкция Docker-файла — слово в верхнем регистре, которое стоит перед аргументом какойлибо команды. Каждая строка в Docker-файле может содержать инструкцию, все они обрабатываются сверху вниз. Инструкции выглядят так:

FROM ubuntu:18.04

COPY . /app

И только инструкции FROM, RUN, COPY и ADD создают слои в конечном образе. Другие инструкции производят настройку, добавляют метаданные или же просто говорят Docker‘у сделать что-либо во время запуска (например открыть порт или выполнить команду).

Dockerfile пример

FROM ubuntu:14.04

RUN apt-get update

RUN apt-get install -y nginx

RUN echo 'Hi, I am in your container' \

>/usr/share/nginx/html/index.html

EXPOSE 80

Dockerfile

FROM ubuntu:latest RUN apt-get update

RUN apt-get install --no-install-recommends --no- install-suggests -y curl

ENV SITE_URL http://ipo.omgtu.ru/ WORKDIR /data

VOLUME /data

CMD sh -c "curl -L $SITE_URL > /data/results"

Образ Docker — это вовсе не монолитный образ файловой системы, а своего рода слоеный пирог, состоящий из нескольких образов файловых систем, на основе которых формируется контейнер.

Контейнер состоит из ряда слоёв. Все слои доступны только для чтения, кроме последнего – он располагается над остальными.

Docker-файл указывает порядок добавления слов. Каждый слой — это просто файл с изменением предыдущего слоя. В Unix практически всё является файлом.

31. NoSQL. Основные определения и причины появления.

В июне 2009 в Сан-Франциско Йоханом Оскарссоном была организована встреча, на которой планировалось обсудить новые веяния на ИТ рынке хранения и обработки данных. Главным стимулом для встречи стали новые опенсорсные продукты наподобие BigTable и Dynamo. Для яркой вывески для встречи требовалось найти емкий и лаконичный термин, который отлично укладывался бы в Твиттеровский хэштег. Один из таких терминов предложил Эрик Эванс из RackSpace — «NoSQL». Термин планировался лишь на одну встречу и не имел под собой глубокой смысловой нагрузки, но так получилось, что он распространился по мировой сети наподобие вирусной рекламы и стал де-факто названием целого направления в ИТ-индустрии.

Стоит еще раз подчеркнуть, что термин “NoSQL” имеет абсолютно стихийное происхождение и не имеет общепризнанного определения или научного учреждения за спиной. Это название скорее характеризует вектор развития ИТ в сторону от реляционных баз данных. Расшифровывается как

Not Only SQL.

Термин NoSQL относится к нереляционным типам баз данных, данные в которых хранятся в формате, отличном от реляционных таблиц.

Характеристики NoSQL баз данных

Не используется SQL ( ANSI SQL DML)

Неструктурированные данные. В NoSQL базах в отличие от реляционных структура данных не регламентирована (или слабо типизированна, если проводить аналогии с языками прогаммирования

Представление данных в виде агрегатов (aggregates).

Слабые ACID свойства. (Атомарность, Согласованность, Изолированность, Надёжность).

Распределенные системы, без совместно используемых ресурсов (share nothing).

Причины появления

увеличение объемов хранимых данных

взаимосвязанность данных

использование слабоструктурированной информации

Архитектура

32. NoSQL vs SQL в чём отличия. Сильные и слабые стороны каждого подхода.

Основные черты SQL

Atomicity - атомарность

Consistency - согласованность

Isolation - изолированность

Durability — надежность

Основные черты NoSQL

Basic Availability - базовая доступность.

Soft State - гибкое состояние .

Eventual Consistency - согласованность в

конечном счёте.

Проанализируем разницу между SQL- и NoSQL-подходами:

Структура и тип хранящихся данных: SQL/реляционные базы данных требуют наличия однозначно определённой структуры хранения данных, а NoSQL базы данных таких ограничений не ставят.

Запросы: вне зависимости от лицензии, РСУБД реализуют SQL-стандарты, поэтому из них можно получать данные при помощи языка SQL. Каждая NoSQL база данных реализует свой способ работы с данными.

Масштабируемость: оба решения легко растягиваются вертикально (например, путём увеличения системных ресурсов). Тем не менее, из-за своей современности, решения NoSQL обычно предоставляют более простые способы горизонтального масштабирования (например, создания кластера из нескольких машин).

Надёжность: когда речь заходит о надёжности, SQL базы данных однозначно впереди.

Поддержка: РСУБД имеют очень долгую историю. Они очень популярны, и поэтому получить поддержку, платную или нет, очень легко. Поэтому, при необходимости, решить проблемы с ними гораздо проще, чем с NoSQL, особенно если проблема сложна по своей природе (например, при работе с MongoDB).

Хранение и доступ к сложным структурам данных: по своей природе реляционные базы данных предполагают работу с сложными ситуациями, поэтому и здесь они превосходят NoSQL-решения.

Достоинства NoSql баз данных

Высокая масштабируемость

Прототипирование

Высокая доступность

Кэширование

Буферизация

Очередь заданий

Счетчики

Полнотекстовый поиск

Репликация

Шаринг

Недостатки NoSQL баз данных

Небольшой функционал

Недостаточная гибкость

Немалое потребление ресурсов

Не всегда хорошо работают «из коробки»

Необходимость специализированных знаний для работы с базой данных

33. NoSQL. Виды и методы хранения данных.

Методы хранения данных

Snapshot – слепок базы данных на текущий момент.

Запись данных в лог – данные, которые попали в лог, не подлежат изменению.

In-place updates – база данных имеет свою копию, которая обновляется при каких-

либо изменениях в базе данных.

Системы БД NoSQL используют для управления данными различные модели, включая хранилища

пар «ключ-значение» в памяти, графовые модели данных, хранилища документов, колоночное хранилище.

34. NoSQL. Redis, MongoDB, подробные примеры использования, где эти решения были бы лучше SQL.

Redis(REmote DIctionary Server,«удалённый серверный словарь») сетевое журналируемое хранилище данных типа «ключ — значение» с открытым исходным кодом, размещаемое в памяти, обычно используемое для кэшей и подобных механизмов ускорения сетевых приложений.

Области применения Redis

Хранилище сессий и профилей пользователей;

Сервер очередей;

Полноценная замена Memcached;