СУБД
СУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
Виды РСУБД
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
PostgreSQL в Python
4.63M
Category: databasedatabase

Разработка программных модулей

1.

Разработка
программных модулей

2. СУБД

Системы управления базами данных (СУБД) — это высокоуровневое программное
обеспечение, работающее с низкоуровневыми API. Для решения различных
проблем создавались новые виды СУБД (реляционные, NoSQL и т.д.) и их новые
реализации (MySQL, PostgreSQL, MongoDB, Redis и т.д.). На этом занятии мы
разберемся в основах баз данных и СУБД.
СУБД — это общий термин, относящийся ко всем видам абсолютно разных
инструментов, от компьютерных программ до встроенных библиотек. Эти
приложения управляют или помогают управлять наборами данных. Так как эти
данные могут быть разного формата и размера, были созданы разные виды СУБД.
2

3. СУБД

Реляционные системы управления базами данных берут своё название от
реализуемой модели — реляционной. Сейчас они остаются, да и ещё какое-то
время будут, самым популярным выбором для надёжного, безопасного и
производительного хранения данных.
РСУБД требуют чётких и ясных схем — не стоит путать со специфическим
определением для PostgreSQL — для работы с данными. Эти рамки, определённые
пользователем, задают способ их хранения и использования. Схемы очень похожи
на таблицы, столбцы которых отражают порядковый номер и тип информации в
каждой записи, а строки — содержимое этих записей.
Самыми популярными РСУБД сейчас являются:
• SQLite: очень «простая» встраиваемая РСУБД.
• MySQL: самая популярная и часто используемая РСУБД.
• PostgreSQL: самая продвинутая и гибкая РСУБД.
3

4. Виды РСУБД

Реляционные базы данных структурируют данные в таблицы со строками и
столбцами: строки являются записями, а столбцы – полями. Зачастую эти данные
имеют отношения друг с другом или зависимости.
Поскольку реляционные СУБД представляют собой традиционный способ
хранения данных в табличной форме, большинство людей знакомы с вариантами
их использования. Это добавляет им популярности и среди разработчиков.
Сама таблица будет состоять из одной переменной или объекта, который мы
просматриваем, а строка хранит данные для каждой колонки.
Например, если вы хотите отсортировать данные о покупателях по имени фамилии
и потраченных средствах, они будут структурированы следующим образом:
• Таблица: покупатели
• Колонки: идентификатор, имя, фамилия, потраченные средства
• Строки: данные
4

5. Виды РСУБД

В этой структуре все запросы будут связаны с этой таблицей, а структура таблицы
позволит легко сортировать, фильтровать, выполнять вычисления и т. д.
Если нам когда-нибудь понадобится установить связь между таблицами –
допустим, вы захотите узнать, какое количество заказов, и связать это с нашими
покупателями – нужно будет создать ключ. Этот ключ (customer_id) позволяет
устанавливать соединения между двумя или более таблицами для закрепления
связей между ними.
5

6. Виды РСУБД

SQLite — это библиотека, встраиваемая в приложение, которое её использует.
Будучи файловой БД, она предоставляет отличный набор инструментов для более
простой (в сравнении с серверными БД) обработки любых видов данных.
Когда приложение использует SQLite, их связь производится с помощью
функциональных и прямых вызовов файлов, содержащих данные (например, баз
данных SQLite), а не какого-то интерфейса, что повышает скорость и
производительность операций.
6

7. Виды РСУБД

Поддерживаемые типы данных
• NULL: NULL-значение.
• INTEGER: целое со знаком, хранящееся в 1, 2, 3, 4, 6, или 8 байтах.
• REAL: число с плавающей запятой, хранящееся в 8-байтовом формате IEEE.
• TEXT: текстовая строка с кодировкойUTF-8, UTF-16BE или UTF-16LE.
• BLOB: тип данных, хранящийся точно в таком же виде, в каком и был получен.
7

8. Виды РСУБД

