© 2017, Незнанов А.А. 1
Где и как хранить данные
в процессе их анализа:
SQL и не только…
Хакатон
«Культура в современном медиапространстве»
Основные аббревиатуры
 БД – База Данных (DB – Database)
 РБД – Реляционная База Данных
 СУБД – Система Управления Базами Данных
(DBMS – Database Management System)
 ИС – Информационная система (IS – Information System)
© 2017, Незнанов А.А. 2
Форматы данных и файлов
 Формат данных [data format] – совокупность правил представления и
интерпретации данных в памяти компьютера, на внешних носителях, при
операциях ввода/вывода и при передаче по каналам связи
 В первую очередь формат определяет способ кодирования данных в некоторой
знаковой системе. Другими словами, формат – это описание физической структуры
информационного элемента.
 Группа стандартов ISO 35.040 «Наборы символов и кодирование
информации» [Character sets and information coding]
 Более 400 стандартов определяют форматы текстовой, аудиальной и визуальной
информации, алгоритмы её кодирования и декодирования, форматы сжатия
(архивирования) и методы преобразования форматов
 Формат файла [file format] – способ записи и извлечения данных из файлов во
внешней памяти
 Например, в операционной системе Microsoft Windows формат файла ассоциирован с
расширением файла (частью имени после последней точки)
 Это именно ассоциация, т. е. смена расширения не влияет на данные, хранящиеся в
файле, но затрудняет сопоставление файла со средствами его обработки
 Специфику сетей не затрагиваем – уровень прозрачности сетевого обмена с
