PostgreSQL — это популярная объектно-реляционная система управления базами данных. PostgreSQL базируется на языке SQL, отличается высокой надёжность и имеет широкие возможности. В PostgreSQL нет ограничений на максимальный размер базы данных, количество записей и индексов таблицах. В СУБД встроены мощные и надёжные механизмы транзакций, есть возможности для репликации, шардинга и партиционирования. СУБД отличает легкая расширяемость и возможность тонкой настройки.
MySQL — система управления базами данных
MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб‑приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб‑фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).
Из преимуществ СУБД MySQL стоит отметить простоту использования, гибкость, низкую стоимость владения (относительно платных СУБД), а также масштабируемость и производительность.
MySQL позволяет хранить целочисленные значения со знаком и беззнаковые, длиной в 1, 2, 3, 4 и 8 байтов, работает со строковыми и текстовыми данными фиксированной и переменной длины, позволяет осуществлять SQL‑команды SELECT, DELETE, INSERT, REPLACE и UPDATE, обеспечивает полную поддержку операторов и функций в SELECT- и WHERE- частях запросов, работает с GROUP BY и ORDER BY, поддерживает групповые функции COUNT(), AVG(), STD(), SUM(), MAX() и MIN(), позволяет использовать JOIN в запросах, в т.ч. LEFT OUTER JOIN и RIGHT OUTER JOIN, поддерживает репликацию, транзакции, работу с внешними ключами и каскадные изменения на их основе, а также обеспечивает многие другие функциональные возможности.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Есть и другие типы таблиц, разработанные сообществом.
СУБД MySQL появилась в 1995. Написана на C и C++, протестирована на множестве различных компиляторов и работает на различных платформах. C 2010 года разработку и поддержку MySQL осуществляет корпорация Oracle. Продукт распространяется как под GNU GPL, так и под собственной коммерческой лицензией. Однако по условиям GPL, если какая‑либо программа включает исходные коды MySQL, то и эта программа тоже должна распространяться по лицензии GPL. Для нежелающих открывать исходные тексты своих программ как раз предусмотрена коммерческая лицензия, которая, в дополнение к возможности разработки под «закрытой» лицензией, обеспечивает качественную сервисную поддержку. Сообществом разработчиков MySQL созданы различные ответвления — Drizzle, OurDelta, Percona Server и MariaDB, все эти ответвления уже существовали на момент получения прав на MySQL корпорацией Oracle.
Сейчас MySQL вместе с форком MariaDB занимают почётное первое место, а следом за ними идёт PostgreSQL и SQLite. Остальные СУБД в веб‑проектах используются значительно реже.
Тематические статьи
SQL‑инъекции — это один из распространённых способов взлома сайтов и веб‑приложений, работающих с реляционными базами данных. SQL‑инъекции основаны на внедрении в выполняемый приложением запрос к базе данных произвольного SQL‑кода, переданного злоумышленником. Последствиями SQL‑инъекций может быть как кража, модификация или удаление данных, так и полный взлом атакуемой системы — получение привилегированного доступа, например.
MariaDB — ответвление реляционной СУБД MySQL, разрабатываемое сообществом под лицензией GPL. MariaDB полностью совместима с приложениями, использующими MySQL, а переход на эту СУБД оправдан тем, что MySQL уже не так активно развивается.
Memcached — это хранилище «ключ =>значение», использование которого очень эффективно для ускорения работы сайта или веб‑приложения.
Redis — сетевое журналируемое хранилище данных типа «ключ — значение», которое обрабатывает данные в оперативной памяти и обладает механизмами снимков и журналирования для обеспечения постоянного хранения. Хранилище поддерживает работу с пятью типами данных: со строками, списками, хешами, обычными и сортируемыми множествами.
Базы данных служат для хранения и обработки данных. Бывают реляционные (SQL) и нереляционные (NoSQL) системы управления базами данных. Реляционные системы управления базами данных (SQL) хранят данные в таблицах и наиболее часто используются в качестве основного хранилища для веб‑приложений. Они очень стабильны и их надёжность проверена временем. Нереляционные СУБД (NoSQL) заметно отличаются по структуре хранения данных и работе с ними. Большинство нереляционных хранилищ превосходят классические SQL СУБД по скорости доступа или при работе со специфическими типами данных, но обычно эта скорость достигается за счёт снижения надёжности хранения.
СУБД — это очень часто «узкое место» в производительности веб‑приложений. В момент, когда сервер баз данных не может справится с нагрузками, производится масштабирование. В современных высоконагруженных системах эффективное управление данными невозможно без использования методов масштабирования и обеспечения отказоустойчивости. Репликация, партиционирование и шардирование — ключевые подходы, которые позволяют распределять данные, повышать производительность и гарантировать доступность. Разберем каждый из них подробно.
MongoDB — это NoSQL хранилище данных, крайне удобное для хранения информации, которая не может быть нормально структурирована в рамках реляционных баз данных. MongoDB — это СУБД с открытым исходным кодом, не требующая описания схемы таблиц. Документы в MongoDB хранятся в JSON или BSON, работа с такой моделью проще кодируется и проще управляется, а внутренняя группировка релевантных данных обеспечивает дополнительный выигрыш в быстродействии.
На серверах для размещения сайтов и веб‑приложений устанавливается программное обеспечение, которое требуется для работы программной логики сайта и других служб домена, для обслуживания и мониторинга, а также для защиты от взлома и устойчивости к нагрузкам.