SlideShare a Scribd company logo
1 of 51
Download to read offline
© 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)

More Related Content

What's hot

DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.mikhaelsmirnov
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программированиеRauan Ibraikhan
 
Открытые форматы и открытое ПО: достоинства и проблемы
Открытые форматы и открытое ПО: достоинства и проблемыОткрытые форматы и открытое ПО: достоинства и проблемы
Открытые форматы и открытое ПО: достоинства и проблемыNatasha Khramtsovsky
 

What's hot (8)

DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
Управление данными (реляционная модель)
Управление данными (реляционная модель)Управление данными (реляционная модель)
Управление данными (реляционная модель)
 
Практикум Web программирование
Практикум Web программированиеПрактикум Web программирование
Практикум Web программирование
 
Управление данными (модели данных)
Управление данными (модели данных)Управление данными (модели данных)
Управление данными (модели данных)
 
Управление данными (литература)
Управление данными (литература)Управление данными (литература)
Управление данными (литература)
 
Управление данными. Основы проектирования БД
Управление данными. Основы проектирования БДУправление данными. Основы проектирования БД
Управление данными. Основы проектирования БД
 
Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)Управление данными (Введение в СУБД)
Управление данными (Введение в СУБД)
 
Открытые форматы и открытое ПО: достоинства и проблемы
Открытые форматы и открытое ПО: достоинства и проблемыОткрытые форматы и открытое ПО: достоинства и проблемы
Открытые форматы и открытое ПО: достоинства и проблемы
 

Viewers also liked

Современные математические модели медицинской информатики: от статистики до...
Современные математические модели медицинской информатики: от статистики до...Современные математические модели медицинской информатики: от статистики до...
Современные математические модели медицинской информатики: от статистики до...Alexey Neznanov
 
Современные коллаборативные технологии в учебном процессе: практика внедрения
Современные коллаборативные технологии в учебном процессе: практика внедренияСовременные коллаборативные технологии в учебном процессе: практика внедрения
Современные коллаборативные технологии в учебном процессе: практика внедренияAlexey Neznanov
 
Jiří Malý - How to optimize RTB campaigns – current possibilities of the Czec...
Jiří Malý - How to optimize RTB campaigns – current possibilities of the Czec...Jiří Malý - How to optimize RTB campaigns – current possibilities of the Czec...
Jiří Malý - How to optimize RTB campaigns – current possibilities of the Czec...Marketing Festival
 
Thong tin du an sanctuary villas ho tram strip
Thong tin du an sanctuary villas ho tram stripThong tin du an sanctuary villas ho tram strip
Thong tin du an sanctuary villas ho tram stripBất động sản 777
 
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...Alexey Neznanov
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...Alexey Neznanov
 
Коллаборативные технологии и инструменты в учебном процессе
Коллаборативные технологии и инструменты в учебном процессеКоллаборативные технологии и инструменты в учебном процессе
Коллаборативные технологии и инструменты в учебном процессеAlexey Neznanov
 
Клуб Юных Программатиков. Лекция 2. Евгений Жданов
Клуб Юных Программатиков. Лекция 2. Евгений ЖдановКлуб Юных Программатиков. Лекция 2. Евгений Жданов
Клуб Юных Программатиков. Лекция 2. Евгений ЖдановYoungProgrammatic
 
Доказательная медицина, клинические исследования и медицинская информатика: ...
Доказательная медицина, клинические исследования и медицинская информатика: ...Доказательная медицина, клинические исследования и медицинская информатика: ...
Доказательная медицина, клинические исследования и медицинская информатика: ...Alexey Neznanov
 
Beeline. Digital–революция на рынке Mobile Programmatic
Beeline. Digital–революция на рынке Mobile ProgrammaticBeeline. Digital–революция на рынке Mobile Programmatic
Beeline. Digital–революция на рынке Mobile ProgrammaticHybridRussia
 
Modern arch neznanov_2015_05_14
Modern arch neznanov_2015_05_14Modern arch neznanov_2015_05_14
Modern arch neznanov_2015_05_14Alexey Neznanov
 