точки зрения форматов данных достаточен для конечного пользователя
© 2017, Незнанов А.А. 3
Данные и метаданные
 Метаданные – данные, описывающие данные
 Есть ли точная граница?
 Реквизит документа – это метаданные или данные?
 Описание формата является метаданными!
 Формализация метаданных
 Модели данных и форматы данных
 Пример UML (Unified Modeling Language) Metamodel & Metametamodel
 (http://www.uml-diagrams.org/uml-meta-models.html)
 Пример BPMN (Business Process Model And Notation)
 (http://modeling-languages.com/has-success-bpmn-20-killed-bpdm-business-process-
definition-metamodel)
 Метаметаданные – данные описывающие метаданные
 Любая формализаци метаданных есть метаметаданные
 Пример: описание способа описания данных,
используемых WebAPI сервиса ВКонтакте
© 2017, Незнанов А.А. 4
Обмен данными – уровни
© 2017, Незнанов А.А. 5
Сериализованные
структурированные данные
Esc-форматированные
(экранированные) строки
Символьное представление
атомарных данных
Бинарные данные
Конверторы
Типы данных
Атомарные данные: числа
 Целое число [Integer number]
 Не будем повторять…
 Вещественное число [Real number]
 Имеют две основных формы представления – с фиксированной и с плавающей
запятой
 Число с фиксированной запятой [Floating Point Number]
 Форматы для работы с денежными суммами [money, currency]
 Число с плавающей запятой [Floating Point Number]
 IEEE 754-2008 “IEEE Standard for Floating-Point Arithmetic”
(http://grouper.ieee.org/groups/754)
  Проблема точности и проблема округления!
 Interval Computations (http://www.cs.utep.edu/interval-comp/index.html)
 A Tutorial on Data Representation Integers, Floating-point Numbers, and
Characters
(https://www3.ntu.edu.sg/home/ehchua/programming/java/DataRepresentation.html)
© 2017, Незнанов А.А. 6
Атомарные данные: строки символов
 Строка [String]
 ASCII – American Standard Code aimed at Information Interchange
(http://www.ascii.ca)
 Национальные варианты таблицы (MS-DOS Codepage 866, Microsoft Windows
Codepage 1251)
 ISO/IEC 646:1991 “Information technology – ISO 7-bit coded character set for
information interchange“
(http://www.iso.org/iso/catalogue_detail.htm?csnumber=4777)
 ISO/IEC 10646:2014 “Information technology – Universal Coded Character Set”
(http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumbe
r=63182)
 Specifies three encoding forms of the UCS: UTF-8, UCS2 (UTF-16), and UCS4 (UTF-32)
 UNICODE (http://www.unicode.org)
 Программная библиотека ICU – International Components for Unicode (http://site.icu-
project.org)
 ISO 4217:2008 “Codes for the representation of currencies and funds”
(http://www.iso.org/iso/home/standards/currency_codes.htm)
© 2017, Незнанов А.А. 7
Атомарные данные:
отметки и интервалы времени
 Дата/время [Date/Time]
 ISO 8601:1988 “Data elements and interchange formats – Information
interchange – Representation of dates and times”
(http://www.iso.org/iso/ru/home/standards/iso8601.htm)
 Устоявшееся название – ISO Time
 Date and Time Formats (http://www.w3.org/TR/NOTE-datetime)
 Национальные стандарты
 Date format by country (https://en.wikipedia.org/wiki/Date_format_by_country)
© 2017, Незнанов А.А. 8
Форматы и протоколы на практике
 Периодически приходится обращаться к теоретическим основам
 Информация и данные
 Классификация «задач обработки данных» и реальные прикладные задачи
 Правильный ответ «исторически сложилось» на большинство вопросов
 Значимость истории!
 Современное состояние
 Какие форматы нужно знать?
 А какие не нужно?
 Как работать с метаданными?
 А как с метаметаданными?
 Каким образом обращаться к данным?
 Вот тут и начинаются базы данных!
© 2017, Незнанов А.А. 9
Абстракция в информационных системах
Абстракция
Процессов
(подпрограммы)
Данных
(структуры
данных)
Того и другого
(объекты)
© 2017, Незнанов А.А. 10
Базовые принципы абстракции данных
 Разделение концептуального, логического и физического
представления данных
 Логическая независимость
 Возможность изменять приложения без необходимости изменения других
приложений, использующих те же форматы и модели данных
 Физическая независимость
 Возможность изменять физическое расположение и формат данных без
необходимости изменения приложений, которые их используют
 Возможность формального описания «моделей данных» с
помощью стандартов на метаданные
© 2017, Незнанов А.А. 11
Недостатки файловых систем
 Файловая система является знакомой большинству
пользователей абстракцией внешней памяти компьютера
 Файловая система, как абстракция физического доступа к
носителям информации, не обеспечивает:
 Структуризацию данных на уровне отдельных файлов
 Контроль полноты и целостности данных на уровнях выше отдельного
файла
 Способов описания данных (метаданных – «данных о данных» или
«словаря данных»), что необходимо для обеспечения целостности и
полноты
 Поиска данных с учётом метаданных
© 2017, Незнанов А.А. 12
База данных
 База данных (БД) [database (DB )] – структурированная
совокупность данных, организованная по единым правилам,
включающим принципы описания, хранения и манипулирования
этими данными
 Как правило, БД является информационной моделью некоторой
предметной области
 БД можно рассматривать на различных уровнях абстракции, обычно
выделяют как минимум два:
 физический (способ представления данных с использованием конкретного
аппаратного и программного обеспечения)
 логический (способ представления данных с точки зрения пользователя)
 Также обычно при проектировании БД выделяется верхний уровень –
концептуальный, который позволяет не привязывать начальный анализ
предметной области и построение самой общей модели данных к каким-
либо конкретным инструментам последующей обработки данных
© 2017, Незнанов А.А. 13
Трёхуровневая модель абстракции данных
Концептуальный
уровень
(сущности)
Логический
уровень (типы)
Физический
уровень
(форматы)
© 2017, Незнанов А.А. 14
Инфологическая
модель
Даталогическая
модель
Физическая
модель
СУБД
 Система управления базами данных (СУБД) [database
management system (DBMS)] – системное программное
обеспечение, служащее для абстракции физического уровня
представления данными и управления доступом к данным
 Другой смысл – программно-аппаратный комплекс
 Основные функции СУБД:
 определение данных (то есть работа с метаданными [metadata] –
данными, описывающими данные)
 хранение данных
 обработка данных
 обеспечение целостности и безопасности данных
 импорт/экспорт данных в различных форматах
© 2017, Незнанов А.А. 15
Цель создания БД и СУБД
 Главная цель – борьба со сложностью путём абстракции способа
доступа к данным
 СУБД позволяет рассматривать БД, абстрагируясь от аппаратного
обеспечения и форматов физического хранения данных
 СУБД поддерживает высокоуровневые интерфейсы
взаимодействия с клиентами
 (например, язык SQL, который будет изучаться в дальнейшем)
 СУБД обеспечивают повторное использование лучших практик
абстракции данных и проектирования информационных систем
 СУБД значительно удешевляют информационные системы
© 2017, Незнанов А.А. 16
Клиенты СУБД
 Клиент СУБД [DBMS client] – человек или программная система,
использующая СУБД для работы с данными.
 Пользователи [user] – клиенты-человеки:
 Конечный пользователь [end user]
 Администратор [administrator]
 Администратор данных [data administrator], обеспечивает качество, сохранность и
доступность для использования в служебных целях информации, накопленной в
организации
 Администратор баз данных [database administrator], обеспечивает эффективное
функционирование СУБД и использование компьютерных баз данных, в том числе
поддержку схем данных, надежность и отказоустойчивость технических средств
всех уровней, доступность и удобство ввода/вывода данных
 Такое разделение пользователей вытекает из концепции
централизованного управления данными [centralized data
management], когда администраторы держат в своих руках
контроль над всеми действиями конечных пользователей в
соответствие с политикой безопасности
© 2017, Незнанов А.А. 17
Банк данных
 Банк данных (БнД) – это система специальным образом
организованных данных – баз данных, программных,
технических, языковых, организационно-методических средств,
предназначенных для обеспечения централизованного
накопления и коллективного многоцелевого использования
данных
 Основы банка данных – СУБД и методика (политика) управления данными
© 2017, Незнанов А.А. 18
Структура банка данных
© 2017, Незнанов А.А. 19
История развития СУБД
 1968 г. – первая промышленная иерархическая СУБД IMS (Information
Management System) фирмы IBM
 1975 г. – первый стандарт СУБД, разработанный ассоциацией по
языкам систем обработки данных – Conference of Data System Language
(CODASYL)
 1976 г. – Для СУБД System R создаётся язык SEQUEL
 1979 г. – СУБД dBase-II фирмы Ashton-Tate
 Затем куплена Borland, особенно популярной стала версия 4
 1981 г. – Э. Кодд формализует реляционную модель данных
 1985 г. – старт проекта ORION фирмы MCC
 1986 г. – стандарт SQL 1.0,
 Конец 1980-ч годов – первые попытки создания распределённых СУБД
 1992 г. – стандарт SQL92, начало нового этапа развития SQL-серверов
как компонентов клиент-серверных систем
 Конец 1990-х годов – реальное внедрение распределённых СУБД
 Конец 2000-х годов – конвергенция технологий доступа к данным на
основе виртуализации и универсальных языков разметки (XML и др.)
© 2017, Незнанов А.А. 20
Предметная область и сущности
 Сущность [entity] – нечто (физический или идеальный объект,
процесс, явление), что можно идентифицировать (отличить от
другого)
 Из определения следует, что у сущности всегда можно вычленить
идентификатор
 В тривиальном случае сущность и её идентификатор совпадают
 Предметная область [application domain, data domain] – набор
взаимосвязанных сущностей, описывающий некоторую часть
действительности, относительно независимую и
рассматриваемую в контексте решения некоторого класса
проблем
 Часто – проблемная или прикладная область
© 2017, Незнанов А.А. 21
Моделирование данных
 Модель – упрощенное описание системы, сохраняющее важную для целей
моделирования информацию о системе и достаточное для решения задач,
вытекающих из этих целей
 Модель данных – схема (порядок, совокупность принципов, система)
организации данных в единое целое для создания, накопления, обработки и
управления
 Некоторая абстракция, которая будучи приложена к конкретным данным, позволяет
пользователям и разработчикам трактовать их уже как информацию, то есть сведения,
содержащие не только данные, но и взаимосвязи между ними.
 Инфологическая модель – формализует информацию о предметной области
вне зависимости от представления данных в информационных системах
 Например – модель «сущность-связь»
 Даталогическая модель – формализует информацию о предметной области в
виде абстрактных структур данных с учётом возможностей СУБД
 Например – реляционная модель
 Физическая модель – формализует информацию о предметной области в
виде конкретных структур данных с учётом аппаратуры
 Например – индексированные файлы прямого доступа во внешней памяти и
B+-деревья для доступа к ним
© 2017, Незнанов А.А. 22
Основы построения моделей данных
 Главные принципы
 Структуризация – стремление к формализации структуры данных
 Детализация – стремление к исчерпывающей полноте описания
 Консолидация – стремление к целостности описания
 Унификация – стремление к единству проектных решений
 Главные аспекты
 Структурный
 Целостностный
 Манипуляционный
 Структуризация автоматически влечёт использование теоретико-
графовых методов исследования моделей данных, но формализация
может быть любой:
 Документо-ориентированная
 Обекто-ориентированная
 Теоретико-множественная
 Реляционная
© 2017, Незнанов А.А. 23
Замечания о связи инфо- и дата- моделей
 Прежде, чем рассматривать первые этапы моделирования
данных и инфологические модели, необходимо рассмотреть,
какие варианты существуют для последующей формализации на
логическом уровне
 Даталогические модели в принципе играют роль якоря
 Их формализация должна быть достаточна для относительно простого
перехода от концепции к реализации
 Их изобразительная сила должна быть достаточно для отражения всех
аспектов работы с данными
 Их особенности должны соответствовать предметной области, решаемым
задачам, относительной частоте вариантов использования, и др.
© 2017, Незнанов А.А. 24
Базовая статическая инфологическая модель
 Модель «Сущность-связь» [entity-relationship]
 ER Diagram
© 2017, Незнанов А.А. 25
© ConceptDraw
Основные типы даталогических моделей
 Иерархическая
 Структура моделируется деревом (лесом) отношений информационных
элементов
 Сетевая
 Структура моделируется произвольным графом
 Реляционная
 Структура моделируется реляционной алгеброй/исчислением
 Объектно-ориентированная
 Структура моделируется объектной моделью с использованием
комплексных объектов, объектной инкапсуляции и наследования
 Объектно-реляционная
 Структура моделируется отображением объектной модели на
реляционную (обычно – надстройка над чистой реляционной моделью)
 Логическая (обычно имеют в виду дедуктивную)
 Структура моделируется продукционными правилами
© 2017, Незнанов А.А. 26
Реляционная модель – пример
© 2017, Незнанов А.А. 27
 Модель «Таблица-связь»
 RDB Scheme
© Database Answers Ltd.
Объектно-ориентированные модели
 ОО-модели данных [Object-Oriented Data Model (OODM)]
обеспечивают абстракцию не только данных, но и процессов
(алгоритмов)
 Они могут быть проще на концептуальном уровне, но заметно
сложнее в эффективной реализации
 На текущий момент нет стандартизованной формальной
ОО-модели данных
 Эту проблему пытается решить, например,
Object Management Group (OMG) (http://www.omg.org)
но многие не согласны с их подходом...
 Многие считают, что это вызвано популярностью объектно-реляционного
отображения [object-relational mapping (O/R-M или просто ORM)]
 См. Mapping Objects to Relational Databases: O/R Mapping In Detail
(http://www.agiledata.org/essays/mappingObjects.html)
© 2017, Незнанов А.А. 28
Основные функции СУБД
 Непосредственное управление данными в оперативной и
внешней памяти
 Управление метаданными
 Управление доступом к данным
 Управление транзакциями
 Поддержка языков манипулирования данными
 Обеспечение полноты и целостности данных
 Обеспечение надёжности и отказоустойчивости
 Управление многопользовательским доступом
 Обеспечение средств администрирования
© 2017, Незнанов А.А. 29
Основные требования к СУБД
 Инкапсуляция физической модели данных
 Соответствие конкретным даталогическим моделям
 Полнота предоставляемых языков манипулирования данными
 Эффективность решения задач манипулирования данными
 Объёмы хранимых данных
 Скорость обработки
 Время реакции
 Следование стандартам
 Простота использования (развёртывания, программирования,
администрирования и т.п.)
 Наличие дополнительных компонентов (импорт/экспорт данных,
анализ данных)
© 2017, Незнанов А.А. 30
Преимущества и недостатки СУБД
 Преимущества
 Новый уровень абстракции данных
 Контроль полноты и непротиворечивости
 Уменьшение объёма хранимых данных
 Улучшение масштабируемости
 Возможная распределённость
 Повышение уровня безопасности
 Повышение уровня надёжности и доступности ИС
 Упрощение администрирования
 Упрощение создания и сопровождения ИС
 Уменьшение стоимости ИС из-за снижения стоимости разработки
 Недостатки
 Лишний уровень абстракции (закон дырявых абстракций не обманешь)
 Усложнение архитектуры ИС
 Необходимость подготовки дополнительных специалистов
 Возможное снижение эффективности специфических операций над данными
 Увеличение стоимости ИС на стоимость СУБД и дополнительных аппаратных
средств
© 2017, Незнанов А.А. 31
Архитектура СУБД
 Архитектура [architecture] информационной системы –
совокупность существенных решений, определяющих
 организацию системы
 выбор уровней абстракции и структурных элементов системы, а также
интерфейсов между ними
 поведение структурных элементов в процессе взаимодействия с другими
элементами
 архитектурный стиль, направляющий и определяющий организацию
системы
 Нельзя рассматривать архитектуру СУБД в отрыве от
архитектуры ИС в целом
 Архитектура СУБД зависит от модели данных и назначения СУБД
 Архитектура ↔ Идеология и методология использования
© 2017, Незнанов А.А. 32
Классификация СУБД
СУБД классифицируются по следующим критериям
 1. По основной поддерживаемой модели данных
 2. По поддерживаемым языкам манипулирования данными
 3. По виду обрабатываемых данных:
 Текстовая
 Графическая
 Мультимедийная
 Обработки структурной информации
 Универсальная
 4. По предметной области
 Универсальная
 Специализированная (например, геоинформационная, химическая и т.д.)
© 2017, Незнанов А.А. 33
Классификация СУБД (2)
 5. По способу взаимодействия ядра СУБД с клиентами:
 Встроенная [embedded] (является компонентом разрабатываемого
приложения, обеспечивая уровень абстракции данных; не нуждается в
отдельном развёртывании)
 Локальная [local] (является отдельным приложением/библиотекой;
развёртывается отдельно, но на том же компьютере)
 Клиент-серверная [client-server] (является отдельным приложением,
обеспечивающим доступ клиентов по некоторому сетевому протоколу;
название не очень удачное, так как формально термин «клент-серверный»
относится к архитектуре, но термин «сетевой» уже занят и ещё более
расплывчат)
 Распределённая [distributed] (является совокупностью элементов,
распределённых по узлам сети; представляется клиентам единым целым,
хотя уровни прозрачности могут быть различными)
© 2017, Незнанов А.А. 34
Классификация СУБД (3)
 6. По числу одновременно обслуживаемых клиентов
 Однопользовательская
 Многопользовательская
 7. По классам эффективных операций
 Универсальная
 Справочно-поисковая
 Накапливающая
 Перерабатывающая
 8. По поддерживаемым платформам
 9. По наличию интерфейса с пользователем (ИП)
 не имеющая ИП
 имеющая ИП для администратора БД
 имеющая ИП для пользователя БД
 имеющая возможность создания нестандартного ИП
 10. По дополнительным возможностям
© 2017, Незнанов А.А. 35
Понятие корректности работы СУБД
 Корректность работы системы – соответствие поведения
системы спецификациям (модели)
 Полнота данных [completeness] – степень соответствия объёма и
состава данных реально необходимому для корректной работы и
получения адекватных результатов
 Целостность [integrity] – сохранение корректности и полноты
данных при любом изменении в системе
 Стандартный механизм поддержания целостности данных –
транзакционный принцип функционирования
 Далее мы отдельно рассмотрим транзакции в СУБД и ИС в целом
© 2017, Незнанов А.А. 36
Надёжность
 Надёжность [reliability] – способность системы работать без сбоев в
заданных условиях в течение заданного времени
 Основная характеристика – наработка на отказ
 Отказ системы [failure, fault] – любое действие системы, не
удовлетворяющее ее спецификациям
 Доступность [availability] – возможность пользователей использовать
систему, выражается в
 Доля времени, в течении которого возможности системы доступны
 Отказоустойчивость [fault tolerance] – способность системы
продолжать функционирование после возникновения неисправностей
 Только некоторые виды неисправностей (отказов) могут игнорироваться!
 Отказоустойчивость достигается только за счёт избыточности
 Ремонтопригодность [maintainability] – приспособленность системы к
проведению технического обслуживания и ремонта
 Стоимость ликвидации причины отказа, соотнесённая со стоимостью системы
© 2017, Незнанов А.А. 37
Языки запросов
 Стандартизованные языки
 SQL + QBE
 XQuery (http://www.w3schools.com/xml/xquery_intro.asp)
 Языки запросов конкретных СУБД
 Языки запросов к коллекциям текстов
 Lucene, Elasticsearch
 Специализированные языки средств анализа данных
 Data Analysis Expressions (DAX) Queries
 Знания?
 SPARQL (https://www.w3.org/TR/sparql11-overview/)
 ...
© 2017, Незнанов А.А. 38
Некоторые реляционные СУБД
№ Название Web-сайт
1 Microsoft SQL Server www.microsoft.com/sql/default.mspx
2 Teradata Database www.teradata.com/t/products-and-services/database
3 Oracle Database www.oracle.com/database/index.html
4 IBM DB2 www.ibm.com/software/data/db2
5 IBM Informix www.ibm.com/software/data/informix
6 Sybase Adaptive Server
www.sybase.com/products/databasemanagement/
adaptiveserverenterprise
7 Oracle (Sun) MySQL www.mysql.com
8 Embarcadero InterBase http://www.embarcadero.com/ru/products/interbase
9 FireBird www.firebirdsql.org
10 PostgreSQL www.postgresql.org
11 SQLite www.sqlite.org
© 2017, Незнанов А.А. 39
Язык SQL
 SQL (Structured Query Language) – Структурированный Язык
Запросов – стандартизированный язык манипулирования
данными в БД, поддерживающий реляционную модель данных и
основанный на реляционном исчислении
 Он реляционно полон
 Он изначально не полон по Тьюрингу, но возможны его расширения и
интеграция с языками программирования
© 2017, Незнанов А.А. 40
Основные версии SQL (1)
Год Обозначение Комментарий
1986 SQL-86, SQL1 Первый вариант стандарта ANSI. Принят ISO в 1987 году.
1989 SQL-89 Слегка обновлённый и с исправленными ошибками
1992 SQL-92, SQL2 Именно он на сегодня считается базовым
1999 SQL:1999, SQL3 Формальное разделение на части (parts) в базовой версии
(foundation) + пакеты (packages)
Комплексные типы данных, триггеры и уведомления,
контрольные точки в транзакциях
2003 SQL:2003 Расширения для поддержки языка разметки XML
2006 SQL:2006 Полноценная поддержка языка разметки XML и
совместимость с языком запросов XQuery
2008 SQL:2008 Предпоследний на сегодня, в полном объёме практически
нигде не поддерживается
© 2017, Незнанов А.А. 41
Основные версии (2)
 ISO standards группы 9075:2011 (2011 года)
 ISO/IEC 9075-1:2011 Information technology -- Database languages -- SQL --
Part 1: Framework (SQL/Framework)
(http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=53
681&commid=45342)
 ISO/IEC 9075-2:2011 Information technology -- Database languages -- SQL --
Part 2: Foundation (SQL/Foundation)
(http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=53
682&commid=45342)
 ISO/IEC 9075-3:2008 Information technology -- Database languages -- SQL --
Part 3: Call-Level Interface (SQL/CLI)
 ISO/IEC 9075-4:2011 Information technology -- Database languages -- SQL --
Part 4: Persistent Stored Modules (SQL/PSM)
 ISO/IEC 9075-9:2008 Information technology -- Database languages -- SQL --
Part 9: Management of External Data (SQL/MED)
© 2017, Незнанов А.А. 42
Туториалы и упражнения по SQL
 w3schools - SQL Tutorial (http://www.w3schools.com/sql/)
 SQL ZOO (http://sqlzoo.net/wiki/Main_Page)
 Практическое владение языком SQL (http://www.sql-ex.ru)
 Interactive Online SQL Training (http://www.sqlcourse2.com/intro2.html)
 Tutorialspoint: sql (http://www.tutorialspoint.com/sql/)
 SQL Exercises (http://en.wikibooks.org/wiki/SQL_Exercises)
 PostgreSQL Exercises (http://pgexercises.com)
 SQL is Hard (http://www.sqlishard.com/About/Exercises)
 Learn SQL The Hard Way (http://sql.learncodethehardway.org/book/ )
 Dr. Georgina Moulton, Essentials of SQL, Exercise Booklet WITH
ANSWERS
(http://health.knowledgeblog.org/files/2011/06/SQLExercisesWithAnswersv1.pdf)
 ...
© 2017, Незнанов А.А. 43
Что нужно знать для работы с РБД?
 Отношения – Таблицы
 Первичные ключи – Идентификаторы записей таблиц
 Внешние ключи – Зависимости между таблицами
 Ограничения целостности – Автоматический учёт зависимостей
при изменении данных
 Нормализация – Устранение аномалий при изменении данных и
исключение дублирования данных
 Язык SQL
+
 Особенности конкретной СУБД
 Способ подключения (доступа) к конкретной СУБД
 Примеры решений
© 2017, Незнанов А.А. 44
Примеры решений по работе с РБД
 Схемы данных
 Database Answers – Data Models
(http://www.databaseanswers.org/data_models/)
 Подключение
 The connection string reference (http://www.connectionstrings.com)
 Запросы
 Common MySQL Queries (http://www.artfulsoftware.com/infotree/queries.php)
 Общие рекомендации
 Database Best Practices (http://wiki.c2.com/?DatabaseBestPractices)
 Relational Database Design (http://tech.zumba.com/2015/05/22/database-design/)
 Evolutionary/Agile Database Best Practices
(http://www.agiledata.org/essays/bestPractices.html)
 The Process of Database Refactoring: Strategies for Improving
Database Quality
(http://agiledata.org/essays/databaseRefactoring.html)
© 2017, Незнанов А.А. 45
Какие инструменты использовать для РБД?
 Для «небольших» данных – помещаются на ноутбук
 Даром: SQLite для работы из языков программирования (например, Python)на
базовом SQL
 Appropriate Uses For SQLite (https://sqlite.org/whentouse.html)
 Microsoft Access для решения комплексных задач без привлечения
дополнительных средств
 Access 2016 Quick Start (http://support.office.com/en-us/article/Access-2016-
Quick-Start-f200d95b-e429-4acc-98c1-b883d4e9fc0a)
 Для «средних» данных – помещаются на сервер
 Даром: PostgreSQL (http://www.postgresql.org/)
 Microsoft SQL Server (https://www.microsoft.com/ru-ru/sql-server/sql-server-2016)
 Для больших данных (Big Data) – помещаются только в
специализированные хранилища
 Даром: пока нет нормальных вариантов, будут ли?
 Облачные хранилища (Microsoft Azure, Amazon EC2, …)
© 2017, Незнанов А.А. 46
А попробовать сделать свою БД?
 SQL Fiddle (http://sqlfiddle.com/)
© 2017, Незнанов А.А. 47
Некоторые NoSQL СУБД
№ Название Web-сайт
1 MongoDB (Documents) http://www.mongodb.com
3 Cassandra (Columns) http://cassandra.apache.org
4 Redis (Key/Value) http://redis.io
5 MemcacheDB (Key/Value) http://memcachedb.org
6 Neo4j (Graph) www.neo4j.org
7 OrientDB (MultiModel) http://www.orientechnologies.com/orientdb
© 2017, Незнанов А.А. 48
Практически полный список – на http://nosql-database.org!
© 2017, Незнанов А.А. 49
Источники информации (литература)
1. Дейт К. Введение в системы баз данных, 8-е издание. — Вильямс, 2005. – 1328 с.
2. Allen S., Terry E. Beginning Relational Data Modeling, Second Edition. – Apress, 2005. – 632
p.
3. Churcher C. Beginning Database Design. – Apress, 2007. – 300 p.
4. Powell G. Beginning XML Databases. – Wrox, 2006. – 470 p.
5. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс. –
Вильямс, 2003. – 1088 с.
6. Конноли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение.
Теория и практика. – Вильямс, 2003. – 1435 с.
7. Кренке Д. Теория и практика построения баз данных. – Питер, 2005. – 864 с.
8. Советов Б.Я., Цехановский В.В., Чертовской В.Д. Базы данных. Теория и практика. –
Высшая школа, 2007. – 463 с.
9. Шаши Ш., Санжей Ч. Основы пространственных баз данных. – М: Кудиц-Образ, 2004. –
336 с.
Источники информации (сайты)
© 2017, Незнанов А.А. 50
1. Упражнения по SQL (www.sql-ex.ru)
2. CIT Forum: базы данных (www.citforum.ru/database)
3. INTUIT.RU: Интернет-Университет Информационных Технологий: Базы данных
(www.intuit.ru/catalog/database/)
4. Форум «Client/server technologies» (www.sql.ru)
5. Справочник с примерами по языку SQL (sql.itsoft.ru)
6. Cumming A. A Gentle Introduction to SQL (www.sqlzoo.net)
7. The connection string reference (www.connectionstrings.com)
8. Internetworking Technology Handbook
(http://docwiki.cisco.com/wiki/Internetworking_Technology_Handbook)
9. Object Management Group (www.omg.com)
10. MS SQL City (www.mssqlcity.com)
11. SQL Server Worldwide Users Group (www.sswug.org/whitepapers)
12. Oracle Database (www.oracle.com/database/index.html)
13. PostgreSQL (www.postgresql.org)
14. Firebird - The RDBMS that's going where you're going (www.firebirdsql.org)
15. SQLite Home Page (www.sqlite.org)
16. NoSQL Databases Explained (http://www.mongodb.com/nosql-explained)
© 2017, Незнанов А.А. 51
Конец
Спасибо за внимание!
Контакты:
 Алексей Незнанов
 School of Data Analysis and Artificial Intelligence,
Faculty of Computer Science, NRU HSE, Moscow, Russia
 E-mail: aneznanov@hse.ru
 Web-site: http://hse.ru/staff/aneznanov
 Blog: http://siberianshamanssongs.blogspot.ru (RU)

Где и как хранить данные в процессе их анализа:  SQL и не только…

  • 1.
    © 2017, НезнановА.А. 1 Где и как хранить данные в процессе их анализа: SQL и не только… Хакатон «Культура в современном медиапространстве»
  • 2.
    Основные аббревиатуры  БД– База Данных (DB – Database)  РБД – Реляционная База Данных  СУБД – Система Управления Базами Данных (DBMS – Database Management System)  ИС – Информационная система (IS – Information System) © 2017, Незнанов А.А. 2
  • 3.
    Форматы данных ифайлов  Формат данных [data format] – совокупность правил представления и интерпретации данных в памяти компьютера, на внешних носителях, при операциях ввода/вывода и при передаче по каналам связи  В первую очередь формат определяет способ кодирования данных в некоторой знаковой системе. Другими словами, формат – это описание физической структуры информационного элемента.  Группа стандартов ISO 35.040 «Наборы символов и кодирование информации» [Character sets and information coding]  Более 400 стандартов определяют форматы текстовой, аудиальной и визуальной информации, алгоритмы её кодирования и декодирования, форматы сжатия (архивирования) и методы преобразования форматов  Формат файла [file format] – способ записи и извлечения данных из файлов во внешней памяти  Например, в операционной системе Microsoft Windows формат файла ассоциирован с расширением файла (частью имени после последней точки)  Это именно ассоциация, т. е. смена расширения не влияет на данные, хранящиеся в файле, но затрудняет сопоставление файла со средствами его обработки  Специфику сетей не затрагиваем – уровень прозрачности сетевого обмена с точки зрения форматов данных достаточен для конечного пользователя © 2017, Незнанов А.А. 3
  • 4.
    Данные и метаданные Метаданные – данные, описывающие данные  Есть ли точная граница?  Реквизит документа – это метаданные или данные?  Описание формата является метаданными!  Формализация метаданных  Модели данных и форматы данных  Пример UML (Unified Modeling Language) Metamodel & Metametamodel  (http://www.uml-diagrams.org/uml-meta-models.html)  Пример BPMN (Business Process Model And Notation)  (http://modeling-languages.com/has-success-bpmn-20-killed-bpdm-business-process- definition-metamodel)  Метаметаданные – данные описывающие метаданные  Любая формализаци метаданных есть метаметаданные  Пример: описание способа описания данных, используемых WebAPI сервиса ВКонтакте © 2017, Незнанов А.А. 4
  • 5.
    Обмен данными –уровни © 2017, Незнанов А.А. 5 Сериализованные структурированные данные Esc-форматированные (экранированные) строки Символьное представление атомарных данных Бинарные данные Конверторы Типы данных
  • 6.
    Атомарные данные: числа Целое число [Integer number]  Не будем повторять…  Вещественное число [Real number]  Имеют две основных формы представления – с фиксированной и с плавающей запятой  Число с фиксированной запятой [Floating Point Number]  Форматы для работы с денежными суммами [money, currency]  Число с плавающей запятой [Floating Point Number]  IEEE 754-2008 “IEEE Standard for Floating-Point Arithmetic” (http://grouper.ieee.org/groups/754)   Проблема точности и проблема округления!  Interval Computations (http://www.cs.utep.edu/interval-comp/index.html)  A Tutorial on Data Representation Integers, Floating-point Numbers, and Characters (https://www3.ntu.edu.sg/home/ehchua/programming/java/DataRepresentation.html) © 2017, Незнанов А.А. 6
  • 7.
    Атомарные данные: строкисимволов  Строка [String]  ASCII – American Standard Code aimed at Information Interchange (http://www.ascii.ca)  Национальные варианты таблицы (MS-DOS Codepage 866, Microsoft Windows Codepage 1251)  ISO/IEC 646:1991 “Information technology – ISO 7-bit coded character set for information interchange“ (http://www.iso.org/iso/catalogue_detail.htm?csnumber=4777)  ISO/IEC 10646:2014 “Information technology – Universal Coded Character Set” (http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumbe r=63182)  Specifies three encoding forms of the UCS: UTF-8, UCS2 (UTF-16), and UCS4 (UTF-32)  UNICODE (http://www.unicode.org)  Программная библиотека ICU – International Components for Unicode (http://site.icu- project.org)  ISO 4217:2008 “Codes for the representation of currencies and funds” (http://www.iso.org/iso/home/standards/currency_codes.htm) © 2017, Незнанов А.А. 7
  • 8.
    Атомарные данные: отметки иинтервалы времени  Дата/время [Date/Time]  ISO 8601:1988 “Data elements and interchange formats – Information interchange – Representation of dates and times” (http://www.iso.org/iso/ru/home/standards/iso8601.htm)  Устоявшееся название – ISO Time  Date and Time Formats (http://www.w3.org/TR/NOTE-datetime)  Национальные стандарты  Date format by country (https://en.wikipedia.org/wiki/Date_format_by_country) © 2017, Незнанов А.А. 8
  • 9.
    Форматы и протоколына практике  Периодически приходится обращаться к теоретическим основам  Информация и данные  Классификация «задач обработки данных» и реальные прикладные задачи  Правильный ответ «исторически сложилось» на большинство вопросов  Значимость истории!  Современное состояние  Какие форматы нужно знать?  А какие не нужно?  Как работать с метаданными?  А как с метаметаданными?  Каким образом обращаться к данным?  Вот тут и начинаются базы данных! © 2017, Незнанов А.А. 9
  • 10.
    Абстракция в информационныхсистемах Абстракция Процессов (подпрограммы) Данных (структуры данных) Того и другого (объекты) © 2017, Незнанов А.А. 10
  • 11.
    Базовые принципы абстракцииданных  Разделение концептуального, логического и физического представления данных  Логическая независимость  Возможность изменять приложения без необходимости изменения других приложений, использующих те же форматы и модели данных  Физическая независимость  Возможность изменять физическое расположение и формат данных без необходимости изменения приложений, которые их используют  Возможность формального описания «моделей данных» с помощью стандартов на метаданные © 2017, Незнанов А.А. 11
  • 12.
    Недостатки файловых систем Файловая система является знакомой большинству пользователей абстракцией внешней памяти компьютера  Файловая система, как абстракция физического доступа к носителям информации, не обеспечивает:  Структуризацию данных на уровне отдельных файлов  Контроль полноты и целостности данных на уровнях выше отдельного файла  Способов описания данных (метаданных – «данных о данных» или «словаря данных»), что необходимо для обеспечения целостности и полноты  Поиска данных с учётом метаданных © 2017, Незнанов А.А. 12
  • 13.
    База данных  Базаданных (БД) [database (DB )] – структурированная совокупность данных, организованная по единым правилам, включающим принципы описания, хранения и манипулирования этими данными  Как правило, БД является информационной моделью некоторой предметной области  БД можно рассматривать на различных уровнях абстракции, обычно выделяют как минимум два:  физический (способ представления данных с использованием конкретного аппаратного и программного обеспечения)  логический (способ представления данных с точки зрения пользователя)  Также обычно при проектировании БД выделяется верхний уровень – концептуальный, который позволяет не привязывать начальный анализ предметной области и построение самой общей модели данных к каким- либо конкретным инструментам последующей обработки данных © 2017, Незнанов А.А. 13
  • 14.
    Трёхуровневая модель абстракцииданных Концептуальный уровень (сущности) Логический уровень (типы) Физический уровень (форматы) © 2017, Незнанов А.А. 14 Инфологическая модель Даталогическая модель Физическая модель
  • 15.
    СУБД  Система управлениябазами данных (СУБД) [database management system (DBMS)] – системное программное обеспечение, служащее для абстракции физического уровня представления данными и управления доступом к данным  Другой смысл – программно-аппаратный комплекс  Основные функции СУБД:  определение данных (то есть работа с метаданными [metadata] – данными, описывающими данные)  хранение данных  обработка данных  обеспечение целостности и безопасности данных  импорт/экспорт данных в различных форматах © 2017, Незнанов А.А. 15
  • 16.
    Цель создания БДи СУБД  Главная цель – борьба со сложностью путём абстракции способа доступа к данным  СУБД позволяет рассматривать БД, абстрагируясь от аппаратного обеспечения и форматов физического хранения данных  СУБД поддерживает высокоуровневые интерфейсы взаимодействия с клиентами  (например, язык SQL, который будет изучаться в дальнейшем)  СУБД обеспечивают повторное использование лучших практик абстракции данных и проектирования информационных систем  СУБД значительно удешевляют информационные системы © 2017, Незнанов А.А. 16
  • 17.
    Клиенты СУБД  КлиентСУБД [DBMS client] – человек или программная система, использующая СУБД для работы с данными.  Пользователи [user] – клиенты-человеки:  Конечный пользователь [end user]  Администратор [administrator]  Администратор данных [data administrator], обеспечивает качество, сохранность и доступность для использования в служебных целях информации, накопленной в организации  Администратор баз данных [database administrator], обеспечивает эффективное функционирование СУБД и использование компьютерных баз данных, в том числе поддержку схем данных, надежность и отказоустойчивость технических средств всех уровней, доступность и удобство ввода/вывода данных  Такое разделение пользователей вытекает из концепции централизованного управления данными [centralized data management], когда администраторы держат в своих руках контроль над всеми действиями конечных пользователей в соответствие с политикой безопасности © 2017, Незнанов А.А. 17
  • 18.
    Банк данных  Банкданных (БнД) – это система специальным образом организованных данных – баз данных, программных, технических, языковых, организационно-методических средств, предназначенных для обеспечения централизованного накопления и коллективного многоцелевого использования данных  Основы банка данных – СУБД и методика (политика) управления данными © 2017, Незнанов А.А. 18
  • 19.
    Структура банка данных ©2017, Незнанов А.А. 19
  • 20.
    История развития СУБД 1968 г. – первая промышленная иерархическая СУБД IMS (Information Management System) фирмы IBM  1975 г. – первый стандарт СУБД, разработанный ассоциацией по языкам систем обработки данных – Conference of Data System Language (CODASYL)  1976 г. – Для СУБД System R создаётся язык SEQUEL  1979 г. – СУБД dBase-II фирмы Ashton-Tate  Затем куплена Borland, особенно популярной стала версия 4  1981 г. – Э. Кодд формализует реляционную модель данных  1985 г. – старт проекта ORION фирмы MCC  1986 г. – стандарт SQL 1.0,  Конец 1980-ч годов – первые попытки создания распределённых СУБД  1992 г. – стандарт SQL92, начало нового этапа развития SQL-серверов как компонентов клиент-серверных систем  Конец 1990-х годов – реальное внедрение распределённых СУБД  Конец 2000-х годов – конвергенция технологий доступа к данным на основе виртуализации и универсальных языков разметки (XML и др.) © 2017, Незнанов А.А. 20
  • 21.
    Предметная область исущности  Сущность [entity] – нечто (физический или идеальный объект, процесс, явление), что можно идентифицировать (отличить от другого)  Из определения следует, что у сущности всегда можно вычленить идентификатор  В тривиальном случае сущность и её идентификатор совпадают  Предметная область [application domain, data domain] – набор взаимосвязанных сущностей, описывающий некоторую часть действительности, относительно независимую и рассматриваемую в контексте решения некоторого класса проблем  Часто – проблемная или прикладная область © 2017, Незнанов А.А. 21
  • 22.
    Моделирование данных  Модель– упрощенное описание системы, сохраняющее важную для целей моделирования информацию о системе и достаточное для решения задач, вытекающих из этих целей  Модель данных – схема (порядок, совокупность принципов, система) организации данных в единое целое для создания, накопления, обработки и управления  Некоторая абстракция, которая будучи приложена к конкретным данным, позволяет пользователям и разработчикам трактовать их уже как информацию, то есть сведения, содержащие не только данные, но и взаимосвязи между ними.  Инфологическая модель – формализует информацию о предметной области вне зависимости от представления данных в информационных системах  Например – модель «сущность-связь»  Даталогическая модель – формализует информацию о предметной области в виде абстрактных структур данных с учётом возможностей СУБД  Например – реляционная модель  Физическая модель – формализует информацию о предметной области в виде конкретных структур данных с учётом аппаратуры  Например – индексированные файлы прямого доступа во внешней памяти и B+-деревья для доступа к ним © 2017, Незнанов А.А. 22
  • 23.
    Основы построения моделейданных  Главные принципы  Структуризация – стремление к формализации структуры данных  Детализация – стремление к исчерпывающей полноте описания  Консолидация – стремление к целостности описания  Унификация – стремление к единству проектных решений  Главные аспекты  Структурный  Целостностный  Манипуляционный  Структуризация автоматически влечёт использование теоретико- графовых методов исследования моделей данных, но формализация может быть любой:  Документо-ориентированная  Обекто-ориентированная  Теоретико-множественная  Реляционная © 2017, Незнанов А.А. 23
  • 24.
    Замечания о связиинфо- и дата- моделей  Прежде, чем рассматривать первые этапы моделирования данных и инфологические модели, необходимо рассмотреть, какие варианты существуют для последующей формализации на логическом уровне  Даталогические модели в принципе играют роль якоря  Их формализация должна быть достаточна для относительно простого перехода от концепции к реализации  Их изобразительная сила должна быть достаточно для отражения всех аспектов работы с данными  Их особенности должны соответствовать предметной области, решаемым задачам, относительной частоте вариантов использования, и др. © 2017, Незнанов А.А. 24
  • 25.
    Базовая статическая инфологическаямодель  Модель «Сущность-связь» [entity-relationship]  ER Diagram © 2017, Незнанов А.А. 25 © ConceptDraw
  • 26.
    Основные типы даталогическихмоделей  Иерархическая  Структура моделируется деревом (лесом) отношений информационных элементов  Сетевая  Структура моделируется произвольным графом  Реляционная  Структура моделируется реляционной алгеброй/исчислением  Объектно-ориентированная  Структура моделируется объектной моделью с использованием комплексных объектов, объектной инкапсуляции и наследования  Объектно-реляционная  Структура моделируется отображением объектной модели на реляционную (обычно – надстройка над чистой реляционной моделью)  Логическая (обычно имеют в виду дедуктивную)  Структура моделируется продукционными правилами © 2017, Незнанов А.А. 26
  • 27.
    Реляционная модель –пример © 2017, Незнанов А.А. 27  Модель «Таблица-связь»  RDB Scheme © Database Answers Ltd.
  • 28.
    Объектно-ориентированные модели  ОО-моделиданных [Object-Oriented Data Model (OODM)] обеспечивают абстракцию не только данных, но и процессов (алгоритмов)  Они могут быть проще на концептуальном уровне, но заметно сложнее в эффективной реализации  На текущий момент нет стандартизованной формальной ОО-модели данных  Эту проблему пытается решить, например, Object Management Group (OMG) (http://www.omg.org) но многие не согласны с их подходом...  Многие считают, что это вызвано популярностью объектно-реляционного отображения [object-relational mapping (O/R-M или просто ORM)]  См. Mapping Objects to Relational Databases: O/R Mapping In Detail (http://www.agiledata.org/essays/mappingObjects.html) © 2017, Незнанов А.А. 28
  • 29.
    Основные функции СУБД Непосредственное управление данными в оперативной и внешней памяти  Управление метаданными  Управление доступом к данным  Управление транзакциями  Поддержка языков манипулирования данными  Обеспечение полноты и целостности данных  Обеспечение надёжности и отказоустойчивости  Управление многопользовательским доступом  Обеспечение средств администрирования © 2017, Незнанов А.А. 29
  • 30.
    Основные требования кСУБД  Инкапсуляция физической модели данных  Соответствие конкретным даталогическим моделям  Полнота предоставляемых языков манипулирования данными  Эффективность решения задач манипулирования данными  Объёмы хранимых данных  Скорость обработки  Время реакции  Следование стандартам  Простота использования (развёртывания, программирования, администрирования и т.п.)  Наличие дополнительных компонентов (импорт/экспорт данных, анализ данных) © 2017, Незнанов А.А. 30
  • 31.
    Преимущества и недостаткиСУБД  Преимущества  Новый уровень абстракции данных  Контроль полноты и непротиворечивости  Уменьшение объёма хранимых данных  Улучшение масштабируемости  Возможная распределённость  Повышение уровня безопасности  Повышение уровня надёжности и доступности ИС  Упрощение администрирования  Упрощение создания и сопровождения ИС  Уменьшение стоимости ИС из-за снижения стоимости разработки  Недостатки  Лишний уровень абстракции (закон дырявых абстракций не обманешь)  Усложнение архитектуры ИС  Необходимость подготовки дополнительных специалистов  Возможное снижение эффективности специфических операций над данными  Увеличение стоимости ИС на стоимость СУБД и дополнительных аппаратных средств © 2017, Незнанов А.А. 31
  • 32.
    Архитектура СУБД  Архитектура[architecture] информационной системы – совокупность существенных решений, определяющих  организацию системы  выбор уровней абстракции и структурных элементов системы, а также интерфейсов между ними  поведение структурных элементов в процессе взаимодействия с другими элементами  архитектурный стиль, направляющий и определяющий организацию системы  Нельзя рассматривать архитектуру СУБД в отрыве от архитектуры ИС в целом  Архитектура СУБД зависит от модели данных и назначения СУБД  Архитектура ↔ Идеология и методология использования © 2017, Незнанов А.А. 32
  • 33.
    Классификация СУБД СУБД классифицируютсяпо следующим критериям  1. По основной поддерживаемой модели данных  2. По поддерживаемым языкам манипулирования данными  3. По виду обрабатываемых данных:  Текстовая  Графическая  Мультимедийная  Обработки структурной информации  Универсальная  4. По предметной области  Универсальная  Специализированная (например, геоинформационная, химическая и т.д.) © 2017, Незнанов А.А. 33
  • 34.
    Классификация СУБД (2) 5. По способу взаимодействия ядра СУБД с клиентами:  Встроенная [embedded] (является компонентом разрабатываемого приложения, обеспечивая уровень абстракции данных; не нуждается в отдельном развёртывании)  Локальная [local] (является отдельным приложением/библиотекой; развёртывается отдельно, но на том же компьютере)  Клиент-серверная [client-server] (является отдельным приложением, обеспечивающим доступ клиентов по некоторому сетевому протоколу; название не очень удачное, так как формально термин «клент-серверный» относится к архитектуре, но термин «сетевой» уже занят и ещё более расплывчат)  Распределённая [distributed] (является совокупностью элементов, распределённых по узлам сети; представляется клиентам единым целым, хотя уровни прозрачности могут быть различными) © 2017, Незнанов А.А. 34
  • 35.
    Классификация СУБД (3) 6. По числу одновременно обслуживаемых клиентов  Однопользовательская  Многопользовательская  7. По классам эффективных операций  Универсальная  Справочно-поисковая  Накапливающая  Перерабатывающая  8. По поддерживаемым платформам  9. По наличию интерфейса с пользователем (ИП)  не имеющая ИП  имеющая ИП для администратора БД  имеющая ИП для пользователя БД  имеющая возможность создания нестандартного ИП  10. По дополнительным возможностям © 2017, Незнанов А.А. 35
  • 36.
    Понятие корректности работыСУБД  Корректность работы системы – соответствие поведения системы спецификациям (модели)  Полнота данных [completeness] – степень соответствия объёма и состава данных реально необходимому для корректной работы и получения адекватных результатов  Целостность [integrity] – сохранение корректности и полноты данных при любом изменении в системе  Стандартный механизм поддержания целостности данных – транзакционный принцип функционирования  Далее мы отдельно рассмотрим транзакции в СУБД и ИС в целом © 2017, Незнанов А.А. 36
  • 37.
    Надёжность  Надёжность [reliability]– способность системы работать без сбоев в заданных условиях в течение заданного времени  Основная характеристика – наработка на отказ  Отказ системы [failure, fault] – любое действие системы, не удовлетворяющее ее спецификациям  Доступность [availability] – возможность пользователей использовать систему, выражается в  Доля времени, в течении которого возможности системы доступны  Отказоустойчивость [fault tolerance] – способность системы продолжать функционирование после возникновения неисправностей  Только некоторые виды неисправностей (отказов) могут игнорироваться!  Отказоустойчивость достигается только за счёт избыточности  Ремонтопригодность [maintainability] – приспособленность системы к проведению технического обслуживания и ремонта  Стоимость ликвидации причины отказа, соотнесённая со стоимостью системы © 2017, Незнанов А.А. 37
  • 38.
    Языки запросов  Стандартизованныеязыки  SQL + QBE  XQuery (http://www.w3schools.com/xml/xquery_intro.asp)  Языки запросов конкретных СУБД  Языки запросов к коллекциям текстов  Lucene, Elasticsearch  Специализированные языки средств анализа данных  Data Analysis Expressions (DAX) Queries  Знания?  SPARQL (https://www.w3.org/TR/sparql11-overview/)  ... © 2017, Незнанов А.А. 38
  • 39.
    Некоторые реляционные СУБД №Название Web-сайт 1 Microsoft SQL Server www.microsoft.com/sql/default.mspx 2 Teradata Database www.teradata.com/t/products-and-services/database 3 Oracle Database www.oracle.com/database/index.html 4 IBM DB2 www.ibm.com/software/data/db2 5 IBM Informix www.ibm.com/software/data/informix 6 Sybase Adaptive Server www.sybase.com/products/databasemanagement/ adaptiveserverenterprise 7 Oracle (Sun) MySQL www.mysql.com 8 Embarcadero InterBase http://www.embarcadero.com/ru/products/interbase 9 FireBird www.firebirdsql.org 10 PostgreSQL www.postgresql.org 11 SQLite www.sqlite.org © 2017, Незнанов А.А. 39
  • 40.
    Язык SQL  SQL(Structured Query Language) – Структурированный Язык Запросов – стандартизированный язык манипулирования данными в БД, поддерживающий реляционную модель данных и основанный на реляционном исчислении  Он реляционно полон  Он изначально не полон по Тьюрингу, но возможны его расширения и интеграция с языками программирования © 2017, Незнанов А.А. 40
  • 41.
    Основные версии SQL(1) Год Обозначение Комментарий 1986 SQL-86, SQL1 Первый вариант стандарта ANSI. Принят ISO в 1987 году. 1989 SQL-89 Слегка обновлённый и с исправленными ошибками 1992 SQL-92, SQL2 Именно он на сегодня считается базовым 1999 SQL:1999, SQL3 Формальное разделение на части (parts) в базовой версии (foundation) + пакеты (packages) Комплексные типы данных, триггеры и уведомления, контрольные точки в транзакциях 2003 SQL:2003 Расширения для поддержки языка разметки XML 2006 SQL:2006 Полноценная поддержка языка разметки XML и совместимость с языком запросов XQuery 2008 SQL:2008 Предпоследний на сегодня, в полном объёме практически нигде не поддерживается © 2017, Незнанов А.А. 41
  • 42.
    Основные версии (2) ISO standards группы 9075:2011 (2011 года)  ISO/IEC 9075-1:2011 Information technology -- Database languages -- SQL -- Part 1: Framework (SQL/Framework) (http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=53 681&commid=45342)  ISO/IEC 9075-2:2011 Information technology -- Database languages -- SQL -- Part 2: Foundation (SQL/Foundation) (http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=53 682&commid=45342)  ISO/IEC 9075-3:2008 Information technology -- Database languages -- SQL -- Part 3: Call-Level Interface (SQL/CLI)  ISO/IEC 9075-4:2011 Information technology -- Database languages -- SQL -- Part 4: Persistent Stored Modules (SQL/PSM)  ISO/IEC 9075-9:2008 Information technology -- Database languages -- SQL -- Part 9: Management of External Data (SQL/MED) © 2017, Незнанов А.А. 42
  • 43.
    Туториалы и упражненияпо SQL  w3schools - SQL Tutorial (http://www.w3schools.com/sql/)  SQL ZOO (http://sqlzoo.net/wiki/Main_Page)  Практическое владение языком SQL (http://www.sql-ex.ru)  Interactive Online SQL Training (http://www.sqlcourse2.com/intro2.html)  Tutorialspoint: sql (http://www.tutorialspoint.com/sql/)  SQL Exercises (http://en.wikibooks.org/wiki/SQL_Exercises)  PostgreSQL Exercises (http://pgexercises.com)  SQL is Hard (http://www.sqlishard.com/About/Exercises)  Learn SQL The Hard Way (http://sql.learncodethehardway.org/book/ )  Dr. Georgina Moulton, Essentials of SQL, Exercise Booklet WITH ANSWERS (http://health.knowledgeblog.org/files/2011/06/SQLExercisesWithAnswersv1.pdf)  ... © 2017, Незнанов А.А. 43
  • 44.
    Что нужно знатьдля работы с РБД?  Отношения – Таблицы  Первичные ключи – Идентификаторы записей таблиц  Внешние ключи – Зависимости между таблицами  Ограничения целостности – Автоматический учёт зависимостей при изменении данных  Нормализация – Устранение аномалий при изменении данных и исключение дублирования данных  Язык SQL +  Особенности конкретной СУБД  Способ подключения (доступа) к конкретной СУБД  Примеры решений © 2017, Незнанов А.А. 44
  • 45.
    Примеры решений поработе с РБД  Схемы данных  Database Answers – Data Models (http://www.databaseanswers.org/data_models/)  Подключение  The connection string reference (http://www.connectionstrings.com)  Запросы  Common MySQL Queries (http://www.artfulsoftware.com/infotree/queries.php)  Общие рекомендации  Database Best Practices (http://wiki.c2.com/?DatabaseBestPractices)  Relational Database Design (http://tech.zumba.com/2015/05/22/database-design/)  Evolutionary/Agile Database Best Practices (http://www.agiledata.org/essays/bestPractices.html)  The Process of Database Refactoring: Strategies for Improving Database Quality (http://agiledata.org/essays/databaseRefactoring.html) © 2017, Незнанов А.А. 45
  • 46.
    Какие инструменты использоватьдля РБД?  Для «небольших» данных – помещаются на ноутбук  Даром: SQLite для работы из языков программирования (например, Python)на базовом SQL  Appropriate Uses For SQLite (https://sqlite.org/whentouse.html)  Microsoft Access для решения комплексных задач без привлечения дополнительных средств  Access 2016 Quick Start (http://support.office.com/en-us/article/Access-2016- Quick-Start-f200d95b-e429-4acc-98c1-b883d4e9fc0a)  Для «средних» данных – помещаются на сервер  Даром: PostgreSQL (http://www.postgresql.org/)  Microsoft SQL Server (https://www.microsoft.com/ru-ru/sql-server/sql-server-2016)  Для больших данных (Big Data) – помещаются только в специализированные хранилища  Даром: пока нет нормальных вариантов, будут ли?  Облачные хранилища (Microsoft Azure, Amazon EC2, …) © 2017, Незнанов А.А. 46
  • 47.
    А попробовать сделатьсвою БД?  SQL Fiddle (http://sqlfiddle.com/) © 2017, Незнанов А.А. 47
  • 48.
    Некоторые NoSQL СУБД №Название Web-сайт 1 MongoDB (Documents) http://www.mongodb.com 3 Cassandra (Columns) http://cassandra.apache.org 4 Redis (Key/Value) http://redis.io 5 MemcacheDB (Key/Value) http://memcachedb.org 6 Neo4j (Graph) www.neo4j.org 7 OrientDB (MultiModel) http://www.orientechnologies.com/orientdb © 2017, Незнанов А.А. 48 Практически полный список – на http://nosql-database.org!
  • 49.
    © 2017, НезнановА.А. 49 Источники информации (литература) 1. Дейт К. Введение в системы баз данных, 8-е издание. — Вильямс, 2005. – 1328 с. 2. Allen S., Terry E. Beginning Relational Data Modeling, Second Edition. – Apress, 2005. – 632 p. 3. Churcher C. Beginning Database Design. – Apress, 2007. – 300 p. 4. Powell G. Beginning XML Databases. – Wrox, 2006. – 470 p. 5. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс. – Вильямс, 2003. – 1088 с. 6. Конноли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. – Вильямс, 2003. – 1435 с. 7. Кренке Д. Теория и практика построения баз данных. – Питер, 2005. – 864 с. 8. Советов Б.Я., Цехановский В.В., Чертовской В.Д. Базы данных. Теория и практика. – Высшая школа, 2007. – 463 с. 9. Шаши Ш., Санжей Ч. Основы пространственных баз данных. – М: Кудиц-Образ, 2004. – 336 с.
  • 50.
    Источники информации (сайты) ©2017, Незнанов А.А. 50 1. Упражнения по SQL (www.sql-ex.ru) 2. CIT Forum: базы данных (www.citforum.ru/database) 3. INTUIT.RU: Интернет-Университет Информационных Технологий: Базы данных (www.intuit.ru/catalog/database/) 4. Форум «Client/server technologies» (www.sql.ru) 5. Справочник с примерами по языку SQL (sql.itsoft.ru) 6. Cumming A. A Gentle Introduction to SQL (www.sqlzoo.net) 7. The connection string reference (www.connectionstrings.com) 8. Internetworking Technology Handbook (http://docwiki.cisco.com/wiki/Internetworking_Technology_Handbook) 9. Object Management Group (www.omg.com) 10. MS SQL City (www.mssqlcity.com) 11. SQL Server Worldwide Users Group (www.sswug.org/whitepapers) 12. Oracle Database (www.oracle.com/database/index.html) 13. PostgreSQL (www.postgresql.org) 14. Firebird - The RDBMS that's going where you're going (www.firebirdsql.org) 15. SQLite Home Page (www.sqlite.org) 16. NoSQL Databases Explained (http://www.mongodb.com/nosql-explained)
  • 51.
    © 2017, НезнановА.А. 51 Конец Спасибо за внимание! Контакты:  Алексей Незнанов  School of Data Analysis and Artificial Intelligence, Faculty of Computer Science, NRU HSE, Moscow, Russia  E-mail: aneznanov@hse.ru  Web-site: http://hse.ru/staff/aneznanov  Blog: http://siberianshamanssongs.blogspot.ru (RU)