Преимущества
• Файловая: вся база данных хранится в одном файле, что облегчает перемещение.
• Стандартизированная: SQLite использует SQL; некоторые функции опущены
(RIGHT OUTER JOIN или FOR EACH STATEMENT), однако, есть и некоторые новые.
• Отлично подходит для разработки и даже тестирования: во время этапа
разработки большинству требуется масштабируемое решение. SQLite, со своим
богатым набором функций, может предоставить более чем достаточный
функционал, при этом будучи достаточно простой для работы с одним файлом и
связанной библиотекой.
Недостатки
• Отсутствие пользовательского управления: продвинутые БД предоставляют
пользователям возможность управлять связями в таблицах в соответствии с
привилегиями, но у SQLite такой функции нет.
• Невозможность дополнительной настройки: опять-таки, SQLite нельзя сделать
более производительной, поковырявшись в настройках — так уж она устроена.
8

9. Виды РСУБД

Когда стоит использовать SQLite
• Встроенные приложения: все портируемые не предназначенные для
масштабирования приложения — например, локальные однопользовательские
приложения, мобильные приложения или игры.
• Система доступа к дисковой памяти: в большинстве случаев приложения, часто
производящие прямые операции чтения/записи на диск, можно перевести на
SQLite для повышения производительности.
• Тестирование: отлично подойдёт для большинства приложений, частью
функционала которых является тестирование бизнес-логики.
9

10. Виды РСУБД

Когда не стоит использовать SQLite
• Многопользовательские приложения: если вы работаете над приложением,
доступом к БД в котором будут одновременно пользоваться несколько человек,
лучше выбрать полнофункциональную РСУБД — например, MySQL.
• Приложения, записывающие большие объёмы данных: одним из ограничений
SQLite являются операции записи. Эта РСУБД допускает единовременное
исполнение лишь одной операции записи.
10

11. Виды РСУБД

MySQL — это самая популярная из всех крупных серверных БД. Разобраться в ней
очень просто, да и в сети о ней можно найти большое количество информации. Хотя
MySQL и не пытается полностью реализовать SQL-стандарты, она предлагает
широкий функционал. Приложения общаются с базой данных через процесс-демон.
Поддерживаемые типы данных
• TINYINT: очень маленькое целое.
• SMALLINT: маленькое целое.
• MEDIUMINT: целое среднего размера.
• INT или INTEGER: целое нормального размера.
• BIGINT: большое целое.
• FLOAT: знаковое число с плавающей запятой одинарной точности.
• DOUBLE, DOUBLE PRECISION, REAL: знаковое число с плавающей запятой двойной
точности.
• DECIMAL, NUMERIC: знаковое число с плавающей запятой.
11

12. Виды РСУБД

Преимущества
• Простота: MySQL легко устанавливается. Существует много сторонних
инструментов, включая визуальные, облегчающих начало работы с БД.
• Много функций: MySQL поддерживает большую часть функционала SQL.
• Безопасность: в MySQL встроено много функций безопасности.
• Мощность и масштабируемость: MySQL может работать с действительно
большими объёмами данных, и неплохо походит для масштабируемых
приложений.
• Скорость: пренебрежение некоторыми стандартами позволяет MySQL работать
производительнее.
12

13. Виды РСУБД

Недостатки
• Неполная SQL-совместимость
• Вопросы надёжности: некоторые операции реализованы менее надёжно, чем в
других РСУБД.
• Застой в разработке: хотя MySQL и является open-source продуктом, работа над
ней сильно заторможена. Тем не менее, существует несколько БД, полностью
основанных на MySQL (например, MariaDB).
13

14. Виды РСУБД

Когда стоит использовать MySQL
• Распределённые операции: когда вам нужен функционал бо́ льший, чем может
предоставить SQLite, стоит использовать MySQL.
• Высокая безопасность: функции безопасности MySQL предоставляют надёжную
защиту доступа и использования данных.
• Веб-сайты и приложения: большая часть веб-ресурсов вполне может работать с
MySQL, несмотря на ограничения. Этот инструмент весьма гибок и прост в
обращении, что только на руку в длительной перспективе.
• Кастомные решения: если вы работаете над очень специфичным продуктом,
MySQL подстроится под ваши потребности благодаря широкому спектру настроек
и режимов работы.
14

15. Виды РСУБД

Когда не стоит использовать MySQL
• SQL-совместимость: поскольку MySQL не пытается полностью реализовать
стандарты SQL, она не является полностью совместимой с SQL. Из-за этого могут
возникнуть проблемы при интеграции с другими РСУБД.
• Конкурентность: хотя MySQL неплохо справляется с операциями чтения,
одновременные операции чтения-записи могут вызвать проблемы.
• Недостаток функций: в зависимости от выбора движка MySQL может недоставать
некоторых функций.
15

