Может ли это повлиять на структуру данных, повлечь утерю информации? В самих строках текущих varchar столбцов хранится json
Могут потеряться данные. По сути вы текст превращаете в binary. Так как тип json сохраняет точную копию введённого текста, он сохраняет семантически незначащие пробелы между элементами, а также порядок ключей в JSON-объектах. И если JSON-объект внутри содержит повторяющиеся ключи, этот тип сохранит все пары ключ/значение. (Функции обработки будут считать действительной последнюю пару.) Тип jsonb, напротив, не сохраняет пробелы, порядок ключей и значения с дублирующимися ключами. Если во входных данных оказываются дублирующиеся ключи, сохраняется только последнее значение.
Если был не валидный json, jsonb хранит только одну копию ключа, если есть повторы в json, типа {"a":1,"a":2 }, то результат будет {"a":2 }
А запросы по json делаете? Если не делать where по джейсону, то тип json будет потреблять намного меньше места, чем jsonb
Обсуждают сегодня