Найти в Дзене

6.0. Базы данных

1. Общее понимание Ба́за да́нных — совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных. Да́нные — зарегистрированная информация в формализованном виде, пригодном для передачи и интерпретации. Может этот процесс регулироваться ГОСТ и ISO (англ. International Organization for Standardization, ISO; фр. Organisation internationale de normalisation, ISO). Данные могут быть разных типов в разных сферах деятельности. Например, мы знаем биометрические данные, выходные данные в издательском деле, графические данные в компьютерной графике и дизайне, текстовые данные. Метаданные ( от греч. "после" и данные) - — информация о другой информации, или данные, относящиеся к дополнительной информации о содержимом или объекте. Данные и метаданные могут меняться ролями. На стихотворение, рассматриваемое как данные, может быть написана музыка, в этом случае всё стихотворение может быть «прикреплено» к муз
Оглавление

1. Общее понимание

Ба́за да́нных — совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных.

Да́нные — зарегистрированная информация в формализованном виде, пригодном для передачи и интерпретации. Может этот процесс регулироваться ГОСТ и ISO (англ. International Organization for Standardization, ISO; фр. Organisation internationale de normalisation, ISO).

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

Метаданные ( от греч. "после" и данные) - — информация о другой информации, или данные, относящиеся к дополнительной информации о содержимом или объекте. Данные и метаданные могут меняться ролями. На стихотворение, рассматриваемое как данные, может быть написана музыка, в этом случае всё стихотворение может быть «прикреплено» к музыкальному файлу и в этом случае рассматриваться как метаданные. Таким образом, отнесение к одной или другой категории зависит от точки зрения. Возможно создание мета-мета-…-метаданных.

Сверхбольшая база данных (англ. Very Large Database, VLDB) — это база данных, которая занимает чрезвычайно большой объём на устройстве физического хранения.

К 2014 году по косвенным оценкам компания Google хранила на своих серверах до 10—15 эксабайт данных в совокупности.
По некоторым оценкам, к 2025 году генетики будут располагать данными о геномах от 100 миллионов до 2 миллиардов человек, и для хранения подобного объёма данных потребуется от 2 до 40 эксабайт.

В программировании могут быть типы:

  • Логические, или булевы значения (по фамилии их изобретателя — Буля), могут иметь лишь одно из двух состояний — «истина» или «ложь».
  • Целочисленные типы содержат в себе значения, интерпретируемые как числа (знаковые и беззнаковые).
  • Числа с плавающей запятой - для представления вещественных (не обязательно целых) чисел. В этом случае число записывается в виде x=a*10^b. Где 0<=a<1, а b — некоторое целое число из определённого диапазона. a называют мантиссой, b — порядком. У мантиссы хранятся несколько цифр после запятой, а b — хранится полностью.
  • Строковые типы - последовательность символов, которая рассматривается как единое целое в контексте переменной. В разных языках программирования накладываются разные ограничения на строковые переменные.
  • Указатель — переменная, диапазон значений которой состоит из адресов ячеек памяти или специального значения для обозначения того, что в данный момент в переменной ничего не записано.
  • Идентификационные типы интерпретируются не как число, а как уникальный идентификатор объекта.
  • Абстрактные типы данных - типы данных, которые рассматриваются независимо от контекста и реализации в конкретном языке программирования. Абстрактные типы находят широкое применение в методологии программирования, основанной на пошаговой разработке программ. На этапе построения спецификации проектируемой программы алгебра данных моделирует объекты предметной области, в терминах решаемой задачи. В процессе пошагового уточнения данные конкретизируются путём перехода к промежуточным представлениям до тех пор, пока не будет найдена их реализация с помощью базовой алгебры данных используемого языка программирования. Существует несколько способов определения абстрактных типов: алгебраический, модельный и аксиоматический. При модельном подходе элементы данных определяются явным образом. При алгебраическом используются методы алгебраических отношений, а при аксиоматическом подходе используется логическая формализация.

2. Схема базы данных

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

-2