16. Виды РСУБД

PostgreSQL — это самая продвинутая РСУБД, ориентирующаяся в первую очередь на
полное соответствие стандартам и расширяемость. PostgreSQL, или Postgres,
пытается полностью соответствовать SQL-стандартам ANSI/ISO.
PostgreSQL отличается от других РСУБД тем, что обладает объектноориентированным функционалом, в том числе полной поддержкой концепта ACID
(Atomicity, Consistency, Isolation, Durability).
Будучи основанным на мощной технологии Postgres отлично справляется с
одновременной обработкой нескольких заданий. Поддержка конкурентности
реализована с использованием MVCC (Multiversion Concurrency Control), что также
обеспечивает совместимость с ACID.
Хотя эта РСУБД не так популярна, как MySQL, существует много сторонних
инструментов и библиотек для облегчения работы с PostgreSQL.
16

17. Виды РСУБД

Поддерживаемые типы данных
bigint: знаковое 8-байтное целое.
bigserial: автоматически инкрементируемое 8-битное целое.
bit [(n)]: битовая строка фиксированной длины.
bit varying [(n)]: битовая строка переменной длины.
boolean: булевская величина.
box: прямоугольник на плоскости.
bytea: бинарные данные.
И многие другие
17

18. Виды РСУБД

Преимущества
• Полная SQL-совместимость.
• Сообщество: PostgreSQL поддерживается опытным сообществом 24/7.
• Поддержка сторонними организациями: несмотря на очень продвинутые
функции, PostgreSQL используется в многих инструментах, связанных с РСУБД.
• Расширяемость: PostgreSQL можно программно расширить за счёт хранимых
процедур.
• Объектно-ориентированность: PostgreSQL — не только реляционная, но и
объектно-ориентированная СУБД.
18

19. Виды РСУБД

Недостатки
• Производительность: В простых операциях чтения PostgreSQL может уступать
своим соперникам.
• Популярность: из-за своей сложности инструмент не самый популярный.
• Хостинг: из-за вышеперечисленных факторов проблематично найти подходящего
провайдера.
19

20. Виды РСУБД

Когда не стоит использовать PostgreSQL
• Скорость: если всё, что нужно — это быстрые операции чтения, не стоит
использовать PostgreSQL.
• Простые ситуации: если вам не требуется повышенная надёжность, поддержка
ACID и всё такое, использование PostgreSQL — это стрельба из пушки по мухам.
20

21. PostgreSQL в Python

Для работы необходима библиотека psycopg. Устанавливается следующей командой:
pip install psycopg2
После этого мы можем импортировать библиотеку в программе на Python:
import psycopg2
Для подключения к серверу PostgreSQL применяется функция connect(). Она
принимает настройки подключения:
psycopg2.connect(dbname="db_name", host="db_host", user="db_user",
password="db_pass", port="db_port")
21

22. PostgreSQL в Python

Функция принимает следующие параметры:
• dbname: имя базы данных
• user: имя пользователя
• password: пароль пользователя
• host: хост/адрес сервера
• port: порт (если не указано, то используется порт по умолчанию - 5432)
При удачном подключении функция connect создает новую сессию базы данных и
возвращает объект connection
22

23. PostgreSQL в Python

Класс connection предоставляет ряд методов для работы с подключением к БД:
• close(): закрывает подключение
• cursor(): возвращает объект cursor для осуществления запросов к бд
• commit(): поддверждает транзакцию
• rollback(): откатывает транзакцию
23

24. PostgreSQL в Python

Например, покдлючимся к стандартной базе данных "postgres" на локальном
сервере PostgreSQL:
import psycopg2
conn = psycopg2.connect(dbname="postgres", user="postgres", password="123456",
host="127.0.0.1", port="5432")
print("Подключение установлено")
conn.close()
24

25. PostgreSQL в Python

