О проекте | Особенности | Технологии | Требования | Начало | Лицензия | Авторы
PostgreSQL, часто просто "Postgres", является объектно-реляционной системой управления базами данных (ORDBMS) с акцентом на расширяемость и соответствие стандартам. Как сервер баз данных, его основная функция заключается в хранении данных, безопасном и поддерживающем лучшие практики, и их последующем извлечении по запросам других программных приложений, будь то те, которые находятся на том же компьютере, или те, которые работают на другом компьютере в сети (включая Интернет). Он может работать с различными нагрузками - от небольших приложений для одной машины до крупных приложений для работы в Интернете с большим количеством одновременно работающих пользователей. Последние версии также обеспечивают репликацию самой базы данных для обеспечения безопасности и масштабируемости.
PostgreSQL реализует большинство стандартов SQL:2011, соответствует стандарту ACID и является транзакционной (включая большинство DDL-запросов), избегая проблем блокировки с помощью многоверсионного управления параллелизмом (MVCC), обеспечивает устойчивость к грязным чтениям и полную сериализуемость; обрабатывает сложные SQL-запросы, используя многие методы индексирования, недоступные в других базах данных; имеет обновляемые представления и материализованные представления, триггеры, внешние ключи; поддерживает функции и хранимые процедуры, а также другие возможности расширения, и имеет большое количество расширений, написанных сторонними разработчиками. Помимо возможности работы с основными проприетарными и открытыми базами данных, PostgreSQL поддерживает миграцию с них, благодаря широкой поддержке стандартного SQL и доступным инструментам миграции. А если использовались проприетарные расширения, то за счет своей расширяемости, которая может эмулировать многие из них благодаря некоторым встроенным и сторонним расширениям совместимости с открытым исходным кодом, например, для Oracle.
✔️ Важнейшая особенность контейнеров — их сравнительно короткий жизненный цикл. Любой контейнер можно остановить, перезапустить или уничтожить, если это необходимо. Данные, которые содержатся в контейнере, при этом тоже пропадут. Так выработалось правило проектирования приложений: не хранить важные данные в контейнере. Такой подход называют Stateless;
✔️ Объем контейнеров измеряется в мегабайтах, поскольку в них упаковывают лишь те процессы и зависимости ОС, которые необходимы для выполнения кода. Легковесные контейнеры быстро запускаются и экономят место на диске;
✔️ Один контейнер соответствует одному запущенному процессу. Отключение отдельного контейнера для отладки или обновления никак не помешает нормальной работе всего приложения;
✔️ Контейнеризация обеспечивает надежную изоляцию процессов и повышает уровень безопасности систем. Приложения, которые работают внутри контейнера, не имеют доступа к основной ОС и не могут на неё влиять;
✔️ Благодаря контейнерам можно автоматизировать развертывание приложений на разных хостах;
✔️ Использование контейнеров позволяет перейти с монолита на микросервисную архитектуру. За счет этого ускоряется разработка новой функциональности, поскольку нет опасений, что изменения в одной компоненте затронут всю остальную систему;
✔️ С точки зрения эффективности контейнеры котируются выше виртуальных машин. На одинаковом оборудовании можно запустить большое количество контейнеров, тогда как ВМ будет в разы меньше. Это важно при использовании облачной инфраструктуры — потребуется меньше ресурсов;
В данном проекте были использованы следующие инструменты:
Перед началом 🏁, вам нужно иметь Git и Docker установленными.
# Клонируйте этот проект
$ git clone https://github.com/laspegasuscommunity/synapse-postgres.git
# Доступ
$ cd synapse-postgres
# Запустите проект
$ docker-compose up -d
# Сервер инициализируется в <http://synapse-postgres:5432>
Этот проект находится под лицензией MIT. Для получения более подробной информации см. LICENSE файл.
Сделано с ❤️ ponfertato