0

SoundCloudのトラックのプレイリストをmySQLテーブルに保存したい。

私は私が1つのテーブルを持つことができるかどうか疑問に思っていました:

  • プレイリストID
  • プレイリスト名
  • トラックの配列

配列は、すべてのトラックIDとその再生順序を含むJSON文字列です。

これにより、mySQLテーブルメソッドよりもスペースを節約できます。この場合、プレイリストテーブルに配列を格納せずに、以下を格納するトラック用に別のテーブルを作成します。

  • トラックID
  • プレイリストID
  • 注文値を追跡する

JSON文字列ストレージは良い考えですか?

ありがとう

4

3 に答える 3

2

パフォーマンスが気になる理由はありますか?その音からすると、必要なテーブルは数個だけで、おそらく数千行を格納しているわけではありません。MySQLは、このような最小限の使用で完全に機能します。個人的には、RDBMSのデータを正確にモデル化し、実際にパフォーマンスの問題が発生し始めたときにのみパフォーマンスについて心配します。データを正確にモデル化することで、他の人がトラックの検索で話している問題を解決します。また、特定のトラックがどのプレイリストにあるかを簡単に確認できます。テーブル用にこれを用意します。

プレイリスト

  • プレイリストID
  • プレイリスト名

追跡

  • トラックID
  • トラック名

プレイリストトラック

  • プレイリストID
  • トラックID
  • 注文を追跡する

パフォーマンスの問題が発生する前にパフォーマンスの問題を防止しようとすることは、ほとんどの場合、悪い考えです。JSON表現のエンコード/デコードがMySQLより遅くなることはないと誰が言いますか?潜在的なパフォーマンスの懸念が実際にないのに、なぜデータを正確にモデル化する拡張機能をあきらめるのですか?

于 2012-03-16T18:15:03.243 に答える
1

トラック情報を単一のjsonフィールドに保存することで私が目にする直接の欠陥は、簡単に検索できないことです。大きなフィールドで「LIKE」操作を使用する必要があります。この操作では、適切なインデックスが作成されない可能性があります。英数字インデックスには、長さの制限があります。255文字だと思いますが、確認が必要な場合があります。これは、インデックスとして使用する多くの文字が一意である必要があることも意味しますが、jsonを使用すると、文字列の先頭にあるエンコードのオーバーヘッドで多くのスペースを消費します。

于 2012-03-16T18:08:20.877 に答える
0

プレイリスト内を検索する予定がない場合は、それほど悪くはないと思います。NoSQLは素晴らしいです:)

于 2012-03-16T18:03:25.693 に答える