cursor = connection.cursor() - это строка кода, которая создает объект "курсор" для
выполнения SQL-запросов и операций с базой данных. В контексте работы с базами
данных в Python, когда вы устанавливаете соединение с базой данных, вы создаете
объект соединения, который представляет собой связь между вашим кодом и
фактической базой данных.
Курсор же - это механизм, который позволяет вам отправлять SQL-запросы базе
данных и получать результаты этих запросов. Курсор предоставляет методы для
выполнения SQL-запросов (execute(), executemany()) и получения результатов
(fetchone(), fetchall() и т.д.).
В нашем коде cursor = connection.cursor() создает объект курсора, связанный с
соединением connection, и этот курсор будет использоваться для выполнения
операций с базой данных, таких как создание таблицы, вставка данных, выборка
данных и так далее. Когда вы вызываете методы курсора для выполнения SQLзапросов (cursor.execute()), изменения применяются к базе данных через это
25
соединение.

26. PostgreSQL в Python

Определение курсора:
import psycopg2
conn = psycopg2.connect(dbname="postgres", user="postgres", password="123456",
host="127.0.0.1")
cursor = conn.cursor()
cursor.close() # закрываем курсор
conn.close() # закрываем подключение
26

27. PostgreSQL в Python

Перед выполнением первой команды SQL автоматически создается транзакция, в
процессе которой можно выполнять различные выражения SQL с помощью методов
execute/executemany курсора, но для подтверждения их выполнения необходимо
вызывать метод commit() объекта connection. Условно это может выглядеть так:
import psycopg2
conn = psycopg2.connect(dbname="postgres", user="postgres", password="123456",
host="127.0.0.1")
cursor = conn.cursor()
cursor.execute(sql_zapros1)
conn.commit() # реальное выполнение команд sql1
cursor.close()
conn.close()
27

28. PostgreSQL в Python

Здесь реальное выполнение условной команды sql_zapros1 производится только при
выполнении метода conn.commit(). Если же надо, чтобы выражения sql_zapros1
автоматически выполнялись при каждом вызове метода cursor.execute(), то можно
установить автокоммит с помощью свойства connection.autocommit:
import psycopg2
conn = psycopg2.connect(dbname="postgres", user="postgres", password="123456",
host="127.0.0.1")
conn.autocommit = True # устанавливаем актокоммит
cursor = conn.cursor()
cursor.execute(sql1) # непосредственное выполнение команды sql1
cursor.close()
conn.close()
28

29. PostgreSQL в Python

Для создания базы данных применяется SQL-команда CREATE DATABASE, которой
передается имя базы данных. Например, создадим базу данных с именем “test":
import psycopg2
conn = psycopg2.connect(dbname="postgres", user="postgres", password="123456",
host="127.0.0.1")
cursor = conn.cursor()
conn.autocommit = True
sql = "CREATE DATABASE test"
# выполняем код sql
cursor.execute(sql)
print("База данных успешно создана")
cursor.close()
conn.close()
29

30. PostgreSQL в Python

Обратите внимание, что для выражения "CREATE DATABASE" необходимо установиить
автокоммит:
conn.autocommit = True
Благодаря этому команда SQL, во-первых, выполняется немедленно. А во-вторых,
выполняется вне транзакции (выражение "CREATE DATABASE" должно выполняться
именно вне транзакции)
После этого на сервере мы сможем найти базу данных.
30

31. PostgreSQL в Python

Для создания таблицы в PostgreSQL применяется инструкция CREATE TABLE.
Например, в вышесозданной базе данных “test" создадим таблицу people:
import psycopg2
conn = psycopg2.connect(dbname="test", user="postgres", password="123456",
host="127.0.0.1")
cursor = conn.cursor()
# создаем таблицу people
cursor.execute("CREATE TABLE people (id SERIAL PRIMARY KEY, name VARCHAR(50), age
INTEGER)")
# поддверждаем транзакцию
conn.commit()
print("Таблица people успешно создана")
cursor.close()
31
conn.close()

32. PostgreSQL в Python

В метод cursor.execute() передается инструкция CREATE TABLE, которая создает
таблицу people с тремя столбцами. Столбец id представляет идентификатор
пользователя, хранит данные типа Serial, то есть число, которое будет автоматически
генерироваться и инкрементироваться с каждой новой строкой и которое
представляет первичный ключ. Второй столбец - name представляет строку - имя
пользователя. И третий столбец - age представляет возраст пользователя.
После выполнения скрипта мы можем открыть базу данных и увидеть созданную
таблицу.
32

33.

Домашнее задание
Что хранит и зачем необходим Big data?

34.

Спасибо за внимание!
English     Русский Rules