Схемы БД бывают логическими и физическими, их создают проектировщики для программистов, перед ними этап - концептуальный.

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

Каждая СУБД строится на основе некоторой явной или неявной модели данных. Все СУБД, построенные на одной и той же модели данных, относят к одному типу. Например, основой реляционных СУБД является реляционная модель данных, сетевых СУБДсетевая модель данных, иерархических СУБДиерархическая модель данных и т. д.

Кроме, реляционной, иерархической, сетевой, я б ещё упомянула объектно-ориентированную БД. Объектно-ориентированная база данных (ООБД, object database или object-oriented database) —БД, в которой данные моделируются в виде объектов, их атрибутов, методов и классов.

Связи внутри БД могут быть трех типов

3. Модели данных и их языки

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

пример диаграммы
пример диаграммы

ERD - модель данных, позволяющая описывать концептуальные схемы предметной области. ER-модель (Entity Relationship) используется при высокоуровневом (концептуальном) проектировании баз данных.

у меня выглядит так
у меня выглядит так

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

в старой версии клиента
в старой версии клиента

Диаграммы используются SQL для определения связей, например, когда вы знаете в итоге, как соединять таблицы по данным.

-7

например, ERD:

-8

Как составлять ERD:

-9

Принципы красоты такие:

-10

Уровни модели выделяют такие:

-11

Учимся проектированию Entity Relationship

Языки моделирования

UML (Unified Modeling Language — унифицированный язык моделирования) — язык графического описания описания для объектного моделирования в области разработки программного обеспечения, для моделирования бизнес-процессов системного проектирования и отображения организационных структур.

-12

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

-13

4. Системы управления и хранения

1) Типы СХД

-14

СУБД должна обеспечивать:

  • Долговременное хранение
  • Использование внешней памяти
  • Параллелизм (Concurrency - свойство систем, при котором несколько вычислений выполняются одновременно, и при этом, возможно, взаимодействуют друг с другом, может, на разных ядрах)
  • Восстановление
  • Нерегламентированные запросы.

Серверные базы данных (server databases)

Серверный тип
Серверный тип

На рынке есть следующие серверные СУБД:

-16

OLAP (On-Line Analytical Processing) представляет собой технологию построения многомерных хранилищ данных (Data Warehouses), как правило, агрегатных, то есть являющихся результатом обработки набора данных, нередко состоящего из нескольких таблиц. Такие хранилища данных в последнее время широко используются в системах поддержки принятия решений.

Второй тип, распределенная система - это система, компоненты которой расположены на разных скоординированных между собой сетевых компьютерах. Распределенные вычисления также относятся к использованию распределенных систем для решения вычислительных задач. В распределенных вычислениях задача делится на множество задач, каждая из которых решается одним или несколькими компьютерами, которые взаимодействуют друг с другом. Распределённая ба́за да́нных (distributed database, DDB).

-17

Облачные базы данных (cloud database) — это базы данных, которые запускаются на платформах облачных вычислений (cloud computing platform).

-18

Существует два основных метода запуска базы данных в облаке:

  • виртуальная машина (VM, virtual machine) - программная и/или аппаратная система, эмулирующая (копирующая функции одной вычислительной системы -гостя на другую, отличную от первой, вычислительную систему -хост) аппаратное обеспечение компьютера (есть, при этом, guest — гостевая платформа и host — хост-платформа, платформа-хозяин) или виртуализирующая некую платформу со средами или даже программами. Пр., Oracle Database.
  • БД как сервис — некоторые облачные платформы предлагают сервис баз данных, при помощи которого можно обойтись без виртуальной машины. В данном случае, пользователю не нужно устанавливать и поддерживать базу данных самостоятельно. Вместо этого, поставщик сервиса берёт на себя ответственность в установке и обслуживании базы данных. Например, Amazon Web Services предоставляет три базы данных, входящие в их облачный сервис: Amazon SimpleDB (NoSQL, где данные хранятся в парах ключ-значение), Amazon Relational Database Service (SQL-ориентированная база данных с MySQL интерфейсом) и DynamoDB.

