sql >> Databáze >  >> RDS >> Database

Jak vybrat správné datové typy

Vzhledem k tomu, že objem dat typické společnosti exponenciálně rostl, je optimalizace ukládání dat ještě důležitější. Velikost vašich dat neovlivňuje pouze velikost úložiště a náklady, ale také výkon dotazů. Klíčovým faktorem při určování velikosti vašich dat je datový typ, který zvolíte. Tento tutoriál vysvětlí, jak vybrat správné datové typy.

Co jsou datové typy?

Typy dat definovat, jaký druh a rozsah dat lze uložit v daném poli (nebo sloupci).

Zvažte prodejní tabulku s těmito ukázkovými záznamy:

Každé pole má svůj vlastní typ a rozsah hodnot:

purchase_time :datum a čas prodejesale_id :celočíselné hodnoty zvyšující se o jednu pro každý nový prodejcustomer_id :celočíselné hodnoty zvyšující se o jedna pro každého nového zákazníkaměna :text vždy ve 3místném kódu měnyamount_paid :peněžní reálné číselné hodnoty mezi 0,00 $ a 1 000,00 $zařízení :text, kde hodnoty mohou být:‘desktop’, ‘mobilní aplikace’ a ‘mobilní web’has_discount :boolean, kde položky mohou být TRUE nebo FALSE poznámky :text, kde záznam může být tak dlouhý, jak je povoleno v našem nástroji pro zadávání agentů (250 znaků)

Druh dat (celá čísla, text, reálná čísla atd...) a možné rozsahy hodnot (0 až 1 000; libovolné 3 znaky; atd...) odpovídají konkrétním databázovým typům dat .

Jaké jsou možné typy dat?

Různé databáze mají k dispozici různé typy dat, ale většina spadá do těchto kategorií:

Číselný:

  • celá čísla :pro čísla bez zlomků. Může být se znaménkem (povolit kladné a záporné hodnoty) nebo bez znaménka (povolit pouze kladná čísla). Běžně se používá pro pole ID a počty něčeho
  • desítkové(x,y) :pro čísla se zlomky vyžadujícími přesnou přesnost. Může být se znaménkem (povolit kladné a záporné hodnoty) nebo bez znaménka (povolit pouze kladná čísla). Běžně se používá pro peněžní pole. Uživatel zadá celkový počet platných číslic (x) a za desetinnou čárkou (y) v závorkách
  • float / doubles :pro čísla se zlomky nevyžadujícími přesnou přesnost. Může být se znaménkem (povolit kladné a záporné hodnoty) nebo bez znaménka (povolit pouze kladná čísla). Běžně se používá pro všechna reálná čísla kromě peněžních polí

Datum/čas:

datum :pro hodnoty data

  • čas :pro časové hodnoty
  • časové razítko / datum a čas :pro hodnoty data a času

Text:

  • znak(n) :pro řetězce znaků s pevnou délkou, kde hodnota v závorce určuje pevnou velikost každé položky
  • varchar(n) :pro řetězce znaků s proměnnou délkou, kde hodnota v závorce určuje maximální přijatelnou velikost každého záznamu

Booleovská hodnota:

  • logická :pro booleovské (pravda/nepravda) hodnoty. Některé databáze (jako MySQL) nemají booleovský datový typ a místo toho převádějí booleovské hodnoty na celá čísla (1=TRUE, 0=FALSE)

Většina databází nabízí varianty velikosti pro každý typ. Například MySQL poskytuje tyto možné celočíselné datové typy:

Jak vybrat správné datové typy

Základní strategií pro výběr nejlepšího datového typu je výběr nejmenšího datového typu, který odpovídá typu dat, která máte, a který umožňuje všechny možné hodnoty vašich dat.

Například customer_id v naší vzorové tabulce prodejů je celé číslo začínající 0. Dnes má naše fiktivní společnost pouze 15 000 zákazníků. Při použití tabulky celočíselných datových typů MySQL z předchozí části můžeme být v pokušení vybrat SMALLINT unsigned jako datový typ, protože se jedná o nejmenší datový typ, který bude přijímat naše aktuální celočíselné hodnoty od 0 do 15 000. Očekáváme však, že se během příštích 6–12 měsíců dostaneme na 100 000 zákazníků. Když překročíme 65 535, SMALLINT již nebude dostačující. Lepší výběr je tedy MEDIUMINT nepodepsané, což by nás mělo pokrývat několik příštích let.

Při vytváření tabulky s ukázkovými záznamy můžete nechat svou databázi vybrat datové typy za vás. To vám však zřídka poskytne nejlepší výběr datového typu. Například nechat MySQL vybrat datové typy pro prodejní tabulku s ukázkovými hodnotami zobrazenými dříve přináší několik problémů.

Problémy, se kterými se setkáváme s datovými typy automaticky vybranými MySQL, jsou:

  1. nesprávný datový typ :pole nebudete moci používat tak, jak byste očekávali. Například mít purchase_time jako řetězec a nikoli časový datový typ znamená, že na poli nebudete moci provádět časové operace (jako je například výpočet, jak dlouho uplynula od nákupu)
  2. příliš omezený :MySQL zobrazí chyby, když se pokusíte zadat hodnoty, které jsou větší, než umožňuje datový typ. Chyby se nám například zobrazí, pokud máme prodej se zaplacenou sumou 100,00 $ nebo více nebo komentář agenta, který je delší než 65 znaků.
  3. příliš konzervativní :i když nic nenaruší přílišnou konzervativností s datovými typy, budete plýtvat úložným prostorem. S našimi ukázkovými daty bychom mohli ušetřit 15 % úložiště použitím méně konzervativních preferovaných možností

Jakkoli jsou moderní databáze chytré, vlastníci dat stále nejlépe vědí, jaký druh dat se ukládá a jaké hodnoty mohou data v dohledné době nabývat. Takže musíte pečlivě specifikovat datové typy pro každé z vašich polí.

Dokumentace k datovým typům pro různé běžné databáze je k dispozici zde:

  • MySQL
  • Amazon Redshift
  • Apache Hive
  • Teradata

Závěr

Aby vaše databáze fungovala správně a byla co nejlépe optimalizovaná, je důležité pečlivě vybrat datové typy pro každé pole v tabulkách.


  1. 4 způsoby, jak chránit citlivé informace před vašimi zákazníky

  2. Importujte 'xml' do SQL Serveru

  3. Zpráva o připravenosti na online opravy R12.2

  4. Osvědčený vícejazyčný web