2012-03-16 34 views
0

我想將SoundCloud中的軌道播放列表存儲在mySQL表中。將播放列表軌道存儲爲JSON字符串或mySQL表格

我在想,如果我能有一個表具有:

  • 播放列表ID
  • 播放列表名稱
  • 陣列軌道

的陣列是包含JSON字符串的所有跟蹤ID和他們的播放順序。

這將節省超過MySQL表方法的空間,我不會存儲在播放表中的數組,但創建另一個表音軌專賣店:

  • 軌道ID
  • 播放列表ID
  • 軌道訂單值

JSON字符串存儲是一個好主意嗎?

感謝

+1

[MySQL JSON Storage vs Two Tables]的可能重複(http://stackoverflow.com/questions/5283757/mysql-json-storage-vs-two-tables) - 也有類似的問題。如果你想存儲數據*序列化*或者它的*標準化形式*,你需要指導。 – hakre 2012-03-16 18:10:49

回答

2

您是否有任何理由擔心表現?從它的聲音中,你只需要幾張表,可能不會存儲數千行。 MySQL在這種最低限度的使用情況下表現會很好。就我個人而言,我說準確地爲RDBMS建模數據,並且只在實際開始出現性能問題時擔心性能。通過準確建模您的數據,您可以解決其他人在搜索曲目時遇到的問題。它還可以輕鬆查看特定曲目的播放列表。我已經有了這個爲表:

播放列表

  • 播放列表ID
  • 播放列表名稱

軌道

  • 軌道ID
  • 曲目名稱

PlaylistTracks

  • 播放列表ID
  • 軌道ID
  • 訂單

試圖防止發生性能問題,你有性能問題之前,幾乎總是一個壞主意。誰會說編碼/解碼JSON表示不會比MySQL慢?如果潛在的性能問題實際上並不存在,爲什麼放棄增強的數據建模功能?

+0

好的這對我來說很有意義,我只是想知道這是不是一個好主意。而不是,謝謝 – 2012-03-16 18:47:28

0

如果你不打算播放列表裏面搜索,我想這是沒有那麼糟糕。 NoSQL rocks :)

1

我在單個json字段中存儲跟蹤信息時看到的直接缺陷是您無法輕鬆搜索。您將需要在大型字段上使用'LIKE'操作,該字段很可能沒有好的索引。字母數字索引對它們有長度限制。我認爲這是255個字符,但您可能需要驗證它。這也意味着無論你使用多少個字符作爲索引必須是唯一的,但是使用json時,你會在字符串的開始處佔用大量的編碼開銷空間。

相關問題