Каков тип данных для хранения объекта json в postgresql? - PullRequest
0 голосов
/ 30 сентября 2018

Я очень новичок в postgresql.

Я хочу сохранить объект json в базе данных postgresql.

{
  "host": "xxx.xxx.xx.xx"
  "type": "OS"
}

Подскажите, пожалуйста, какой тип данных мне использовать в postgresql.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Если ваши данные всегда содержат одну и ту же простую структуру, я не вижу причин хранить их как JSON.Вам следует подумать о том, чтобы просто хранить его в таблице со столбцами host и type.

INSERT INTO table(my_host_column, my_type_column) VALUES
(my_json ->> 'host', my_json ->> 'type');

Это значительно упрощает многие вещи (поиск, обновление, ...).В вашем случае Postgres предлагает тип inet для столбцов IP-адресов.Такой столбец может проверять достоверность вашего host, например (https://www.postgresql.org/docs/current/static/datatype-net-types.html)

. Вы можете в любой момент восстановить JSON с помощью json_build_object('host', my_host_column, 'type', my_type_column) (https://www.postgresql.org/docs/current/static/functions-json.html)).


Но если вы все еще хотите сохранить JSON как есть:

Если вы не хотите ничего с ним делать, сохраните его как тип text (что яопределенно не рекомендую, так как вы не знаете, что принесет будущее.) Если вы хотите использовать функции JSON в Postgres, вы должны сохранить его как json или jsonb тип (https://www.postgresql.org/docs/current/static/datatype-json.html).

jsonb имеет в основном накладные расходы на экономию места (больше метаданных), но часто значительно быстрее в операциях.

Дальнейшее чтение :

ПояснениеJSONB, представленный PostgreSQL

https://www.compose.com/articles/faster-operations-with-the-jsonb-data-type-in-postgresql/ttps://www.compose.com/articles/faster-operations-with-the-jsonb-data-type-in-postgresql/

0 голосов
/ 30 сентября 2018

Просто сохраните их как текстовый тип, если взаимодействие не требуется (посмотрите максимальный размер для текстового типа данных).В противном случае Postgresql поддерживает JSON.Поэтому просто прочитайте соответствующую документацию https://www.postgresql.org/docs/9.6/static/datatype-json.html

Преимущество типов JSON заключается в том, что Postgresql анализирует содержимое, и вы можете использовать его позже для операторов SELECT с учетом структуры данных JSON.

...