Odpověď:Zdá se, že text je v mnoha DBMS zastaralý, takže je lepší použít buď blob nebo varchar s vysokým limitem (a s blobem nebudete mít žádné problémy s kódováním, což je hlavní problém s varcharem a textem) .
Jak je také uvedeno v tomto vláknu na fórech MySQL Pevné disky jsou levnější než software, takže raději nejprve navrhněte svůj software a zprovozněte jej, a teprve poté, pokud bude problém s místem, možná budete chtít tento aspekt optimalizovat. Nepokoušejte se tedy příliš brzy přeoptimalizovat velikost sloupce, raději nejprve nastavte velikost větší (a navíc se tím vyhnete bezpečnostním problémům).
O různých komentářích:Příliš mnoho SQL fanatismu. Přestože mám SQL a relační modely velmi rád, mají také svá úskalí.
Ukládání serializovaných dat do databáze tak, jak jsou (jako je ukládání dat ve formátu JSON nebo XML) má několik výhod:
- Můžete mít flexibilnější formát dat:přidávat a odebírat pole za běhu, měnit specifikaci polí za běhu atd...
- Menší nesoulad impedance s objektovým modelem:data ukládáte a načítáte přesně tak, jak jsou ve vašem programu, ve srovnání s načítáním dat a jejich následným zpracováním a převodem mezi strukturami vašich programových objektů a strukturami vaší relační databáze .
A existuje mnohem více dalších výhod, takže prosím žádný fanboyismus:relační databáze jsou skvělý nástroj, ale nezavrhujme další nástroje, které můžeme získat. Čím více nástrojů, tím lépe.
Pokud jde o konkrétní příklad použití, mám tendenci přidávat pole JSON do své databáze pro ukládání dalších parametrů záznamu, kde sloupce (vlastnosti) dat JSON nikdy nebudou SELECT' jednotlivě, ale pouze v případě správného záznamu. je již vybráno. V tomto případě mohu stále rozlišovat své záznamy podle relačních sloupců, a když je vybrán správný záznam, mohu použít další parametry pro jakýkoli účel.
Takže moje rada, abyste zachovali to nejlepší z obou světů (rychlost, serializovatelnost a strukturální flexibilitu), stačí použít několik standardních relačních sloupců, které budou sloužit jako jedinečné klíče k rozlišení mezi vašimi řádky, a poté použít sloupec blob/varchar, kde budou vaše serializovaná data být vložen. Obvykle jsou pro jedinečný klíč vyžadovány pouze dva/tři sloupce, takže to nebude velká režie.
Také by vás mohl zajímat PostgreSQL, který má nyní datový typ JSON, a projekt PostSQL přímo zpracovávat pole JSON stejně jako relační sloupce.