Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

ORM vs Raw SQL

01. 01. 2024 1 min čtení intermediate

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ý.

databaseormsqlbest practices