исследование черного рынка бд итог
исследование черного рынка бд итог исследование черного рынка бд итог
исследование черного рынка бд итог MFISoft
 
RIF CIB 2015 DCA Big Data Value
RIF CIB 2015 DCA Big Data ValueRIF CIB 2015 DCA Big Data Value
RIF CIB 2015 DCA Big Data ValueKirill Chistov
 
Онтологии и информационная архитектура: соотношение терминов и потенциал совм...
Онтологии и информационная архитектура: соотношение терминов и потенциал совм...Онтологии и информационная архитектура: соотношение терминов и потенциал совм...
Онтологии и информационная архитектура: соотношение терминов и потенциал совм...Dmitry Kudryavtsev
 
Я.крипта и Я.аудитории
Я.крипта и Я.аудиторииЯ.крипта и Я.аудитории
Я.крипта и Я.аудиторииiabrussiaprez
 
Blended learning in Software Engineering Education: the Application Lifecycle...
Blended learning in Software Engineering Education: the Application Lifecycle...Blended learning in Software Engineering Education: the Application Lifecycle...
Blended learning in Software Engineering Education: the Application Lifecycle...Alexey Neznanov
 
Программатик кампании в потоковом видео
Программатик кампании в потоковом видеоПрограмматик кампании в потоковом видео
Программатик кампании в потоковом видеоAdRiver
 
Простой programmatic для высокой результативности performance-кампаний
Простой programmatic для высокой результативности performance-кампанийПростой programmatic для высокой результативности performance-кампаний
Простой programmatic для высокой результативности performance-кампанийAdRiver
 
AdRiver SSP
AdRiver SSPAdRiver SSP
AdRiver SSPAdRiver
 
AdRiver для издателей (2016)
AdRiver для издателей (2016)AdRiver для издателей (2016)
AdRiver для издателей (2016)AdRiver
 

Viewers also liked (20)

Современные математические модели медицинской информатики: от статистики до...
Современные математические модели медицинской информатики: от статистики до...Современные математические модели медицинской информатики: от статистики до...
Современные математические модели медицинской информатики: от статистики до...
 
Современные коллаборативные технологии в учебном процессе: практика внедрения
Современные коллаборативные технологии в учебном процессе: практика внедренияСовременные коллаборативные технологии в учебном процессе: практика внедрения
Современные коллаборативные технологии в учебном процессе: практика внедрения
 
Jiří Malý - How to optimize RTB campaigns – current possibilities of the Czec...
Jiří Malý - How to optimize RTB campaigns – current possibilities of the Czec...Jiří Malý - How to optimize RTB campaigns – current possibilities of the Czec...
Jiří Malý - How to optimize RTB campaigns – current possibilities of the Czec...
 
Thong tin du an sanctuary villas ho tram strip
Thong tin du an sanctuary villas ho tram stripThong tin du an sanctuary villas ho tram strip
Thong tin du an sanctuary villas ho tram strip
 
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
Интеллектуальный анализ данных и откртытые данные в клинической информатике: ...
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
 
Коллаборативные технологии и инструменты в учебном процессе
Коллаборативные технологии и инструменты в учебном процессеКоллаборативные технологии и инструменты в учебном процессе
Коллаборативные технологии и инструменты в учебном процессе
 
Клуб Юных Программатиков. Лекция 2. Евгений Жданов
Клуб Юных Программатиков. Лекция 2. Евгений ЖдановКлуб Юных Программатиков. Лекция 2. Евгений Жданов
Клуб Юных Программатиков. Лекция 2. Евгений Жданов
 
Доказательная медицина, клинические исследования и медицинская информатика: ...
Доказательная медицина, клинические исследования и медицинская информатика: ...Доказательная медицина, клинические исследования и медицинская информатика: ...
Доказательная медицина, клинические исследования и медицинская информатика: ...
 
Beeline. Digital–революция на рынке Mobile Programmatic
Beeline. Digital–революция на рынке Mobile ProgrammaticBeeline. Digital–революция на рынке Mobile Programmatic
Beeline. Digital–революция на рынке Mobile Programmatic
 
