Postgres vs MySql

Crezi că este posibil ca volumul de trafic să conteze în toată ecuația?

Comparăm traficul emag.ro de blackfriday vs devforum.ro? Pentru că într-o situație contează fiecare MB de RAM, în cealaltă nu.

1 Like

Cel mai mare bottleneck e baza de date, nu backend-ul in 99% din cazuri.

Consumul de RAM e relativ, s-ar putea să ai un consum mare la cold start cu Java sau .Net dar după ce rulează o zi o să scadă chiar sub nivelul pe care l-ai obține fără ORM. Memoria tot trebuie alocată pentru VM dar nu va fi folosită constant de structurile de date fiindcă se face GC și optimizare.

1 Like

A fost lansat PostgreSQL 15.

Printre noutati:

  • Imbunatatiri substantiale de performanta la sortare si compresie
  • Suport pentru MERGE
  • Views ce pot folosi permisiunile celui ce le interogheaza, nu a celui ce le-a definit.

Chiar, cum ati face ceva similar MERGE in ORM? Cu ce cost de performanta?

2 Likes

Daca trimite interogari ineficiente, putem spune ca e baza de date de vina pentru bottleneck?

Cateva exemple ce-mi vin in minte:

  • N + 1
  • SELECT pe un rand doar pentru a incrementa o coloana
  • Numararea tuturor randurilor ce indeplinesc o conditie doar pentru a determina daca exista un rand care le indeplineste.
3 Likes

Rar am auzit de situații în care te încurca performanta unui ORM (unde de fapt devii și-au făcut propriul engine și server de DB! Optimizat pentru INSERT la volume foarte, foarte mari de date).

ORM-urile sunt folosite de multe ori și greșit. Noi ne-am uitat după primul an de Django ce prostii am făcut cu un an în urmă și ne-am crucit. Sunt multe optimizări pe care poți să le faci in cod ce folosește ORM. Decât să reinventezi roata ca sa faci un subset de ORM, folosește ORM-ul existent, invata-l bine și cenzurează ce faci! Și întotdeauna poți face raw query in ORM, in locurile unde e nevoie.

Iar evitat JOIN-uri că e mai performant cu mai multe query-uri join-uite in cod Python nu suna să aibă vreun sens. Care e logica?

Poate Python nu e limbajul potrivit daca rulezi pe Rspberry Pi cu volume măricele de date (și spun asta ca fan Python).

1 Like

Daca stocai logurile in baza de date, nu e vina ORM-ului, de vina sunt arhitectura si toolul nepotrivit. Exista tooluri speciale pentru loguri care iti permit agregare, indexare, sters loguri mai vechi automat etc. Orice DB este un tool nepotrivit, vb din experienta proprie.

2 Likes

findAll(); si filter() peste tot :see_no_evil:

1 Like

ca de obicei discuția a deraiat… hai să fiu și eu off topic și să zic că de ce aș învăța un ORM cînd știu cum am construit bada de date și relațiile dintre obiecte/tabele?!

on topic, adaugă suport pt ambele (mysql și postgresql)

1 Like

Ce beneficii i-ar aduce asta in afara de multe batai de cap?

2 Likes