Реляционная таблица - рекомендуется ли JSON? - PullRequest
0 голосов
/ 26 сентября 2018

Попытка реализовать реляционную таблицу, которая связывает пользователя с его любимыми книгами.

Итак, у меня есть таблица с book_id и user_id

Пример таблицы:

user 1 favourite 1
user 1 favourite 2
user 1 favourite 3

не могу ли я иметь что-то вроде массива JSON?

user 1 [favourite 1, favourite 2, favourite 3] ?

с точки зрения производительности лучше ли делать вещи, как в первом примере, или во втором?

Спасибо !!

Ответы [ 2 ]

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

Для прямой производительности из базы данных SQL лучше использовать таблицу соединений в соответствии с ответом Гордона Линоффа.

Если вы сериализуете / десериализуете сложные объекты, тем не менее, часто более производительно хранить объект как JSONв поле в таблице.

У меня был проект, в котором у меня была полностью нормализованная структура для поддержки графика рекламы.Это работало хорошо, пока один клиент не создал график с 40000 мест в нем.Время сохранения и загрузки большого рекламного расписания по сравнению с небольшими графиками составляло минуты против секунд.

Я изменил структуру, чтобы сохранить объект в формате JSON.Время на сериализацию, затем сохранение и десериализацию, а затем загрузку большого рекламного расписания сократилось с минут до секунд.

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

Первое решение - это таблица соединений / связей, и это рекомендуемое решение для реляционных баз данных на основе SQL.По сути, у вас есть две сущности, книги и пользователи.Соединительная таблица - это третья таблица, которая их связывает.

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

Означает ли это, что структуры JSON никогда не бывают никогдаиспользуемый?Точно нет.Они имеют свое место - некоторые базы данных даже предоставляют им поддержку индексирования.

Однако, с точки зрения базы данных, структуры JSON добавляют дополнительные издержки для извлечения значений.Они также препятствуют оптимизации.Таким образом, такой массив в строке не является выбором first для представления данных.

...