Хранение треков списка воспроизведения в виде строки JSON или таблиц mySQL - PullRequest
0 голосов
/ 16 марта 2012

Я хочу сохранить список воспроизведения треков из SoundCloud в таблице mySQL.

Мне было интересно, могу ли я иметь одну таблицу с:

  • id списка воспроизведения
  • имя списка воспроизведения
  • массив дорожек

Массив, представляющий собой строку JSON, содержащую все идентификаторы дорожек и порядок их воспроизведения.

Это позволит сэкономить местометод таблицы mySQL, в котором я не буду хранить массив в таблице списков воспроизведения, а создаю другую таблицу для дорожек, в которой хранятся:

  • идентификатор дорожки
  • идентификатор списка воспроизведения
  • дорожкастоимость заказа

Является ли хранение строк JSON хорошей идеей или нет?

Спасибо

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

Есть ли причина, по которой вы беспокоитесь о производительности?Судя по звукам, вам нужно всего несколько таблиц и, вероятно, не хранить тысячи строк.MySQL будет отлично работать при таком минимальном использовании.Лично я говорю, что моделируйте ваши данные точно для RDBMS и беспокоитесь о производительности только тогда, когда у вас действительно возникают проблемы с производительностью.Точно моделируя ваши данные, вы решаете проблемы, о которых говорили другие, с поиском треков.Это также позволяет легко увидеть, в каких списках воспроизведения находится конкретная дорожка. Я хотел бы иметь это для таблиц:

Список воспроизведения

  • Идентификатор списка воспроизведения
  • Имя списка воспроизведения

Трек

  • Идентификатор трека
  • Название трека

PlaylistTracks

  • Идентификатор плейлиста
  • идентификатор дорожки
  • порядок дорожек

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

1 голос
/ 16 марта 2012

Непосредственный недостаток, который я вижу при хранении информации о треке в одном поле json, заключается в том, что вы не сможете легко искать.Вам нужно будет использовать операцию «LIKE» для большого поля, которое, скорее всего, не будет иметь хорошего индекса. Буквенно-цифровые индексы имеют ограничение по длине.Я думаю, что это 255 символов, но вам может понадобиться проверить это.Это также означает, что, несмотря на то, что многие символы, которые вы используете в качестве индекса, должны быть уникальными, но с помощью json вы потратите много места с накладными расходами кодирования прямо в начале вашей строки.

0 голосов
/ 16 марта 2012

Если вы не планируете искать внутри своих плейлистов, я думаю, это не так уж плохо. NoSQL качается:)

...