Modern arch neznanov_2015_05_14
Modern arch neznanov_2015_05_14Modern arch neznanov_2015_05_14
Modern arch neznanov_2015_05_14
 
исследование черного рынка бд итог
исследование черного рынка бд итог исследование черного рынка бд итог
исследование черного рынка бд итог
 
RIF CIB 2015 DCA Big Data Value
RIF CIB 2015 DCA Big Data ValueRIF CIB 2015 DCA Big Data Value
RIF CIB 2015 DCA Big Data Value
 
Онтологии и информационная архитектура: соотношение терминов и потенциал совм...
Онтологии и информационная архитектура: соотношение терминов и потенциал совм...Онтологии и информационная архитектура: соотношение терминов и потенциал совм...
Онтологии и информационная архитектура: соотношение терминов и потенциал совм...
 
Я.крипта и Я.аудитории
Я.крипта и Я.аудиторииЯ.крипта и Я.аудитории
Я.крипта и Я.аудитории
 
Blended learning in Software Engineering Education: the Application Lifecycle...
Blended learning in Software Engineering Education: the Application Lifecycle...Blended learning in Software Engineering Education: the Application Lifecycle...
Blended learning in Software Engineering Education: the Application Lifecycle...
 
Программатик кампании в потоковом видео
Программатик кампании в потоковом видеоПрограмматик кампании в потоковом видео
Программатик кампании в потоковом видео
 
Простой programmatic для высокой результативности performance-кампаний
Простой programmatic для высокой результативности performance-кампанийПростой programmatic для высокой результативности performance-кампаний
Простой programmatic для высокой результативности performance-кампаний
 
AdRiver SSP
AdRiver SSPAdRiver SSP
AdRiver SSP
 
AdRiver для издателей (2016)
AdRiver для издателей (2016)AdRiver для издателей (2016)
AdRiver для издателей (2016)
 

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

001
001001
001JIuc
 
Базы данных
Базы данныхБазы данных
Базы данныхValiaKuba
 
Управление Данными. Лекция 1
Управление Данными. Лекция 1Управление Данными. Лекция 1
Управление Данными. Лекция 1Dmitriy Krukov
 
тема 4 2
тема 4 2тема 4 2
тема 4 2asheg
 
раздел 1 введение в базы данных
раздел 1  введение в базы данныхраздел 1  введение в базы данных
раздел 1 введение в базы данныхtatianabtt
 
006
006006
006JIuc
 
базы данных в Delphi
базы данных в Delphiбазы данных в Delphi
базы данных в DelphiAeka227
 
Базы данных лекция №1
Базы данных лекция №1Базы данных лекция №1
Базы данных лекция №1Vitaliy Pak
 
Бизнес-контекст, совместная работа и согласованность для интеллектуального уп...
Бизнес-контекст, совместная работа и согласованность для интеллектуального уп...Бизнес-контекст, совместная работа и согласованность для интеллектуального уп...
Бизнес-контекст, совместная работа и согласованность для интеллектуального уп...Andrew Sovtsov
 
модели метаданных
модели метаданныхмодели метаданных
модели метаданныхasheg
 
пр8 сем2 1_проектированиербд_er_model2014_02_27
пр8 сем2 1_проектированиербд_er_model2014_02_27пр8 сем2 1_проектированиербд_er_model2014_02_27
пр8 сем2 1_проектированиербд_er_model2014_02_27helenyakovleva
 
399.базы данных описание данных и работа с записями на языке sql в субд ms ac...
399.базы данных описание данных и работа с записями на языке sql в субд ms ac...399.базы данных описание данных и работа с записями на языке sql в субд ms ac...
399.базы данных описание данных и работа с записями на языке sql в субд ms ac...ivanov15548
 

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

001
001001
001
 
Ais Lecture 2
Ais Lecture 2Ais Lecture 2
Ais Lecture 2
 
9946
99469946
9946
 
Базы данных
Базы данныхБазы данных
Базы данных
 
Управление Данными. Лекция 1
Управление Данными. Лекция 1Управление Данными. Лекция 1
Управление Данными. Лекция 1
 
