sql >> Databáze >  >> RDS >> PostgreSQL

Ukládání dlouhých binárních (surová data) řetězců

Pokud jde o PostgreSQL pokud se to týká, zadejte text nepřichází v úvahu. Je pomalejší, zabírá více místa a je náchylnější k chybám než bytea za tímto účelem.

V zásadě existují 3 přístupy:

  1. Použijte typ bytea (v podstatě ekvivalent pg typu blob SQL).

  2. Použijte „velké objekty ".

    ."
  3. Ukládejte objekty BLOB jako soubory v systému souborů a uložit pouze název souboru do databáze.

Každý má své výhody a nevýhody.

1. manipulace je poměrně jednoduchá, ale vyžaduje nejvíce místa na disku. Je vyžadováno určité dekódování a kódování, takže je také pomalé. Velikost záloh rychle narůstá!

2. manipulace je trochu nešikovná, ale máte vlastní infrastrukturu pro manipulaci s bloby - pokud byste to potřebovali. A můžete snadněji vytvářet samostatné zálohy.

3. je zdaleka nejrychlejší způsob a využívá nejméně místa na disku. Neposkytuje však referenční integritu, kterou získáte při ukládání do databáze.

Mám řadu implementací, jako je tato pro soubory obrázků:uložte malou miniaturu v bajtovém poli pro referenční integritu a rychlou referenci. Uložte původní obraz jako soubor v systému souborů. Samozřejmě se musíte zamyslet nad tím, kdy a jak odstranit zastaralé soubory, jak zálohovat externí soubory a podobně.



  1. Jak povolit trasování v aplikacích Oracle r12

  2. Vložit MySQL do více tabulek? (Normalizace databáze?)

  3. Jak naplánovat uloženou proceduru v MySQL

  4. Jak omezit výsledky v Oracle