Hlavní menu
Nástroje |
WebKiv.UkladaniVelkychDatDoDatabaze HistoryShow minor edits - Show changes to output 27 November 2009, 14:12
by
- Deleted line 7:
Základní jednotlivosti: 27 November 2009, 14:12
by
- Changed lines 4-5 from:
* je to skoro jedno = klidně ho můžu dát do databáze to:
* je to skoro jedno = klidně ho můžu dát do databáze, té to nevadí, ale [[přístup k datům souborů v databázi může být pomalejší než přes filesystém -> http://blog.sitek.com.au/2008/03/comparison-between-storing-imagesfiles-in-mysql-and-on-filesystem/]] Changed lines 21-22 from:
* [[přístup k datům souborů v databázi může být pomalejší než přes filesystém -> http://blog.sitek.com.au/2008/03/comparison-between-storing-imagesfiles-in-mysql-and-on-filesystem/]] to:
27 November 2009, 14:10
by
- Added lines 23-24:
(Pozn: Vše se týká MySql ale zřejmě platí obecně pro rozumné SQL databáze.) Changed lines 32-34 from:
!!! Poznámka k ukládání ve VFS: nedělat (neukládat .avi do VFS), protože na to OpenCms nemá udělané VFS tabulky - kdyžtak vytvořit vlastní tabulky pro velká data a spravovat si je "ručně". (Pozn: Vše se týká MySql ale zřejmě platí obecně pro rozumné SQL databáze.) to:
!!! Poznámka k ukládání v OpenCms Nedělat (neukládat .avi do VFS), protože na to OpenCms nemá udělané VFS tabulky - kdyžtak vytvořit vlastní tabulky pro velká data a spravovat si je "ručně". 27 November 2009, 14:10
by
- Changed lines 28-29 from:
Oboje viz http://www.dreamwerx.net/phpforum/?id=1 to:
Oboje viz http://www.dreamwerx.net/phpforum/?id=1. !!! Poznámka k ukládání ve VFS: nedělat (neukládat .avi do VFS), protože na to OpenCms nemá udělané VFS tabulky - kdyžtak vytvořit vlastní tabulky pro velká data a spravovat si je "ručně". 27 November 2009, 14:08
by
- Changed line 10 from:
* do sloupečku je možné soubor z filesystému uložit přes funkci [[LOAD_FILE -> http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_load-file]] to:
* do BLOB sloupečku je možné soubor z filesystému uložit přes funkci [[LOAD_FILE -> http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_load-file]] Changed line 12 from:
* jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z BLOBové položky [[používá prvních @@max_sort_length@@ (default 1024) znaků pro ORDER BY -> http://dev.mysql.com/doc/refman/5.0/en/blob.html]] apod řazení výsledků to:
* jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z [=BLOBové=] položky [[používá prvních @@max_sort_length@@ (default 1024) znaků pro ORDER BY -> http://dev.mysql.com/doc/refman/5.0/en/blob.html]] apod řazení výsledků Changed line 15 from:
* když udělám SELECT s BLOBy a pracuji s ním v aplikaci (přes result set), další krok iterace přes [[result set vždy čeká na dodání celého BLOBu -> http://onlamp.com/onlamp/2002/07/11/MySQLtips.html]] což může zdržovat to:
* když udělám SELECT s [=BLOBy=] a pracuji s ním v aplikaci (přes result set), další krok iterace přes [[result set vždy čeká na dodání celého BLOBu -> http://onlamp.com/onlamp/2002/07/11/MySQLtips.html]] což může zdržovat Changed line 19 from:
* některé filesystémy mají problém pokud mají pracovat s řádově miliony (malých) souborů; pokud mám řádově milion (malých) souborů v BLOBech, jsou fyzicky v jednom či dvou velkých souborech příslušné tabulky to:
* některé filesystémy mají problém pokud mají pracovat s řádově miliony (malých) souborů; pokud mám řádově milion (malých) souborů v [=BLOBech=], jsou fyzicky v jednom či dvou velkých souborech příslušné tabulky 27 November 2009, 14:07
by
- Changed lines 4-5 from:
* je to jedno = úplně klidně ho mužu dát do databáze to:
* je to skoro jedno = klidně ho můžu dát do databáze Changed lines 12-13 from:
* jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z BLOBové položky [[používá prvních @@max_sort_length@@ (default 1024) znaků pro ORDER BY -> http://dev.mysql.com/doc/refman/5.0/en/blob.html]] * jakmile MySql dělá SELECT a v prohledávaných sloupcích je [[BLOB, prohledává tabulky na disku a ne v paměti -> http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html]] => je to velmi pomalé (tohle se stane třeba když udělám SELECT * FROM TABULKA_S_FILMY) to:
* jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z BLOBové položky [[používá prvních @@max_sort_length@@ (default 1024) znaků pro ORDER BY -> http://dev.mysql.com/doc/refman/5.0/en/blob.html]] apod řazení výsledků * jakmile MySql dělá SELECT a v prohledávaných sloupcích je [[BLOB, prohledává tabulky na disku a ne v paměti -> http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html]] => je to velmi pomalé (tohle se stane třeba když udělám SELECT [=*=] FROM TABULKA_S_FILMY) Added line 17:
Changed lines 23-24 from:
Best practices pro ukládání v db: to:
!!! Best practices pro ukládání v db: Added line 27:
Changed lines 30-31 from:
Vše se týká MySql ale zřejmě platí obecně pro rozumné SQL databáze. to:
(Pozn: Vše se týká MySql ale zřejmě platí obecně pro rozumné SQL databáze.) 27 November 2009, 14:03
by
- Changed lines 10-14 from:
* do sloupečku je možné soubor z filesystému uložit přes funkci "LOAD_FILE":http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_load-file * velikost dat, která nahrávám přes INSERT/UPDATE, je "omezená parametrem @@max_allowed_packet@@":http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html * jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z BLOBové položky "používá prvních @@max_sort_length@@ (default 1024) znaků pro ORDER BY":http://dev.mysql.com/doc/refman/5.0/en/blob.html * jakmile MySql dělá SELECT a v prohledávaných sloupcích je "BLOB, prohledává tabulky na disku a ne v paměti":http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html => je to velmi pomalé (tohle se stane třeba když udělám SELECT * FROM TABULKA_S_FILMY) * když udělám SELECT s BLOBy a pracuji s ním v aplikaci (přes result set), další krok iterace přes "result set vždy čeká na dodání celého BLOBu":http://onlamp.com/onlamp/2002/07/11/MySQLtips.html což může zdržovat to:
* do sloupečku je možné soubor z filesystému uložit přes funkci [[LOAD_FILE -> http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_load-file]] * velikost dat, která nahrávám přes INSERT/UPDATE, je [[omezená parametrem @@max_allowed_packet@@ -> http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html]] * jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z BLOBové položky [[používá prvních @@max_sort_length@@ (default 1024) znaků pro ORDER BY -> http://dev.mysql.com/doc/refman/5.0/en/blob.html]] * jakmile MySql dělá SELECT a v prohledávaných sloupcích je [[BLOB, prohledává tabulky na disku a ne v paměti -> http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html]] => je to velmi pomalé (tohle se stane třeba když udělám SELECT * FROM TABULKA_S_FILMY) * když udělám SELECT s BLOBy a pracuji s ním v aplikaci (přes result set), další krok iterace přes [[result set vždy čeká na dodání celého BLOBu -> http://onlamp.com/onlamp/2002/07/11/MySQLtips.html]] což může zdržovat Changed lines 19-20 from:
* "přístup k datům souborů v databázi může být pomalejší než přes filesystém":http://blog.sitek.com.au/2008/03/comparison-between-storing-imagesfiles-in-mysql-and-on-filesystem/ to:
* [[přístup k datům souborů v databázi může být pomalejší než přes filesystém -> http://blog.sitek.com.au/2008/03/comparison-between-storing-imagesfiles-in-mysql-and-on-filesystem/]] 27 November 2009, 14:02
by
- Changed line 9 from:
* db ukládá tyhle věci do BLOB, LARGEBLOB to:
* db ukládá tyhle věci do BLOB, LONGBLOB Changed lines 11-13 from:
* jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z BLOBové položky používá prvních (default 1024) znaků pro ORDER BY * jakmile MySql dělá SELECT a v prohledávaných sloupcích je BLOB, prohledává tabulky na disku a ne v paměti => je to velmi pomalé (tohle se stane třeba když udělám SELECT * FROM TABULKA_S_FILMY) * když udělám SELECT s BLOBy a pracuji s ním v aplikaci (přes result set), další krok iterace přes result set vždy čeká na dodání celého BLOBu což může zdržovat to:
* velikost dat, která nahrávám přes INSERT/UPDATE, je "omezená parametrem @@max_allowed_packet@@":http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html * jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z BLOBové položky "používá prvních @@max_sort_length@@ (default 1024) znaků pro ORDER BY":http://dev.mysql.com/doc/refman/5.0/en/blob.html * jakmile MySql dělá SELECT a v prohledávaných sloupcích je "BLOB, prohledává tabulky na disku a ne v paměti":http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html => je to velmi pomalé (tohle se stane třeba když udělám SELECT * FROM TABULKA_S_FILMY) * když udělám SELECT s BLOBy a pracuji s ním v aplikaci (přes result set), další krok iterace přes "result set vždy čeká na dodání celého BLOBu":http://onlamp.com/onlamp/2002/07/11/MySQLtips.html což může zdržovat 27 November 2009, 13:56
by
- Added lines 1-26:
(Dlouho to ve mě hlodalo, nejsa databázistou, po půl hodině práce s google results.) Otázka je: ''mám velký soubor (150MB .avi) - mám ho uložit do databáze nebo radši na disk?'' Rychlá odpověď: * je to jedno = úplně klidně ho mužu dát do databáze Solidní odpověď si složte z následujících faktů. Základní jednotlivosti: * db ukládá tyhle věci do BLOB, LARGEBLOB * do sloupečku je možné soubor z filesystému uložit přes funkci "LOAD_FILE":http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_load-file * jakmile je sloupeček typu BLOB, MySql (a) tabulku vždycky ukládá na disku (bez něj to může být i v paměti), (b) z BLOBové položky používá prvních (default 1024) znaků pro ORDER BY * jakmile MySql dělá SELECT a v prohledávaných sloupcích je BLOB, prohledává tabulky na disku a ne v paměti => je to velmi pomalé (tohle se stane třeba když udělám SELECT * FROM TABULKA_S_FILMY) * když udělám SELECT s BLOBy a pracuji s ním v aplikaci (přes result set), další krok iterace přes result set vždy čeká na dodání celého BLOBu což může zdržovat * když čtu data ze souboru a/nebo je z něj odesílám na klienta, můžu to spusit v separátním vlákně * když mám data filmů v db, zálohováním databáze se zálohují i filmy; když je mám na disku, musím krom databáze zálohovat i soubory * některé filesystémy mají problém pokud mají pracovat s řádově miliony (malých) souborů; pokud mám řádově milion (malých) souborů v BLOBech, jsou fyzicky v jednom či dvou velkých souborech příslušné tabulky * když mám filmy jen v databázi, nedostanu se k nim z jiných aplikací jednoduchým přístupem do filesystemu * "přístup k datům souborů v databázi může být pomalejší než přes filesystém":http://blog.sitek.com.au/2008/03/comparison-between-storing-imagesfiles-in-mysql-and-on-filesystem/ Best practices pro ukládání v db: * oddělit "metadata" souboru od "dat" do dvou tabulek * pro optimalizaci zasílání dat ke klientovi a/nebo práci s nimi v aplikační logice se může hodit rozdělit je do menších (např. 64KB) bloků Oboje viz http://www.dreamwerx.net/phpforum/?id=1 Vše se týká MySql ale zřejmě platí obecně pro rozumné SQL databáze. |