Ponieważ ilość danych typowej firmy rośnie wykładniczo, optymalizacja przechowywania danych staje się jeszcze ważniejsza. Rozmiar danych wpływa nie tylko na rozmiar i koszty przechowywania, ale także na wydajność zapytań. Kluczowym czynnikiem przy określaniu rozmiaru danych jest wybrany typ danych. Ten samouczek wyjaśni, jak wybrać odpowiednie typy danych.
Co to są typy danych?
Typy danych określ rodzaj i zakres danych, które mogą być przechowywane w danym polu (lub kolumnie).
Rozważ tabelę sprzedaży z następującymi przykładowymi rekordami:
Każde pole ma swój własny typ i zakres wartości:
czas_zakupu :data i godzina sprzedażysale_id :wartości całkowite zwiększające się o jeden dla każdej nowej sprzedażycustomer_id :wartości całkowite zwiększające się o jeden dla każdego nowego klientawaluta :tekst zawsze w 3-znakowym kodzie walutyamount_paid :pieniężne rzeczywiste wartości liczbowe od 0,00 do 1000,00 USDurządzenie :tekst, gdzie wartościami mogą być:„komputer”, „aplikacja mobilna” i „internet mobilny”has_discount :wartość logiczna, gdzie wpisy mogą mieć wartość TRUE
lub FALSE
notatki :tekst, w którym wpis może być tak długi, jak jest to dozwolone w naszym narzędziu do wprowadzania danych agenta (250 znaków)
Rodzaj danych (liczby całkowite, tekst, liczby rzeczywiste itp.) i możliwe zakresy wartości (od 0 do 1000; dowolne 3 znaki; itp.) odpowiadają określonym typom danych w bazie danych .
Jakie są możliwe typy danych?
Różne bazy danych mają dostępne różne typy danych, ale większość z nich pasuje do tych kategorii:
Liczbowo:
- liczby całkowite :dla liczb bez ułamków. Może być ze znakiem (dopuszczaj wartości dodatnie i ujemne) lub bez znaku (dopuszczaj tylko liczby dodatnie). Powszechnie używane do pól identyfikatorów i zliczania czegoś
- dziesiętny(x,y) :dla liczb z ułamkami wymagającymi dokładnej precyzji. Może być ze znakiem (dopuszczaj wartości dodatnie i ujemne) lub bez znaku (dopuszczaj tylko liczby dodatnie). Powszechnie używany w polach monetarnych. Użytkownik określa liczbę cyfr znaczących dozwolonych łącznie (x) i po przecinku (y) w nawiasach
- float / podwaja się :dla liczb z ułamkami, które nie wymagają dokładnej precyzji. Może być ze znakiem (dopuszczaj wartości dodatnie i ujemne) lub bez znaku (dopuszczaj tylko liczby dodatnie). Powszechnie używane dla wszystkich liczb rzeczywistych z wyjątkiem pól monetarnych
Data/godzina:
data :dla wartości dat
- czas :dla wartości czasu
- sygnatura czasowa/data i godzina :dla wartości daty i czasu
Tekst:
- znak(n) :dla ciągów znaków o stałej długości, gdzie wartość w nawiasie określa stały rozmiar każdego wpisu
- varchar(n) :dla ciągów znaków o zmiennej długości, gdzie wartość w nawiasie określa maksymalny dopuszczalny rozmiar każdego wpisu
Boole'owskie:
- wartość logiczna :dla wartości logicznych (prawda/fałsz). Niektóre bazy danych (np. MySQL) nie mają typu danych logicznych i zamiast tego konwertują wartości logiczne na liczby całkowite (1=PRAWDA, 0=FAŁSZ)
Większość baz danych oferuje różne rozmiary dla każdego typu. Na przykład MySQL udostępnia następujące możliwe typy danych całkowitych:
Jak wybrać odpowiednie typy danych
Podstawową strategią wyboru najlepszego typu danych jest wybranie najmniejszego typu danych, który pasuje do rodzaju danych, które posiadasz i który pozwala na uzyskanie wszystkich możliwych wartości danych.
Na przykład customer_id
w naszej przykładowej tabeli sprzedaży jest liczba całkowita zaczynająca się od 0. Dziś nasza fikcyjna firma ma tylko 15 000 klientów. Używając tabeli typów danych MySQL z poprzedniej sekcji, możemy pokusić się o wybranie SMALLINT
unsigned jako typ danych, ponieważ jest to najmniejszy typ danych, który akceptuje nasze bieżące wartości całkowite od 0 do 15 000. Spodziewamy się jednak, że w ciągu najbliższych 6-12 miesięcy dotrzemy do 100 000 klientów. Kiedy przekroczymy 65 535, SMALLINT
już nie wystarczy. Dlatego lepszym wyborem jest MEDIUMINT
niepodpisany, który powinien obejmować nas przez kilka następnych lat.
Możesz pozwolić swojej bazie danych wybrać typy danych podczas tworzenia tabeli z przykładowymi rekordami. Jednak rzadko daje to najlepszy wybór typu danych. Na przykład, pozwolenie MySQL na wybranie typów danych dla tabeli sprzedaży z przykładowymi wartościami pokazanymi wcześniej stwarza kilka problemów.
Problemy, które napotykamy w przypadku automatycznie wybranych typów danych MySQL to:
- niewłaściwy typ danych :nie będziesz mógł korzystać z pola w sposób, jakiego byś oczekiwał. Na przykład mając
purchase_time
jako ciąg, a nie jako typ danych czasu oznacza, że nie będziesz w stanie wykonywać operacji czasowych (takich jak obliczanie czasu od zakupu) na polu - zbyt ograniczone :MySQL wyświetli błędy, gdy spróbujesz wprowadzić wartości, które są większe niż pozwala na to typ danych. Na przykład otrzymamy błędy, jeśli mamy sprzedaż z kwotą_zapłaconą w wysokości 100,00 USD lub większą lub komentarz_agenta dłuższy niż 65 znaków
- zbyt konserwatywny :podczas gdy nic nie stanie się zbyt konserwatywne w przypadku typów danych, będziesz marnować miejsce na dane. Dzięki naszym przykładowym danym możemy zaoszczędzić 15% miejsca na dane, korzystając z mniej konserwatywnych preferowanych opcji
Choć nowoczesne bazy danych są inteligentne, właściciele danych nadal najlepiej wiedzą, jakie dane są przechowywane i jakie są możliwe wartości, jakie dane mogą przyjąć w przewidywalnej przyszłości. Musisz więc dokładnie określić typy danych dla każdego pola.
Dokumentacja dotycząca typów danych dla różnych popularnych baz danych znajduje się tutaj:
- MySQL
- Amazońskie przesunięcie ku czerwieni
- Ula Apache
- Teradane
Wniosek
Aby baza danych działała poprawnie i była maksymalnie zoptymalizowana, ważne jest, aby starannie wybrać typy danych dla każdego pola w tabelach.