Мій досвід роботи з Postgres та Mongo після роботи з обома базами даних у моїх проектах.
Postgres (RDBMS)
Postgres рекомендується використовувати, якщо у ваших майбутніх додатках є складна схема, яка потребує великої кількості об'єднань, або всі дані мають зв'язки, або якщо ми важко пишемо. Postgres є відкритим вихідним кодом, швидшим, сумісним з ACID і використовує менше пам'яті на диску, а також забезпечує високу продуктивність для зберігання JSON, а також включає повну серіалізацію транзакцій з 3 рівнями ізоляції транзакцій.
Найбільша перевага перебування в Postgres полягає в тому, що ми маємо найкраще з обох світів. Ми можемо зберігати дані в JSONB з обмеженнями, послідовністю та швидкістю. З іншого боку, ми можемо використовувати всі функції SQL для інших типів даних. Основний механізм дуже стабільний і добре справляється з великим діапазоном обсягів даних. Він також працює на ваш вибір обладнання та операційної системи. Postgres забезпечує можливості NoSQL, а також повну підтримку транзакцій, зберігаючи документи JSON з обмеженнями на дані полів.
Загальні обмеження для Postgres
Масштабування Postgres по горизонталі значно складніше, але здійсненне.
Швидкого зчитування неможливо досягти повністю за допомогою Postgres.
БЕЗ баз даних SQL
Mongo DB (Wired Tiger)
MongoDB може перемогти Postgres у розмірі "горизонтальної шкали". Зберігання JSON - це те, що оптимізовано для Монго. Mongo зберігає свої дані у бінарному форматі, який називається BSONb, що є (приблизно) лише двійковим поданням надмножини JSON. MongoDB зберігає об'єкти точно так, як вони були розроблені. За даними MongoDB, для програм, що вимагають інтенсивного запису, Монго каже, що новий движок (Wired Tiger) дає користувачам до 10-кратного збільшення продуктивності запису (я повинен спробувати це), із зменшенням обсягу зберігання на 80 відсотків, що сприяє зниженню витрат на зберігання , досягти більшого використання обладнання.
Загальні обмеження MongoDb
Використання механізму зберігання без схем призводить до проблеми неявних схем. Ці схеми не визначаються нашим механізмом зберігання, а натомість визначаються на основі поведінки програми та очікувань.
Окремі технології NoSQL не відповідають стандартам ACID, оскільки вони жертвують критичним захистом даних на користь високої продуктивності для неструктурованих додатків. Застосувати ACID до баз даних NoSQL не складно, але це зробило б базу даних повільною та негнучкою до певної міри. “Більшість обмежень NoSQL були оптимізовані в нових версіях та випусках, які значною мірою подолали попередні обмеження”.