To BLOB or not to BLOB

30. 3. 2007 1:22 (aktualizováno) | suchy

Ukládat BLOB do databáze nebo do filesystému? Tuhle otázku si asi položil každý kdo někdy dělal do DB. A každý má na to svůj (jediný správný) názor. Jenže málokdo má svá data podložené testy, protože se do toho nikomu nechce. Zřejmě se každý bojí – a to oprávněně – že ho lidi sepsují kvůli špatné metodice, proč neměl v konfiguraci totok a proč tam měl tamtok, když to tam být nemá…

A data žádná nejsou. Až tento týden jsme objevil zajímavou práci To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem? ABS. Samozřejmě i já mám k metodice výhrady (data přístupná přes SMB – pche, MS SQL – pche). Ale převažuje nadšení z pěkné práce o kterou se dá opřít a na které stavět.

Pokud jste líní si to přečíst, tak závěr je takový, že pro malé objekty ( < 256kB) je rozhodně lepší ukládat do DB. Pro velké objekty ( > 1MB) je rozhodně lepší ukládat do FS. Mezi tím je mlhavá hranice a silně záleží na druhu aplikace. Pokud se data často přepisují, tak je lepší spíše FS (lépe se vyrovnává s fragmentací). Pokud se data nepřepisují, tak je lepší DB (větší propustnost malých objektů).

  • 8. 2. 2007 18:47

    Michal Kára (neregistrovaný)

    Zajimava studie. Zkoumal nekdo blize Oracle typ BFILE? Ten by mel data ukladat do souboru na FS, ale pritom se chova jako DB sloupecek...

  • 8. 2. 2007 22:47

    Tommy (neregistrovaný)

    No, ono to totiž dost záleží na druhu aplikace a databáze. Pokud chci plnou transakčnost aplikace, těžko tam budu zanášet netransakční prvky (na filesystému prostě ROLLBACK neuděláte). Na druhou stranu pokud budu používat MySQL tak ten soubor je asi fakt lepší, vzhledem k tomu že MySQL pracuje s BLOBy hodně stupidně.

  • 9. 2. 2007 4:25

    K2 (neregistrovaný)

    Pokud si vzpomínám, tak Oracle umí BLOB pouze vysypat z DB na FS, kdežto MS SQL ho umí přímo vrátit.
    Jinak transakční zpracování na FS není takový problém, máme ACID transakční FS (TxF).

  • 9. 2. 2007 10:19

    Pavel Stehule (neregistrovaný)

    U PostgreSQL jsou ty limity asi nekde jinde. Zhruba do 6MB (zalezi na velikosti pameti) se bez blobu pohodlne obejdete a klidne lze pouzit text nebo bytea. Nad uz je to na uvahu. BLOB ma tu vyhodu, ze pokud se klient dokaze pripojit, tak k nemu dokazu dostat data jednim kanalem. Coz ma smysl, pokud k databazi pristupuje vic aplikaci.

    Jinak zmineny test je pouze pro MS SQL a pro NTFS. Pro cokoliv jineho nema zadny vyznam.

  • 9. 2. 2007 14:27

    Michal Kára (neregistrovaný)

    [3] Minimalne verze 9 nema problem se ctenim/zapisem blobu jako kterehokoli jineho sloupecku.

  • 9. 2. 2007 20:14

    K2 (neregistrovaný)

    [5] aha, díky. Má někdo zkušenosti se staršími verzemi Oracle?

  • 9. 2. 2007 21:52

    CyberBob66 (neregistrovaný)

    Celou studii jsem nečetl. Ale zabývá se taky někdo uživatelskými právy? V DB se to jednoduše nagrantuje a to stejným způsobem jako přístup k jiným tabulkám/slou­pečkům. V souborovém systému je potřeba mít nějaký další autorizační mechanismus. A kdo se s tím má patlat? Dělat jednu věc na dvou místech...

  • 9. 2. 2007 23:15

    joey (neregistrovaný)

    [6] Oracle s tim opravdu nema problem - jen se prace s xLOBy mirne meni a tak treba nejde pristupovat pres starsi OCI k novejsim DB. AFAIK v7, v8, v9 i v10 xLOBy propusti na klienta celkem bezproblemove (sedmicka byla v tomto misty blba a potrebovala nejake berlicky, ale slo to).

    Ad ukladani do FS. Asi bych v pripade Oracle taky nechtel ladit problemy, ktere nastanou s transakcemi, vicenasobnym pristupem apod. Pokud to budu resit nejakym transakcnim FS, tak to uz muzu ukladat rovnou do DB, nebo se pletu? Navic jakmile sahnu po nejakem reseni typu Oracle RAC (Real Application Cluster), tak mam dalsi problemy. Oracle snad do fulltextu umi zahrnout i BFILE (nepouzivam je, takze si nejsem jisty), ale muze to byt dalsi prekazka, proc data neukladat mimo DB.

  • 10. 2. 2007 12:43

    Ivan (neregistrovaný)

    Ono je taky duleziny vedet co v tech datech mate a jak jsou ta data pro vas dulezita. Pokud v Oracle pouzite datavy typ BFILE, tak se data ukladaji mimo kontext transakce a obsah takovych 'blobu' se nekopiruje do redologu(a archredologu). Takze urcite dosahnete vetsiho vykonu, ale prijdete o hlavni vyhodu databazoveho zpracovani a tou je ochrana dat. Jeste bych dodal, ze API oracle pro BFILE je naprosto debilni. Z OCI se z klineta nedaji BFILEs zapisovat vubec a teprve od verze 10g je mozne ulozit vice nez 32KB binarnich dat. Cely UTL_FILE bylo delany na textovy soubory a tak vam DB vklada <CR> nebo <CR><LF> i do binarnich dat.
    Co se tyce starsich verzi, tak BLOB se objevil ve verzi 8 a predtim se pouzival datovy typ LONG. Ten mel spoustu nekdy naprosto neocekavanych omezeni proto by se nemel pouzivat.

