Citat:
Branimir Maksimovic:
Cuj, mozes ti da verujes da se fejsbuk vozi na mysql-u slobodno, ja sam siguran da je mysql tamo offline bekap....
Ja sam isto siguran da Facebook radi na MySQL-u. Slusao vise predavanja o tome. Vodi racuna, oni u stvarno drze sve vezano za usere, ali replikacione seme su im ludilo, imaju brdo servera i pisanje je haos. Content nije u bazi, ali user data jeste. Naravno, ispred tog MySQL-a imas autoscaling middleware sa mnogo kesiranja i zajebanim varijantama invalidacije tog kesa. Takodje, njihovi upiti su relativno prosti, nema tu nekih slozenih join-ova, nema ni full table scan, uglavnom je sve debelo optimizovano da se u bazu ide po primarnom kljucu.
Uopste nije sporno da Facebook radi na MySQL-u, ali njima MySQL ne drzi najveci deo date koju imaju, stavise najveci deo date koju oni imaju je unstructured. Ali arhitektura koju koriste Facebook ili LinkedIn (o ovome tek ima da se puno cita, oni bas pricaju svuda o tome) se ne oslanja na MySQL za kriticnu datu, plus mogu sebi da dozvole da nesto i izgube. Mislim, MySQL je bruka dobra baza, kad ti treba ultra-brz rad verovatno najbolji izbor... Problem je sto MySQL optimizer nije najsrecnije resenje za velike Join-ove, na primer. Sve dok ti treba jedna, dve evenetualno tri tabele MySQL radi kao zmaj, problem nastane kad ti treba 8 tabela, kad imas 5 foreign key-eva, cascade updates, trigere.... Tu vec MySQL zna da posustane. MySQL optimizer po mom iskustvu (kad radim explain) se nikad ne snadje da koristi sve indexe vec sa 4 ili 5 tabela u Join-u. PostgreSQL je vec nesto bolji, a Oracle baza ima brdo "fora" kako to resava. Dodatno, Oracle ima i namenski hardver (Exadata) koji dodatno resava ovakve probleme. Ako ti treba da pravis brz sajt, MySQL je odlicno resenje, ako imas DB driven logiku PostgreSQL je bolji, a ako imas ogromnu bazu sa mnogo relacija, onda na zalost moras na komercijalno resenje.
Ovo ne znaci ni da je MySQL ni da je PostgreSQL los. Nije. Ovo samo znaci da ima primena za koje nisu optimizovani. Dodatno, kazem, ako imas desetine i stotine terabajta, namenski hardver znaci - ali ne pitajte koliko to kosta. :) Mada... Svojevremeno sam iz sale pitao jednog Oracle sales rep-a "Ako kupim Oracle RAC za dve Sparc masine, sa svim dodatnim feature-ima ukljucenim, mogu li da do dobijem dva Sparc servera, maxovana sa memorijom i jedan storage za shared strorage for free, s'obzirom koliko vam kosta ova baza?". Bez imalo sale mi je receno "Naravno, nije problem, ako platis list price za bazu, dobijes to for free. Dogovoreno, imas kupca?" E, Exadata je skupa u odnosu na to. :) S'druge strane, kome treba da ima desetine terabajta i slozene join-ove, taj verovatno ima neku slozenu biznis logiku u bazi...
Please do not feed the Trolls!
Blasphemy? How can I blaspheme? I'm a god!'