51
© 2017, Незнанов А.А. 1 Где и как хранить данные в процессе их анализа: SQL и не только… Хакатон «Культура в современном медиапространстве»

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

Embed Size (px)

Citation preview

© 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?csnumber=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

Инфологическая модель

Даталогическаямодель

Физическая модель

СУБД

Система управления базами данных (СУБД) [databasemanagement system (DBMS)] – системное программное обеспечение, служащее для абстракции физического уровня представления данными и управления доступом к данным Другой смысл – программно-аппаратный комплекс

Основные функции СУБД: определение данных (то есть работа с метаданными [metadata] –

данными, описывающими данные)

хранение данных

обработка данных

обеспечение целостности и безопасности данных

импорт/экспорт данных в различных форматах

© 2017, Незнанов А.А. 15

Цель создания БД и СУБД

Главная цель – борьба со сложностью путём абстракции способа доступа к данным

СУБД позволяет рассматривать БД, абстрагируясь от аппаратного обеспечения и форматов физического хранения данных

СУБД поддерживает высокоуровневые интерфейсы взаимодействия с клиентами (например, язык SQL, который будет изучаться в дальнейшем)

СУБД обеспечивают повторное использование лучших практик абстракции данных и проектирования информационных систем

СУБД значительно удешевляют информационные системы

© 2017, Незнанов А.А. 16

Клиенты СУБД

Клиент СУБД [DBMS client] – человек или программная система, использующая СУБД для работы с данными.

Пользователи [user] – клиенты-человеки: Конечный пользователь [end user]

Администратор [administrator] Администратор данных [data administrator], обеспечивает качество, сохранность и

доступность для использования в служебных целях информации, накопленной в организации

Администратор баз данных [database administrator], обеспечивает эффективное функционирование СУБД и использование компьютерных баз данных, в том числе поддержку схем данных, надежность и отказоустойчивость технических средств всех уровней, доступность и удобство ввода/вывода данных

Такое разделение пользователей вытекает из концепции централизованного управления данными [centralized datamanagement], когда администраторы держат в своих руках контроль над всеми действиями конечных пользователей в соответствие с политикой безопасности

© 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 Serverwww.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: [email protected]

Web-site: http://hse.ru/staff/aneznanov

Blog: http://siberianshamanssongs.blogspot.ru (RU)