10 субд
10 субд10 субд
10 субд
 
тема 4 2
тема 4 2тема 4 2
тема 4 2
 
Ais Lecture 4
Ais Lecture 4Ais Lecture 4
Ais Lecture 4
 
Ais Lecture 1
Ais Lecture 1Ais Lecture 1
Ais Lecture 1
 
раздел 1 введение в базы данных
раздел 1  введение в базы данныхраздел 1  введение в базы данных
раздел 1 введение в базы данных
 
006
006006
006
 
лекция 10
лекция 10лекция 10
лекция 10
 
базы данных в Delphi
базы данных в Delphiбазы данных в Delphi
базы данных в Delphi
 
Baza de date rus
Baza de date rusBaza de date rus
Baza de date rus
 
Базы данных лекция №1
Базы данных лекция №1Базы данных лекция №1
Базы данных лекция №1
 
Бизнес-контекст, совместная работа и согласованность для интеллектуального уп...
Бизнес-контекст, совместная работа и согласованность для интеллектуального уп...Бизнес-контекст, совместная работа и согласованность для интеллектуального уп...
Бизнес-контекст, совместная работа и согласованность для интеллектуального уп...
 
модели метаданных
модели метаданныхмодели метаданных
модели метаданных
 
тема 3
тема 3тема 3
тема 3
 
пр8 сем2 1_проектированиербд_er_model2014_02_27
пр8 сем2 1_проектированиербд_er_model2014_02_27пр8 сем2 1_проектированиербд_er_model2014_02_27
пр8 сем2 1_проектированиербд_er_model2014_02_27
 
399.базы данных описание данных и работа с записями на языке sql в субд ms ac...
399.базы данных описание данных и работа с записями на языке sql в субд ms ac...399.базы данных описание данных и работа с записями на языке sql в субд ms ac...
399.базы данных описание данных и работа с записями на языке sql в субд ms ac...
 

More from Alexey Neznanov

ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...Alexey Neznanov
 
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовыИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовыAlexey Neznanov
 
Фрактальная геометрия и программирование на Python
Фрактальная геометрия и программирование на PythonФрактальная геометрия и программирование на Python
Фрактальная геометрия и программирование на PythonAlexey Neznanov
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Alexey Neznanov
 
Современные коллаборативные технологии: технологический базис сообществ откры...
Современные коллаборативные технологии: технологический базис сообществ откры...Современные коллаборативные технологии: технологический базис сообществ откры...
Современные коллаборативные технологии: технологический базис сообществ откры...Alexey Neznanov
 
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...Alexey Neznanov
 
Онтологически-контролируемое обучение: имплицитное и эксплицитное знание
Онтологически-контролируемое обучение: имплицитное и эксплицитное знаниеОнтологически-контролируемое обучение: имплицитное и эксплицитное знание
Онтологически-контролируемое обучение: имплицитное и эксплицитное знаниеAlexey Neznanov
 

More from Alexey Neznanov (7)

ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: исследования и игры, креативность и артистизм, генер...
 
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовыИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ: тренды, достижения и вызовы
 
Фрактальная геометрия и программирование на Python
Фрактальная геометрия и программирование на PythonФрактальная геометрия и программирование на Python
Фрактальная геометрия и программирование на Python
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
 
Современные коллаборативные технологии: технологический базис сообществ откры...
Современные коллаборативные технологии: технологический базис сообществ откры...Современные коллаборативные технологии: технологический базис сообществ откры...
Современные коллаборативные технологии: технологический базис сообществ откры...
 
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
Achievements in Games (CS, 2018-08-27) - Игровые «ачивки», поддельные ёлочные...
 
Онтологически-контролируемое обучение: имплицитное и эксплицитное знание
Онтологически-контролируемое обучение: имплицитное и эксплицитное знаниеОнтологически-контролируемое обучение: имплицитное и эксплицитное знание
Онтологически-контролируемое обучение: имплицитное и эксплицитное знание
 

Где и как хранить данные в процессе их анализа:  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)