Опубликован: 25.01.2016 | Уровень: для всех | Доступ: платный | ВУЗ: Российский Новый Университет
Лекция 11:

Подключение к базе данных

Цель лекции: Рассмотреть основные особенности поддерживаемых баз данных; ознакомились со структурой файла миграции; рассмотреть особенности использования Django с NoSQL, реализовали простейший проект MongoDB на Django.

Ключевые термины: Django, база, фреймворк, файл, SQL, миграция, проект, данные, field, class, url, python, схема, модель, слияние

Django - это фреймворк с агностическим подходом к базе данных, это означает, что поля базы данных, предоставляемых Django предназначены для работы в разных базах данных, таких как SQLite, Oracle, MySQL и PostgreSQL. Действительно, они также работают с некоторыми сторонними базами данных. PostgreSQL является небольшой базой данных для Django в рабочей фазе, в то время как для окружения разработки используется SQLite, и вы в конечном итоге проделаете много работы, если не захотите использовать СУБД для вашего проекта. Эта лекция даст вам подробную разницу между двумя типами и покажет вам, что лучше подходит для Django, и, так же, как мы действительно можем их имплементировать в наш проект Django.

Прежде всего, давайте посмотрим на разницу между SQL и NoSQL.

SQL против NoSQL

Базы данных SQL и реляционные базы данных использовались повсеместно в течение очень долгого времени; в самом деле, говоря о базах данных, подразумевали базы данных SQL, до тех пор, пока не был придуман новый термин — NoSQL.

Мы поговорим о высокоуровневых различиях между SQL и NoSQL. Ниже приведены различия между ними:

SQL база данных (RDBMS) База данных NoSQL
SQL базы данных являются реляционными базами данных (СУБД) Баз данных NoSQL- нереляционные или распределенные базы данных
SQL базы данных основаны на таблицах и ее отношения с другими таблицами NoSQL -документальная, пары ключ -значение, графические базы данных или хранение широких столбцов
База данных SQL хранит свои данные в строках таблицы NoSQL — это коллекция значений пара-ключ документов, графических данных или широкостолбцовых хранилищ
SQL базы данных имеют предопределенные схемы NoSQL имеет динамическую схему
Базы данных SQL вертикально масштабируемы Базы данных SQL горизонтально масштабируемы
Примеры баз данных SQL: MySQL, Oracle, SQLite, PostgreSQL и MS SQL Примеры баз данных NoSQL: MongoDB, BigTable, Redis, RavenDB, Cassandra, HBase, Neo4j и CouchDB

Давайте попробуем понять основные особенности некоторых из известных баз данных SQL и NoSQL.

Базы данных SQL

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

MySQL – open source

Будучи одной из самых популярных баз данных в мире, MySQL имеет некоторые преимущества, которые делают ее пригодной для всех видов бизнес-проблем. Ниже приведены несколько важных преимуществ MySQL:

  • Репликация: MySQL поддерживает репликацию, то есть путем репликации базы данных MySQL, рабочая нагрузка может быть значительно уменьшена от одной машины и приложения могут быть легко расширены
  • Сегментирование: Когда количество операций записи очень большое, сегментирование помогает путем разбиения серверного приложения, которое делит базу данных на небольшие куски.

PostgreSQL

Как упоминалось ранее, PostgreSQL является наиболее популярной базы данных в рамках сообщества Django. Он также имеет широкий набор функций, поддерживаемый основными базами данных.

Развитие расширенных запросов и особенностей PostgresSQL сделали возможным достигнуть комплексной строки обычного запроса SQL в гораздо более простой строке для записи запроса. Однако имплементация массивов, hstore, JSON и так далее сложнее с помощью обычных SQL баз данных.

NoSQL базы данных

Эта концепция была введена, когда горизонтальное масштабирование было непросто осуществить и базы данных на основе реляционных СУБД не могли масштабироваться, так как должны были. Часто этот термин расшифровывается Not Only SQL (Не только SQL). Он предоставляет механизм для хранения и извлечения данных, отличных от традиционных методов SQL.

MongoDB

MongoDB – одна из самых популярных документальных NoSQL баз данных, так как она хранит данные в JSON-подобных документах. Это нереляционная база данных с динамической схемой. Она была разработана основателями компании DoubleClick. Она написана на C++ и в настоящее время используется в некоторых крупных компаниях, таких как The New York Times, Craigslist и MTV Networks. Ниже приведены некоторые преимущества и сильные стороны MongoDB:

  • Скорость: Для простых запросов, она дает хорошую производительность, так как все данные связаны в единый документ, который убирает операции соединения
  • Масштабируемость: Она горизонтально масштабируемая, то есть, вы можете уменьшить рабочую нагрузку путем увеличения числа серверов в пуле ресурсов вместо того чтобы полагаться на автономный ресурс.
  • Управляемость: Она простая в использовании для разработчиков и администраторов. Это также дает MongoDB возможность совместного использования баз данных.
  • Динамическая схема: Она дает вам гибкость, чтобы развивать вашу схему данных без изменения существующих данных

CouchDB

CouchDB является также документальной базой данных NoSQL. Он хранит данные в виде документов JSON. Ниже приведены некоторые преимущества и сильные стороны CouchDB:

  • Без схемы: будучи членом семейства NoSQL, она также имеет свойство без схемы, которое делает ее более гибким, поскольку у него есть формат документов JSON для хранения данных
  • HTTP-запрос: вы можете получить доступ к вашей документальной базе данных, используя веб-браузер
  • Разрешение конфликтов: Имеется автоматическая система разрешения конфликтов, которая является полезной, когда вы собираетесь использовать распределенную базу данных
  • Легкость репликации: репликация довольно проста

Redis

Redis является еще одной базой данных NoSQL open source, которая используется главным образом в связи с молниеносной скоростью. Она написана на языке ANSI С. Ниже приведены некоторые преимущества и сильные стороны Redis:

  • Структуры данных: Redis обеспечивает до такой степени эффективные структуры данных, что иногда называют как серверные структуры данных. Ключи, хранящиеся в базе данных может быть хэшами, списками и строками и могут быть отсортированным или несортированным набором.
  • Redis в качестве кэша: вы можете использовать Redis в качестве кэша путем имплементации ключей с ограниченным временем для повышения производительности.
  • Очень быстро: Она рассматривается как один из самых быстрых NoSQL серверов, так как она работает с набором данных в памяти.
Константин Боталов
Константин Боталов

Вроде легкие вопросы и ответы знаю правильные, но система считает иначе и правильные ответысчитает неправильными. Приходится выполнть по несколько раз. Это я не правильно делаю или тест так составлен?

Владимир Филипенко
Владимир Филипенко

Листинг показывает в 4-ой лекции, что установлен Django 1.8.4. Тут же далее в этой лекции указаны настройки, которые воспринимает Django 1.7 и младше.

Дмитрий Молокоедов
Дмитрий Молокоедов
Россия, Новосибирск, НГПУ, 2009
Акбар Ахвердов
Акбар Ахвердов
Россия, г. Москва