将播放列表轨道存储为JSON字符串或mySQL表

时间:2012-03-16 18:00:24

标签: php mysql json soundcloud

我想在mySQL表格中存储来自SoundCloud的曲目播放列表。

我想知道我是否可以拥有一张表格:

  • 播放列表ID
  • 播放列表名称
  • 曲目数组

该数组是一个JSON字符串,包含所有曲目ID及其播放顺序。

这样可以节省mySQL表方法的空间,我不会在播放列表表中存储数组,而是为存储的轨道创建另一个表:

  • track id
  • 播放列表ID
  • 跟踪订单价值

JSON字符串存储是否是个好主意?

由于

3 个答案:

答案 0 :(得分:2)

你有什么理由担心表现吗?从它的声音,你只需要几个表,可能不存储数千行。在如此极少的使用情况下,MySQL将表现完美。就个人而言,我说准确地为RDBMS建模您的数据,并且只在实际开始出现性能问题时担心性能。通过准确地为您建模数据,您可以解决其他人在搜索曲目时遇到的问题。它还可以轻松查看特定曲目的播放列表。我对表格有这个:

播放列表

  • 播放列表ID
  • 播放列表名称

轨道

  • 曲目ID
  • 曲目名称

PlaylistTracks

  • 播放列表ID
  • 曲目ID
  • 跟踪订单

在遇到性能问题之前尝试防止性能问题几乎总是一个坏主意。谁说编码/解码JSON表示不会比MySQL慢?如果潜在的性能问题实际上不存在,为什么要放弃对数据建模的增强功能呢?

答案 1 :(得分:1)

我在单个json字段中存储轨道信息时看到的直接缺陷是您无法轻松搜索。您将需要在很可能没有良好索引的大字段上使用“LIKE”操作。字母数字索引对它们有长度限制。我认为它是255个字符,但您可能需要验证它。这也意味着你使用的许多字符都必须是唯一的,但是使用json,你会在字符串的开头就占用大量的空间和编码开销。

答案 2 :(得分:0)

如果您不打算在播放列表中搜索,我想这并不是那么糟糕。 NoSQL摇滚:))