Přidávat nové názory je zakázáno.

Podnikatel.cz: OSA zdraží, ale taky přidá nový poplatek

OSA zdraží, ale taky přidá nový poplatek

120na80.cz: Lepší poporodní sexuální život? Žádný problém

Lepší poporodní sexuální život? Žádný problém

DigiZone.cz: Vláda schválila digitální vysílání ČRo

Vláda schválila digitální vysílání ČRo

DigiZone.cz: Čechy baví komedie, Slováky animace

Čechy baví komedie, Slováky animace

Lupa.cz: Nechcete datacentrum? Jsou na prodej

Nechcete datacentrum? Jsou na prodej

Vitalia.cz: Syfilis: To není „nemoc z lásky“

Syfilis: To není „nemoc z lásky“

DigiZone.cz: Sky Deutschland: dvakrát fotbal ve 4K

Sky Deutschland: dvakrát fotbal ve 4K

DigiZone.cz: Elektrická Formule E. Práva má Arena Sport

Elektrická Formule E. Práva má Arena Sport

Vitalia.cz: 9 potravin, které nesmí chybět v jídelníčku těhotné

9 potravin, které nesmí chybět v jídelníčku těhotné

Vitalia.cz: Ženy, které milují příliš, jsou neštěstí

Ženy, které milují příliš, jsou neštěstí

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?

Podnikatel.cz: Zajímavý paradox: Daří se vedle konkurence

Zajímavý paradox: Daří se vedle konkurence

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

DigiZone.cz: Loewe uvede 4K s obrazovkou OLED

Loewe uvede 4K s obrazovkou OLED

DigiZone.cz: Skylink přepracoval web

Skylink přepracoval web

Měšec.cz: Investiční pasti. Děláte to, co ostatní, ale proděláváte

Investiční pasti. Děláte to, co ostatní, ale proděláváte

Podnikatel.cz: Kdy s příjmy není třeba platit zdravotko?

Kdy s příjmy není třeba platit zdravotko?

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte