В данной статье мы рассмотрим, что такое базы данных и какие из них чаще всего используются, если речь идет о разработке на Python.
Пожалуй, начнем с определения. База данных – это абстракция над файловой системой операционной системы, которая значительно упрощает создание приложений, создающих, читающих, обновляющих и удаляющих различные данные.
Зачем нужны базы данных?
На высоком уровне веб-приложения хранят данные и представляют их пользователям в удобном виде. Например, Google хранит данные о дорогах и предоставляет маршруты для проезда из одного места в другое при каждом использовании вами Google Maps. Строить такие маршруты движения возможно благодаря тому, что данные хранятся в структурированном формате.
Базы данных делают структурированное хранилище надежным и быстрым. Они также дают представление о том, как данные должны сохраняться и извлекаться. В результате, создавая каждое новое приложение, вы не обдумываете заново, что делать с данными.
Для управления созданием и использованием баз данных создано много реализаций СУБД — систем управления базами данных. Примеры СУБД — PostgreSQL, MySQL, SQLite. Также существуют нереляционные базы данных — NoSQL.
[python_ad_block]Реляционные базы данных
В веб-разработке на Python чаще всего используются реляционные базы данных.
В этих базах данные хранятся в виде серии таблиц. Взаимосвязи между таблицами создаются при помощи внешних ключей. (Само определение «реляционные» происходит от англ. relations — «связи, отношения», — прим. перев.)
Внешний ключ – это уникальная ссылка из одной строки в реляционной таблице на другую строку, которая чаще всего находится в другой таблице, хотя может быть и в той же самой.
Реализации хранилищ баз данных различаются по сложности. SQLite — СУБД, встроенная в Python — создает один файл для всех данных каждой базы данных.
Другие СУБД, такие как PostgreSQL, MySQL, Oracle и Microsoft SQL Server, имеют более сложные схемы хранения. Кроме того, они предлагают дополнительные расширенные функции, полезные для хранения данных веб-приложений. Например:
- Репликация данных между главной базой данных и одним или несколькими подчиненными экземплярами, доступными только для чтения.
- Расширенные типы столбцов, которые могут эффективно хранить полуструктурированные данные, такие как JSON (JavaScript Object Notation).
- Сегментирование, которое позволяет горизонтально масштабировать несколько баз данных, каждая из которых служит экземпляром для чтения и записи, за счет задержки в согласованности данных.
- Мониторинг, статистика и другая полезная информация о выполнении для схем и таблиц базы данных.
Обычно веб-приложения начинаются с одного экземпляра базы данных, например PostgreSQL, с простой схемой. Со временем схема базы данных превращается в более сложную структуру с использованием миграций. При этом возрастает потребность в расширенных функциях, таких как репликация, сегментирование и мониторинг, поскольку использование базы данных становится более интенсивным.
Наиболее распространенные базы данных для веб-приложений на Python
PostgreSQL и MySQL – две наиболее распространенные базы данных с открытым исходным кодом для хранения данных веб-приложений на Python.
SQLite – это база данных, которая хранится в одном файле на диске. SQLite встроена в Python, но предназначена только для доступа по одному соединению за раз. Поэтому настоятельно рекомендуется не запускать производственное веб-приложение с SQLite. Эта база данных хороша для учебных проектов, когда вы только осваиваете, как всё работает.
Для продакшена же лучше использовать PostgreSQL или MySQL, или другую базу данных, в том числе нереляционную – всё зависит от специфики вашего приложения.
База данных PostgreSQL
PostgreSQL – это рекомендуемая реляционная СУБД для работы с веб-приложениями на Python. Функционал PostgreSQL, его активное развитие и улучшение, а также стабильность послужили причиной использования этой СУБД в бэкенде миллионов приложений, существующих сегодня в сети.
База данных MySQL
MySQL – еще одна практичная реализация СУБД для приложений, написанных на Python. Имеет открытый исходный код.
MySQL проще в освоении, чем PostgreSQL, но не так богата функциями.
Подключение к базе данных с помощью Python
Для работы с реляционной базой данных с использованием Python нужны библиотеки. Наиболее распространенные библиотеки для реляционных баз данных:
- psycopg2 (исходный код) для PostgreSQL.
- MySQLdb (исходный код) для MySQL. Обратите внимание, что разработка этого драйвера в основном заморожена. Поэтому будет целесообразно обратить внимание на альтернативные варианты, если в бэкенде вашего приложения используется MySQL.
- cx_Oracle (исходный код) для Oracle Database.
Поддержка SQLite встроена во все версии Python 2.7+, поэтому отдельная библиотека для подключения не требуется. Просто импортируйте sqlite3 (import sqlite3
), и можно начинать работатьтоirметоyey.
Объектно-реляционное отображение
Объектно-реляционное отображение (англ. object-relational mapping, ORM) позволяет разработчикам получать доступ к данным из бэкенда при помощи Python-кода, а не SQL-запросов. Все структуры веб-приложений по-разному обрабатывают интеграцию ORM. По объектно-реляционному отображению есть множество ресурсов, так что вы без проблем разберетесь в этой теме.
Размещение баз данных на стороннем сервере
Многие компании предлагают свои серверы для хостинга баз данных. В услугах, предоставляемых такими компаниями, часто есть автоматическое резервное копирование и восстановление, усиленные настройки безопасности и простое вертикальное масштабирование.
- Amazon Relational Database Service (RDS) предоставляет предварительно настроенные экземпляры MySQL и PostgreSQL. Экземпляры можно масштабировать до больших или меньших конфигураций в зависимости от требований к хранилищу и производительности.
- Google Cloud SQL – это сервис для работы с серверами MySQL, PostgreSQL и SQL. Позволяет управлять базами данных, делать бэкапы, репликации и вносить автоматические исправления. Cloud SQL интегрируется с Google App Engine, но также может использоваться и независимо.
- BitCan предоставляет размещение баз данных MySQL и MongoDB с обширными услугами резервного копирования.
- ElephantSQL – это SaaS-компания, которая размещает базы данных PostgreSQL и управляет конфигурацией сервера, резервным копированием и подключением к данным поверх экземпляров Amazon Web Services.
Полезные источники для изучения баз данных
Для того, чтобы хорошенько разобраться в базах данных, вам потребуется немало времени для изучения различных книг и туториалов. Ниже вы можете ознакомиться со списком книг и видеокурсов по данной тематике.
Книги для изучения баз данных:
- «Изучаем SQL», автор — Алан Бьюли. Эта книга отлично подойдет для новичков, только начинающих знакомиться с обширным миром баз данных.
- «SQL», автор — Крис Фиайли. В этой книге подробно и на примерах разбирается использование языка запросов SQL для решения разных задач.
- «SQL. Сборник рецептов», автор — Энтони Молинаро. Данное пособие подойдет тем, кто уже имеет определенные знания об SQL и хочет развивать свои навыки.
- «SQL. Библия пользователя», авторы — Алекс Кригель и др., 2-е издание. Уникальность книги в том, что в ней приведены примеры реализации различных запросов на трех основных диалектах ведущих СУБД.
- «Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL», авторы — Эрик Редмонд, Джим Р. Уилсон. В данной книге рассказывается в основном о нереляционных базах данных. Вы узнаете об особенностях таких СУБД, как Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL и Riak.
- «Работа с PostgreSQL: настройка и масштабирование», автор — А. Ю. Васильев. Это справочник по настройке и масштабированию PostgreSQL и тонкостям его использования.
Видеокурсы:
Если же вы больше предпочитаете видеоуроки и курсы, то существует множество источников для любого уровня подготовки. Ниже приведены примеры таких источников. Они в основном рассчитаны для новичков:
- Основы баз данных
- Изучение SQL для начинающих
- Видеокурс по базам данных от Технопарка
- Python and MySQL: Database Manipulation with Python
Контрольный чеклист для изучения баз данных
- Установите PostgreSQL на свой сервер или персональный компьютер. Если вы используете Ubuntu, запустите
sudo apt-get install postgresql
. - Убедитесь, что в зависимостях вашего приложения есть библиотека psycopg2.
- Настройте свое веб-приложение для подключения к экземпляру PostgreSQL.
- Создавайте модели в ORM с помощью встроенного ORM Django или SQLAlchemy с Flask.
- Создайте таблицы своей базы данных или синхронизируйте модели ORM с экземпляром PostgreSQL, если вы используете ORM.
- Начните создавать, читать, обновлять и удалять данные в базе данных из вашего веб-приложения.
Заключение
В этой статье мы кратко рассказали про базы данных в Python. Обсудили, какие они бывают и в чем особенности использования той или иной СУБД. Также мы дали вам подборки книг и видеоматериалов для дальнейшего изучения баз данных. Надеемся, что вам все это пригодится. Успехов в освоении баз данных и написании кода!
На основе статьи «Databases».