×
Главная   »   Заметки   »   День 23. Первое погружение в базы данных
День 23. Первое погружение в базы данных
Метки:      ,   ,   ,   

Перехожу к изучению баз данных. На мой взгляд, необходимо разобраться с основами, познакомиться с MySQL, PostgreSQL, MongoDB и Microsoft SQL Server.

Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!

Перехожу к изучению баз данных – четвертый шаг плана, составленного на 15 день. На мой взгляд, необходимо разобраться с основами, познакомиться с MySQL, PostgreSQL, MongoDB и Microsoft SQL Server. С первой уже знаком, вторая является достаточно распространенной, третья находится в группе NoSQL систем, а последняя привязана к Windows. На самом деле суть не меняется, просто у каждой есть свои особенности. Так же необходимо более глубоко разобраться с языком SQL.

Попробую начать изучать с достаточно свежей книгой (не значит хорошей) Б.А. Новикова, Е.А. Горшкова, Н.Г. Графеева «Основы технологий баз данных. 2 изд.». Так же есть книга К. Дж. Дейта «Введение в системы баз данных», которая является достаточно объемной и, возможно, более подробной. К ней перейду, если первая не зайдет.

СУБД – это система управления базами данных. На ранние системы управления повлияли банковский и финансовый секторы, в интересах которых разрабатывались СУБД (не все, конечно).

Совокупность данных в СУБД называется базой данных. СУБД, находящаяся на этапе выполнения и готовая выполнить запросы на обработку данных из базы данных, называется экземпляром (instance) или сервером базы данных (не встречал такого названия).

В учебнике уже несколько раз встретилась аббревиатура OLTP (Online Transaction Processing) – транзакционная система – это, если кратко, обработка транзакций в реальном времени (https://ru.wikipedia.org/wiki/OLTP). В книге называется «оперативная обработка» — суть не меняет.

К основным требованиям к СУБД относится:

  • Разделение программ и данных;
  • Высокоуровневый язык запросов – средства для обработки данных не должны быть привязаны к конкретному приложению;
  • Целостность – система не должна позволять записывать данные, нарушающие целостность системы;
  • Согласованность – проблемы, связанные с параллельным доступом к данным должны быть нивелированы;
  • Отказоустойчивость;
  • Защита и разграничение доступа.

Судя по редакторам, а точнее компании, которая активно поддерживала написание книги Б.А. Новикова, Е.А. Горшкова, Н.Г. Графеева «Основы технологий баз данных. 2 изд.» будет большой уклон в сторону PostgreSQL.

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

Перехожу ко второй главе книги «Теоретические основы БД». Под моделью данных понимается система взаимосвязанных правил, необходимых для описания структур и свойств информационной системы. К модели данных относятся способы описания данных, способы описания взаимосвязей между объектами данных, средства задания ограничений целостности и способы конструирования операций.

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

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

Во многих реализациях реляционной модели данных отношения называются таблицами, атрибуты – колонками или столбцами, а кортежи — строками.

Об особенностях реляционной модели данных. Кортежи неизменяемы. Их изменение означает замену старого кортежа на новый. Так же все операции реляционной алгебры создают новые отношения.

Добрался до 57 страницы. Книга воспринимается достаточно сложно, так как используется слишком много умных слов. Но в этом есть плюс – очень мало воды, все конкретно. Сразу заметно, что учебник писал математик (https://istina.msu.ru/workers/5698200/).

Модель «сущность – связь»

Под сущностью понимается описание некоторого объекта из реального мира (сущности должны быть различимы между собой). Под связью представляют упорядоченную последовательность сущностей. Связь имеет свою идентификацию и может иметь собственные атрибуты. Наиболее популярным видом связей являются бинарные (между двумя сущностями).

Узнал, что XML и JSON являются форматами для представления слабоструктурированных (semi-structured) данных. А в объектно-реляционных базах (PostgreSQL, например) данные такого формата могут храниться как значения атрибутов отношений (таблиц). Не сразу понял, что это уже знал. Настолько сложным языком написано…

В процессе чтения второй главы, меня не покидала мысль, что я читаю чью-то (автора учебника) докторскую.

Переходим к практике. Открываем Linux (у меня установлен Kali Linux, поэтому открою его). Теперь получаем доступ к командной строке без переключения аккаунтов:

$ sudo -u postgres psql

Получаем ошибку:

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?

Конечно, для начала необходимо его запустить.

$ /etc/init.d/postgresql start

Теперь повторяем команду

$ sudo -u postgres psql

И видим, что вошли:

postgres=#

Слово postgres – это роль (т.е. пользователь базы данных или группа). Чтобы создать новую роль в интерактивном режиме, необходимо использовать команду creatrole и флаг --interactive.

sudo -u postgres createuser --interactive

Чтобы создать новую базу данных, необходимо выполнить следующую команду:

$ sudo -u postgres createdb new_db

Создаем нового пользователя:

$ sudo adduser cs

Попробуем создать таблицу:

$ sudo -u postgres psql

postgres=# CREATE TABLE users (
postgres(# id serial PRIMARY KEY,
postgres(# name varchar (50) NOT NULL);

Создал таблицу users из двух колонок (атрибутов): id и name. Чтобы проверить успешность создания таблицы, необходимо ввести следующую команду:

postgres=# \d

Кроме нашей таблицы users появилась еще одна:

              List of relations
 Schema |     Name     |   Type   |  Owner   
--------+--------------+----------+----------
 public | users        | table    | postgres
 public | users_id_seq | sequence | postgres

Созданная users_id_seq с типом sequence предназначена для отслеживания следующего номера в столбце id. Чтобы увидеть только таблицы, необходимо использовать следующую команду:

postgres=# \dt

Теперь добавим пару записей следующим образом:

postgres=# INSERT INTO users (name) VALUES ('Ivan');

Теперь выведем все данные из таблицы:

postgres=# SELECT * FROM users;

Что-то я перешел к SQL. Как раз четвертая глава повествует о SQL. Кроме этого есть еще две книги: Линн Бейли «Изучаем SQL», написанная простым языком и книга Кевина Кляйна «Справочник SQL». Последняя все же не книга, а справочник, как следует из названия. Язык SQL все же достаточно по справочнику изучить (просто ознакомиться). Поэтому прочту четвертую главу книги Б.А. Новикова, Е.А. Горшкова, Н.Г. Графеева «Основы технологий баз данных. 2 изд.» и пролистаю вышеуказанный справочник.

Только уже завтра. На сегодня достаточно.

614 просмотров
10.07.2022
Автор