Поддерживает ли MariaDB собственный тип данных столбца JSON?


13

Я не говорю о динамических столбцах, я спрашиваю о типе данных JSON для собственных столбцов. Проще говоря, могу ли я запустить следующий код на любой версии MariaDB?

CREATE TABLE example (names JSON);

Насколько я знаю, это не так, но я все еще не уверен, так как есть много тем, говорящих о поддержке JSON на MariaDB целую вечность, но никто не сказал, что она наконец реализована.

-- Обновить --

Только что обнаружил три проблемы, все еще открытые на MariaDB Jira о поддержке типов данных JSON, что означает, что она еще не реализована, верно?


Это обновление не должно быть в вопросе, это ответ. Вы должны убрать это и ответить на себя. @Omranic.
Эван Кэрролл

> JSON - это псевдоним для LONGTEXT, представленный в целях совместимости с типом данных MySQL JSON. mariadb.com/kb/en/library/json-data-type
zx1986

Ответы:


7

Поддержка JSON появится в MariaDB 10.2. Смотрите официальное сообщение в блоге MariaDB от 28.02.2017. Есть несколько примеров операторов SQL и проверки.

JSON быстро становится стандартным форматом для обмена данными и неструктурированных данных, а MariaDB 10.2 добавляет ряд вспомогательных функций JSON, хотя тип данных JSON еще не реализован. Есть несколько причин, по которым не существует тип данных JSON, но одна из них заключается в том, что на самом деле преимуществ не так много, поскольку JSON представляет собой текстовый формат. Цель этого блога - описать JSON и варианты его использования, а также описать функции JSON MariaDB 10.2 и их использование, а также показать некоторые другие дополнения к MariaDB 10.2, которые полезны для обработки JSON.


2
До 10.2.6 пока не поддерживается нативный JSON.
kittygirl

1
Они хранят JSON в виде простого текста только по состоянию на 10.3
Муса Хайдари

5

Это зависит от того, что вы имеете в виду, когда говорите «тип данных». Некоторые базы данных, такие как PostgreSQL, имеют тип данных JSON, который позволяет полнотекстовый поиск, механизм двоичного хранения, индексацию и полный набор операторов для доступа к данным. У Марии этого еще нет. Тип данных специально отслеживается MDEV-9144 .

Даже несмотря на это, привносит очень ограниченный тип в MySQL, от одного из сопровождающих ошибок,

Тип данных JSON прямо противоречит стандарту SQL, что говорит о том, что функции JSON_ * принимают строку в качестве аргумента. Кроме того, для быстрой работы MariaDB не требуется двоичный JSON, согласно нашим тестам, наш анализатор JSON работает с текстовым JSON так же быстро, как MySQL с двоичным JSON. То есть в MariaDB можно было использовать VARCHAR или TEXT для JSON. Если требуется проверка, это можно сделать с помощью ограничения CHECK:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Мы добавим JSON «тип» для совместимости с MySQL.

Из моего чтения, это не совсем точка бинарного JSON, давайте обратимся к документации MySQL

Бинарный формат структурирован так, чтобы сервер мог искать подобъекты или вложенные значения непосредственно по ключу или индексу массива, не считывая все значения до или после них в документе.

Опять же, PostgreSQLjsonb делает гораздо больше, чем это.

Данные jsonb хранятся в разложенном двоичном формате, что делает его немного медленнее для ввода из-за дополнительных издержек преобразования, но значительно быстрее для обработки, поскольку повторное анализирование не требуется. jsonb также поддерживает индексирование, что может быть существенным преимуществом.

tldr; Maria DB еще не имеет тип JSON. Даже когда он получает «тип», это всего лишь тонкая оболочка для проверки текста (как jsonтип PostgreSQL ). Нет никаких планов для бинарного типа JSON (например, PostgreSQL jsonb), потому что разработчики, похоже, не понимают преимуществ.


Пользователю действительно все равно, хранится ли JSON в Postgres, составленным или разложенным, является ли json двоичным или нет. Для JSON важно: а) что вы поставите, вы получите, и есть возможность проверить правильность ввода. б) вы можете индексировать и искать части JSON. 3) Есть функции для работы с ним.
Владислав Вайнтроб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.