Ответ
Проект использовал PostgreSQL как основную реляционную СУБД и MongoDB для отдельных сервисов, требующих гибкой схемы данных.
PostgreSQL:
- Причина выбора: Надежность, строгая ACID-совместимость, поддержка сложных запросов (оконные функции, CTE), JSONB-тип.
- Пример подключения и запроса (Python,
psycopg2):import psycopg2 from psycopg2 import sql
conn = psycopg2.connect( host="localhost", database="app_db", user="app_user", password=os.getenv('DB_PASSWORD') ) cur = conn.cursor()
Использование параметризованного запроса для безопасности
cur.execute("SELECT id, name FROM users WHERE active = %s;", (True,)) users = cur.fetchall() conn.close()
**MongoDB:**
* **Причина выбора:** Документно-ориентированная модель, быстрая разработка при изменяющихся требованиях, горизонтальная масштабируемость.
* **Использование:** Применялась в микросервисах для хранения логов, пользовательских профилей и контента в формате JSON-документов. Ответ 18+ 🔞
Да ты посмотри, какая у нас тут архитектурная карусель завертелась! Взяли, понимаешь, две базы данных и давай их по проекту раскидывать, как будто карты на столе раскладываем. Ну, а хули — каждая задача своё болтик требует.
PostgreSQL, мать его, — это наш фундамент, крепкий такой, не шатаемый. Выбрали его не просто так, а потому что он, сука, как швейцарские часы: ACID-совместимость у него строже, чем у монастырского устава, запросы любые, даже самые заковыристые, вывозит — с этими его оконными функциями и CTE. А ещё JSONB впихнули, чтоб совсем жизнь мёдом не казалась — можно и структурированно, и полуструктурированно, если приспичит. Короче, надёжный бугай.
Вот, смотри, как с ним общаемся на Python, через psycopg2:
import psycopg2
from psycopg2 import sql
conn = psycopg2.connect(
host="localhost",
database="app_db",
user="app_user",
password=os.getenv('DB_PASSWORD')
)
cur = conn.cursor()
# Использование параметризованного запроса для безопасности
cur.execute("SELECT id, name FROM users WHERE active = %s;", (True,))
users = cur.fetchall()
conn.close()
Видишь? Всё чинно, благородно, параметризованные запросы, чтобы никаких SQL-инъекций, этих, блядь, незваных гостей.
А теперь, внимание, второй акт нашего цирка — MongoDB! Это уже не фундамент, а такой гибкий, пластилиновый червячок. Выбрали его, когда нужно было сервисы пилить быстро, а требования менялись чаще, чем перчатки у оперной дивы. Документная модель, масштабируется горизонтально — красота же!
Использовали мы эту мартышку в микросервисах, которым похуй на строгую схему. Логи туда пихали, пользовательские профили, которые у каждого клиента как снежинки — все разные, и всякий контент в JSON-документах. Гибко, блядь! Один сервис захотел поле новое — и хуй с ним, добавил и всё, не нужно миграции на всю базу городить.
Вот так и живём: где нужна строгость и транзакции — там Постгрес, наш суровый отец. А где скорость разработки и схема, которая как дышло — туда Монгу засовываем. Главное — не перепутать, а то будет пиздец, а не архитектура.