Know-How
ORM vs Raw SQL
ORM (SQLAlchemy, Prisma, Entity Framework) zjednodušuje práci s DB. Ale skrývá složitost a generuje neoptimální dotazy.
ORM výhody
- Rychlý vývoj, méně kódu
- Type safety
- Automatické migrations
- Protection against SQL injection
- Database-agnostic
Raw SQL výhody
- Plná kontrola nad dotazy
- Optimální výkon pro komplexní dotazy
- Window functions, CTE, recursive queries
- Méně abstrakce = méně překvapení
Hybridní přístup
# SQLAlchemy — ORM pro CRUD
user = session.query(User).filter(User.id == 1).first()
# Raw SQL pro komplexní dotazy
result = session.execute(text('''
WITH monthly AS (
SELECT DATE_TRUNC('month', created_at) as month,
COUNT(*) as cnt
FROM orders WHERE user_id = :uid
GROUP BY 1
)
SELECT month, cnt, AVG(cnt) OVER() as avg_orders
FROM monthly
'''), {'uid': user_id})
Klíčový takeaway
ORM pro CRUD, raw SQL pro analytiku a optimalizaci. Hybridní přístup je pragmatický.