Database
 sql >> база данни >  >> RDS >> Database

Как да изберете правилните типове данни

Тъй като количеството данни на типичната компания нараства експоненциално, става още по-критично за оптимизиране на съхранението на данни. Размерът на вашите данни не само оказва влияние върху размера и разходите за съхранение, но също така влияе върху ефективността на заявката. Ключов фактор при определянето на размера на вашите данни е избраният от вас тип данни. Този урок ще обясни как да изберете правилните типове данни.

Какво представляват типовете данни?

Типове данни дефинирайте какъв вид и обхват от данни могат да се съхраняват в дадено поле (или колона).

Помислете за таблица за продажби с тези примерни записи:

Всяко поле има свой собствен тип и диапазон от стойности:

време_за_покупка :дата и час на продажбаsale_id :целочислени стойности, нарастващи с едно за всяка нова продажбаcustomer_id :целочислени стойности, нарастващи с едно за всеки нов клиентвалута :текст винаги в 3-знаковия код на валутатаamount_paid :парични реални числови стойности между $0,00 и $1,000,00устройство :текст, където стойностите могат да бъдат:„desktop“, „mobile app“ и „mobile web“has_discount :булев, където записите могат да бъдат TRUE или FALSE бележки :текст, където записът може да бъде толкова дълъг, колкото е позволено в нашия инструмент за въвеждане на агент (250 знака)

Видът на данните (цели числа, текст, реални числа и т.н...) и възможните стойности (от 0 до 1000; произволни 3 знака и т.н.) съответстват на конкретни типове данни на базата данни .

Какви са възможните типове данни?

Различните бази данни имат различни типове данни, но повечето се вписват в следните категории:

Числово:

  • цели числа :за числа без дроби. Може да бъде със знак (позволява положителни и отрицателни стойности) или без знак (позволява само положителни числа). Обикновено се използва за полета за идентификация и преброяване на нещо
  • десетична(x,y) :за числа с дроби, изискващи точна точност. Може да бъде със знак (позволява положителни и отрицателни стойности) или без знак (позволява само положителни числа). Обикновено се използва за парични полета. Потребителят посочва общия разрешен брой значими цифри (x) и след десетичната запетая (y) в скоби
  • поплавък / удвояване :за числа с дроби, които не изискват точна точност. Може да бъде със знак (позволява положителни и отрицателни стойности) или без знак (позволява само положителни числа). Обикновено се използва за всички реални числа, с изключение на паричните полета

Дата/час:

дата :за стойности на дата

  • време :за времеви стойности
  • клеймо за време / дата и час :за стойности на дата и час

Текст:

  • знак(n) :за низове от знаци с фиксирана дължина, където стойността в скобите диктува фиксирания размер на всеки запис
  • varchar(n) :за низове от знаци с променлива дължина, където стойността в скобите диктува максималния приет размер на всеки запис

Булев:

  • булева :за булеви (true/false) стойности. Някои бази данни (като MySQL) нямат булев тип данни и вместо това преобразуват булеви стойности в цели числа (1=TRUE, 0 =FALSE)

Повечето бази данни предлагат вариации на размера за всеки тип. Например MySQL предоставя следните възможни целочислени типове данни:

Как да изберете правилните типове данни

Основната стратегия за избор на най-добрия тип данни е да изберете най-малкия тип данни, който съответства на типа данни, който имате, и който позволява всички възможни стойности на вашите данни.

Например customer_id в нашата примерна таблица за продажби е цяло число, започващо с 0. Днес нашата измислена компания има само 15 000 клиенти. Използвайки таблицата с целочислени типове данни на MySQL от предишния раздел, може да се изкушим да изберем SMALLINT unsigned като тип данни, тъй като това е най-малкият тип данни, който ще приеме нашите текущи цели числа от 0 до 15 000. Очакваме обаче да достигнем до 100 000 клиенти през следващите 6-12 месеца. Когато преминем над 65 535, SMALLINT вече няма да е достатъчно. Следователно, по-добър избор е MEDIUMINT неподписан, което трябва да ни покрие през следващите няколко години.

Можете да позволите на вашата база данни да избира типове данни вместо вас, когато създавате вашата таблица с примерни записи. Това обаче рядко ще ви даде най-добрия избор на тип данни. Например, оставянето на MySQL да избере типовете данни за таблица за продажби с показаните по-рано примерни стойности дава няколко проблема.

Проблемите, които срещаме с автоматично избраните типове данни от MySQL са:

  1. грешен тип данни :няма да можете да използвате полето по начина, по който бихте очаквали. Например, като имате purchase_time като низ, а не тип данни за време, означава, че няма да можете да извършвате времеви операции (като например изчисляване на колко време е минало от покупката) на полето
  2. твърде ограничен :MySQL ще даде грешки, когато се опитате да въведете стойности, които са по-големи от това, което позволява типът данни. Например, ще получим грешки, ако имаме разпродажба със сума_платена от $100,00 или повече или agent_comment, който е по-дълъг от 65 знака
  3. твърде консервативен :макар че нищо няма да се счупи от прекалено консервативно отношение към типовете данни, ще губите място за съхранение. С нашите примерни данни бихме могли да спестим 15% от хранилището, като използваме по-малко консервативните предпочитани опции

Колкото и умни да са съвременните бази данни, собствениците на данните все още знаят най-добре какъв вид данни се съхраняват и какви са възможните стойности, които данните могат да приемат в обозримо бъдеще. Така че трябва внимателно да посочите типовете данни за всяко от вашите полета.

Тук е предоставена документация за типове данни за различни общи бази данни:

  • MySQL
  • Червено изместване на Amazon
  • Apache Hive
  • Терадата

Заключение

За да може вашата база данни да функционира правилно и да бъде възможно най-оптимизирана, важно е внимателно да изберете типовете данни за всяко поле във вашите таблици.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на данни, защитени с Azure Key Vault от Linux

  2. TCL команди в SQL

  3. Лоши навици :Фокусиране само върху дисковото пространство при избора на ключове

  4. Управление на вашата MS SQL репликация

  5. Как да сравним два реда от една и съща таблица