Мой опыт работы с Postgres и Mongo после работы с обеими базами данных в моих проектах.
Postgres (СУБД)
Postgres рекомендуется, если ваши будущие приложения имеют сложную схему, которая требует большого количества объединений или все данные имеют отношения, или если у нас есть тяжелая запись. Postgres имеет открытый исходный код, работает быстрее, совместим с ACID и использует меньше памяти на диске, а также обеспечивает хорошую производительность для хранилища JSON и включает полную сериализуемость транзакций с 3 уровнями изоляции транзакций.
Самым большим преимуществом использования Postgres является то, что у нас есть лучшее из обоих миров. Мы можем хранить данные в JSONB с ограничениями, единообразием и скоростью. С другой стороны, мы можем использовать все функции SQL для других типов данных. Базовый движок очень стабилен и хорошо справляется с большим диапазоном объемов данных. Он также работает на выбранном вами оборудовании и операционной системе. Postgres предоставляет возможности NoSQL вместе с полной поддержкой транзакций, храня документы JSON с ограничениями на данные полей.
Общие ограничения для Postgres
Масштабирование Postgres по горизонтали значительно сложнее, но выполнимо.
Операции быстрого чтения не могут быть полностью реализованы с помощью Postgres.
БЕЗ баз данных SQL
Mongo DB (проводной тигр)
MongoDB может превзойти Postgres в измерении «горизонтального масштаба». Хранение JSON - это то, для чего оптимизирован Mongo. Mongo хранит свои данные в двоичном формате BSONb, который (примерно) является просто двоичным представлением надмножества JSON. MongoDB хранит объекты в точности так, как они были разработаны. Согласно MongoDB, для приложений с интенсивной записью, по словам Монго, новый движок (Wired Tiger) дает пользователям до 10-кратного увеличения производительности записи (я должен попробовать это) с 80-процентным сокращением использования хранилища, что помогает снизить затраты на хранилище. , добиться большего использования оборудования.
Общие ограничения MongoDb
Использование механизма хранения без схемы приводит к проблеме неявных схем. Эти схемы не определяются нашим механизмом хранения, а определяются на основе поведения и ожиданий приложения.
Автономные технологии NoSQL не соответствуют стандартам ACID, потому что они жертвуют защитой критически важных данных в пользу высокой пропускной способности для неструктурированных приложений. Применить ACID к базам данных NoSQL несложно, но это в некоторой степени сделает базу данных медленной и негибкой. «Большинство ограничений NoSQL были оптимизированы в новых версиях и выпусках, которые в значительной степени преодолели предыдущие ограничения».