file vs blob

Opet jedan od onih dana … ovi koji me duže poznaju znaju da već godinama ubeđujem ljude da se slike, dokumenti i sličan sadržaj koji se samo čuva i povlači ne stavlja u bazu… al nekim ljudima ne vredi pričati, moraju zveknuti glavom par puta dok sami ne skapiraju …

Evo ga jedan primer od danas .. klijent ima tabelu od nekoliko stotina gigabajta (ostale tabele su nebitne) .. ništa strašno ali .. sve je to mnogo bitno i povlači se sa mnogo app servera… i potrebno je non stop i prilično raste i … i … i … Ceo sistem je projektovan da koristi Oracle RAC i sve je to “nekako radilo” osim što je klijent bio nezadovoljan brzinom a bogami i cenom poštno Oracle RAC nije uopšte jeftina zver. Onda je “developer” (da ga ne nazovem sad pravim imenom, čita ovo možda neko mladđi od 18) odlučio da odradi “upgrade” i da to sve prebaci na, MySQL Cluster (seća li se neko onog posta o tome da mccge nije zamena za oracle rac??). Sve u svemu, naprave oni to nekako, izmene malo aplikaciju, promene mašine i dobiju jedno 30% ubrzanja u odnosu na oracle rac i naravno mnoooooooogo nižu cenu… no, kao i svaki sistem i ovaj raste i povremeno ne može, sve ni sa tih 30% ubrzanja da postigne šta se od njega očekuje i tu onda “developer”, $#%/?R$(($#(“) mu ja .. tipla naravno da mu mi sredimo problem … i naravno kome će nego ih uvale meni na grbaču … tu počinje tj. završava ova priča …

Pokupim ja lepo taj data i taj app source i logove i … da vidim ja šta se tu tako strašno dešava … i u trenutku me zabole tintara (što je mnogo zeznuto obzirom da sam vec 5 dana ukočen i da ne mogu ni da sedim a kamoli da hodam, leđa su mi već rekla doviđenja) kada sam video šta se nalazi u onih nekoliko stotina gigabajta tabele … BLOBOVI …. veeeeeeeeeeeeeeeliki blobovi … kreteni su nakucali fajlove u tabelu … razne fajlove, u proseku oko 10M veličine po fajlu … (najmanjioko 200K, najveći oko 120M) .. nebitno sta je u njima .  Sada se vratimo korak nazad i setimo se da su oni ovo sve radili na Oracle RAC-u, znači već imaju deljeni storage … proverim, naravno, imaju veliki, super nabudzeni, ekstra našiljen SAN sa mnogo splindlova, napravim ja test, izbacim ja te fajlove iz tabele, stavim ih na SAN, promenim app … (izgubim citava 2 sata da prepravim app, napisem skript da izvadi sve iz blobova u fajlove na SAN-u, prepravim tabelu i startujem test) i pustim test … i dobijem, 6882% ubrzanje .. da prevedem  to u jednostavnije mere … sada je aplikacija oko 70 PUTA BRŽA !!! Neću ni da spominjem koliko treba sada da se napravi bekap baze i fajlova (oko 10 puta brže) i slično … moroni …

Da ne ostanem nedorečen, ima tu dosta i do toga što mccge ne radi baš sa blobovima 1/1 … da je u pitanju bio običan db server (mysql server ili pgsql ili oracle ili bilo koji drugi koji normalno radi sa blobovima) razlika u brzini ne bi bila 70 puta već pre 5-6 puta, no i to je veliko ubrzanje.

VN:F [1.9.22_1171]
Rating: +8 (from 8 votes)
November 29, 2009 • Tags: , • Posted in: Support

8 Responses to “file vs blob”

  1. Marinko - November 29, 2009

    Skoro sam ubjeđivao jednog prijatelja programera u sličnu stvar…. Nisam ga mogao dgovoriti od toga…

    Njegov komentar je:
    “Meni radi odlično i lako se radi bekap”

    Da samo malo razmišlja 6 mjeseci unaprijed…

    VA:F [1.9.22_1171]
    Rating: 5.0/5 (1 vote cast)
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. Bogdan Kecman - November 29, 2009

    da da … lako se radi bekap … obzirom da ima 2 page view-a na sat i da moze da ima downtime od 2 dana bez nekih velikih posledica – sto bi razmisljo, “ovako ume” …

    ako baza nema opciju online backupa (na srecu mccge to ima, ali obican mysql server nema, pgsql nema, sqlite nema …) tebi je ta tabela ZAKLJUCANA dok ne odradis bekap … to je veeeeeeeeeeliki downtime dok ti bekapujes 500G … a i kada imas online backup, to je ogroman udarac na performanse dok traje bekap, a trajeeeeeeeeeee …

    a sa “kontentom” na file sistemu, stavis lepo rsync i bekapujes automatski fajlove de oces kako oces, inkrementalno … zauzima nista a radi ko dusa … da ne spominjem da svi ti fancy storage sistemi kao sto je SAN imaju svoje fancy alate za bekapovanje koji su bezobrazno dobri …

    tako da – “kontent” ti se bekapuje sam po sebi laganica a baza posto sada vise nije u gigabajtima vec u megabajtima, bekapuje se “trenutno” …

    pritom – ovaj sada slucaj – nije da su oni ovo napravili pa im skocila baza sa 100M na 500G, oni su vec imali 500G na oracle rac-u kada su krenuli da presviravaju to na mccge

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  3. momsab - November 29, 2009

    blob se korist za fajlove koji se sredjuju cesto, tako bese?
    cisto da proverim

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  4. Bogdan Kecman - November 30, 2009

    iskreno – ako mene pitas ne koristi se nikad kada su fajlovi u pitanju ako imas drugi nacin da pristupis istima … blobovi sluze da cuvas velike komade podataka … sa kojima nesto radis (npr – pretrazujes ih) ali da cuvas fajlove “eto tako” u bazi .. razmisli jos jednom

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  5. noctua4u - November 30, 2009

    Moja tuzna prica glasi:
    Arhivska i delovodna knjiga + CELA (!!!) arhiva preduzeca je u PDFu spucana u BLOB polja (doduse oracle, al blob bre! i jos u PDFu!)…
    Na pitanje vrlom projketantu ZASTO?!?! odgovor je bio:
    Tela sam da probam kako radi… :)

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  6. Bogdan Kecman - November 30, 2009

    pdf u oraklu ima smisla posto orakle ume da pretrazuje pdf dokumente tako da realno imas full text search indexirane dokumente … to je “ok” … problem je kada “kreten” krene da cuva ringtonove, animacije, slike i slicno u bazi ..

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  7. Gusar - December 3, 2009

    @Bogdane, nešto te nema na skype-u, jel svinjska gripa?

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  8. Bogdan Kecman - December 4, 2009

    nije svinjski nego obican + sam se ukocio tako da mi sedenje ne prija (ni hodanje, ni stajanje ni …)

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

Leave a Reply