Зачем нужна кодировка в базе данных - PullRequest
1 голос
/ 27 февраля 2020

Я недавно пересек термин encoding. Я узнал, что кодирование используется для стандартизации различных символов. Базы данных также кодируют данные для стандартизации данных таблицы. Мой вопрос: если мой столбец содержит только десятичные числа, все еще требуется кодировка? , Кодирование имеет какое-либо отношение к объему памяти данных?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Под термином кодировка мы подразумеваем помещение значения семанти c в двоичное представление (двоичное: для большинства современных компьютерных контекстов; в теории кодирование не ограничивается компьютерными битами / байтами). Компьютеры работают не так, как мы, поэтому нам нужно все кодировать, чтобы компьютер мог интерпретировать числа. Иногда кодировка неявная, а иногда и за пределами знания ЦП.

В строгой форме кодировка (сейчас не в моде), когда вы решаете размер целого числа (и всякий раз, когда он подписан) или без знака), вы выбираете (частично) кодировку (некоторая часть все еще часто неявна: тип представления знаков со знаком, конец чисел и т. д. c.). Пока вы не читаете двоичный файл базы данных, это не имеет большого значения, но размер изменяет объем используемой памяти / диска. (обратите внимание, мы склонны называть этот тип, а не кодирование, для чисел)

Но, как вы видите, теперь кодировка часто используется для строк (с тех пор, как десятки лет мы очень заботимся о кодировка для чисел). С этим определением (и если вы видите «Unicode» или «UTF-8» или что-то подобное, это означает, что мы обсуждаем только для кодирования строки), это не имеет значения, кодировка числа, но только тип.

Но, кроме того, есть локали (например, интернационализация): вам может понадобиться специфицированная кодировка c, так что, например, разделитель тысяч будет напечатан правильно, но это может быть указано как локаль / сопоставление или как кодировка базы данных, или в клиенте (который является программой, отвечающей за отображение данных).

Итак: для памяти и диска (со стороны ядра СУБД) кодировка (в виде строкового кодирования) десятичного числа и плавает не имеет значения, просто выберите правильный тип. Для BLOB-объектов и строк значение имеет (строковое) кодирование (но также и для этого случая, вам может потребоваться проверить, какие имеются доступные кодировки в движке: иногда движок будет использовать несколько кодировок и преобразовывать их в другое в программном обеспечении, поэтому никаких изменений не будет. на диске / памяти). Примечание: числа - это числа, поэтому это не имеет большого значения, но для строки многие функции SQL зависят от кодировки и локали (например, на «стороне сервера», например, LIKE ключевое слово, сортировка и т. Д. c.) .

0 голосов
/ 27 февраля 2020

Ваш первый вопрос: если столбец содержит десятичные числа, все еще требуется кодировка?

Ответ: Столбцы в таблице могут содержать любые данные, независимо от того, представлены они в виде десятичных чисел или Другой. Каждые данные, независимо от того, в какой форме они находятся: десятичная, с плавающей запятой, символы и т. Д. c, нуждаются в кодировании для обеспечения их безопасности. Особенно, когда вы работаете с конфиденциальными данными или ищете способ упорядочить свои данные в архиве, вам следует рассмотреть кодирование ваших данных.

Ваш второй вопрос: имеет ли кодирование какое-либо отношение к объему памяти данных?.

Ответ: Поскольку кодирование удаляет избыточность из данных, размер ваших файлов будет намного меньше. Это приводит к более высокой скорости ввода при сохранении данных. Кодированные данные меньше по размеру, вы должны быть в состоянии сэкономить место на ваших устройствах хранения. Это идеально, если у вас есть большие объемы данных, которые необходимо архивировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...