Среди облачных баз данных присутствуют как SQL-ориентированные, так использующие модель данных NoSQL.

1. Распределённая платформа - это Hadoop, у которой даже своя файловая система Hadoop Distributed File System (HDFS). Это нереляционная система. – Экосистема для работы с «Большими данными» (>200ТБ).

Также нереляционной (иерархической) является NoSQL.

Лидеры рынка облачных решений
Лидеры рынка облачных решений

Для Hadoop свойственно горизонтальное масштабирование и, как я сказала, распределённая файловая система, Hadoop Distributed File System, которая именно под него заточена.

-20

Информация копируется дважды, состема состоит из обычных серверов. Это нереляционная БД.

2. Облачная платформа хранения данных - AWS S3 от компании Amazon.

Вторая популярная - амазоновская, совместима с другими системами.

-21

3. Key-value store, или Key-value DataBase представляет собой тип ПО для хранения и запросов к данным. Данные хранятся в виде набора уникальных ключей, с ассоциированными каждому ключу значениями. Этот принцип так же известен как «key-value пары». Значение может быть как простым объектом (строка, число), так и сложным – документ, вложенная таблица, вложенные key-value. Это - APACHE HBASE.

- по принципу ключ-значение

-22

здесь каждая сессия имеет один ключ

Например, интернет-магазин. Предназначено для миллионов пользователей.

Может быть распределённой - при хешировании ключа.

2) Компоненты БД

-23

3) Витрина данных VS хранилища данных

Витрина данных предназначена для конкретной группы пользователей или подразделения, не более 100 гб. Нормализованные данные для тактических решений, стоимость около 10 т $ и срок до 6 мес.

Есть два подхода для создания витрин - иммон (Inmon от Билл Инмон) и кимбалл (Kimball от Ральф Кимбалл). Основным различием является способ моделирования структуры данных, их загрузки и хранения. Эти отличия в архитектуре влияют на начальное время доставки и способность адаптироваться к будущим изменениям.

О транзакциях

-25

5. Языки работы с данными

Существует три типа:

1. Data Definition Language (DDL) (язык описания данных) — это семейство компьютерных языков, используемых в компьютерных программах для описания структуры баз данных.

На текущий момент наиболее популярным языком DDL является SQL, используемый для получения и манипулирования данными в РСУБД, и сочетающий в себе элементы DDL, DML и DCL.

Функции языков DDL определяются первым словом в предложении (часто называемом запросом), которое почти всегда является глаголом. В случае с SQL это глаголы — «create» («создать»), «alter» («изменить»), «drop» («удалить»). Эти запросы или команды часто смешиваются с другими командами SQL, в связи с чем DDL не является отдельным компьютерным языком.

2. Data Manipulation Language (DML) (язык управления (манипулирования) данными) — это семейство компьютерных языков, используемых в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.

На текущий момент наиболее популярным языком DML является SQL, используемый для получения и манипулирования данными в РСУБД. Другие формы DML использованы в IMS/DL1, базах данных CODASYL (таких как IDMS), и других.

Языки DML изначально использовались только компьютерными программами, но с появлением SQL стали также использоваться и людьми.

Функции языков DML определяются первым словом в предложении (часто называемом запросом), которое почти всегда является глаголом. В случае с SQL эти глаголы — «select» («выбрать»), «insert» («вставить»), «update» («обновить»), и «delete» («удалить»). Это превращает природу языка в ряд обязательных утверждений (команд) к базе данных.

Языки DML могут существенно различаться у различных производителей СУБД. Существует стандарт SQL, установленный ANSI, но производители СУБД часто предлагают свои собственные «расширения» языка.

Языки DML разделяются в основном на два типа:

  • Procedural DMLs — описывают действия над данными.
  • Declarative DMLs — описывают сами данные.

3. Data Control Language (DCL) — подмножество языка управления базами данных SQL, предназначенное для осуществления административных операций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицы и другие объекты базы данных, а также выполнять те или иные операторы SQL.

  • GRANT — применяется для присвоения привилегии;
  • REVOKE — применяется для отмены привилегии.