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. Схема базы данных
Схема базы данных включает в себя описание содержания, структуры и ограничений целостности, используемые для создания и поддержки БД.
Схемы БД бывают логическими и физическими, их создают проектировщики для программистов, перед ними этап - концептуальный.
СУБД использует определения данных в схеме для обеспечения доступа и управления доступом к данным в базе данных.
Каждая СУБД строится на основе некоторой явной или неявной модели данных. Все СУБД, построенные на одной и той же модели данных, относят к одному типу. Например, основой реляционных СУБД является реляционная модель данных, сетевых СУБД — сетевая модель данных, иерархических СУБД — иерархическая модель данных и т. д.
Кроме, реляционной, иерархической, сетевой, я б ещё упомянула объектно-ориентированную БД. Объектно-ориентированная база данных (ООБД, object database или object-oriented database) —БД, в которой данные моделируются в виде объектов, их атрибутов, методов и классов.
Связи внутри БД могут быть трех типов
3. Модели данных и их языки
Модель данных — это абстрактное, самодостаточное, логическое определение объектов, операторов и прочих элементов, в совокупности составляющих абстрактную машину доступа к данным, с которой взаимодействует пользователь. Эти объекты позволяют моделировать структуру данных, а операторы — поведение данных.
ERD - модель данных, позволяющая описывать концептуальные схемы предметной области. ER-модель (Entity Relationship) используется при высокоуровневом (концептуальном) проектировании баз данных.
С её помощью можно выделить ключевые сущности, определить их атрибуты и обозначить связи (отношения), которые могут устанавливаться между этими сущностями.
Диаграммы используются SQL для определения связей, например, когда вы знаете в итоге, как соединять таблицы по данным.
например, ERD:
Как составлять ERD:
Принципы красоты такие:
Уровни модели выделяют такие:
Учимся проектированию Entity Relationship
Языки моделирования
UML (Unified Modeling Language — унифицированный язык моделирования) — язык графического описания описания для объектного моделирования в области разработки программного обеспечения, для моделирования бизнес-процессов системного проектирования и отображения организационных структур.
UML является языком широкого профиля, это — открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML-моделью. UML был создан для определения, визуализации, проектирования и документирования, в основном, программных систем. UML не является языком программирования, но на основании UML-моделей возможна генерация кода.
4. Системы управления и хранения
1) Типы СХД
СУБД должна обеспечивать:
- Долговременное хранение
- Использование внешней памяти
- Параллелизм (Concurrency - свойство систем, при котором несколько вычислений выполняются одновременно, и при этом, возможно, взаимодействуют друг с другом, может, на разных ядрах)
- Восстановление
- Нерегламентированные запросы.
Серверные базы данных (server databases)
На рынке есть следующие серверные СУБД:
OLAP (On-Line Analytical Processing) представляет собой технологию построения многомерных хранилищ данных (Data Warehouses), как правило, агрегатных, то есть являющихся результатом обработки набора данных, нередко состоящего из нескольких таблиц. Такие хранилища данных в последнее время широко используются в системах поддержки принятия решений.
Второй тип, распределенная система - это система, компоненты которой расположены на разных скоординированных между собой сетевых компьютерах. Распределенные вычисления также относятся к использованию распределенных систем для решения вычислительных задач. В распределенных вычислениях задача делится на множество задач, каждая из которых решается одним или несколькими компьютерами, которые взаимодействуют друг с другом. Распределённая ба́за да́нных (distributed database, DDB).
Облачные базы данных (cloud database) — это базы данных, которые запускаются на платформах облачных вычислений (cloud computing platform).
Существует два основных метода запуска базы данных в облаке:
- виртуальная машина (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, которая именно под него заточена.
Информация копируется дважды, состема состоит из обычных серверов. Это нереляционная БД.
2. Облачная платформа хранения данных - AWS S3 от компании Amazon.
Вторая популярная - амазоновская, совместима с другими системами.
3. Key-value store, или Key-value DataBase представляет собой тип ПО для хранения и запросов к данным. Данные хранятся в виде набора уникальных ключей, с ассоциированными каждому ключу значениями. Этот принцип так же известен как «key-value пары». Значение может быть как простым объектом (строка, число), так и сложным – документ, вложенная таблица, вложенные key-value. Это - APACHE HBASE.
- по принципу ключ-значение
здесь каждая сессия имеет один ключ
Например, интернет-магазин. Предназначено для миллионов пользователей.
Может быть распределённой - при хешировании ключа.
2) Компоненты БД
3) Витрина данных VS хранилища данных
Витрина данных предназначена для конкретной группы пользователей или подразделения, не более 100 гб. Нормализованные данные для тактических решений, стоимость около 10 т $ и срок до 6 мес.
Есть два подхода для создания витрин - иммон (Inmon от Билл Инмон) и кимбалл (Kimball от Ральф Кимбалл). Основным различием является способ моделирования структуры данных, их загрузки и хранения. Эти отличия в архитектуре влияют на начальное время доставки и способность адаптироваться к будущим изменениям.
О транзакциях
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.