2016-04-09 25 views
0

jsonとクエリの速度を保存するのには限界がありますが、私はまだDBを設計するのに苦労しています。フォームデータをJSON形式で保存する

現在、私が保存されたデータは次のようになり欄にJSONとしてcontent

をCMS(入力を持つフォーム)からのデータを格納しています:

{ 
    "heading": { 
    "value": "Taylor Francis" 
    }, 
    "sub_heading": { 
    "value": "photographer \/ artist \/ designer" 
    }, 
    "button_caption": { 
    "value": "View Work" 
    }, 
    "button_link": { 
    "value": "/work" 
    }, 
    "content": { 
    "value": "<p style=\"margin-top: 22px; margin-bottom: 22px; padding: 0px;\">A Brief History[...]" 
    } 
} 

このデータは、する必要がありますユーザーがページを更新するときにアクセスされ、解析されます。

ページを保存すると、キャッシュされたHTMLバージョンが作成されるので、表示するページを読むときにスピードが問題になるとは思わない。

私の質問は将来的にはさらに問題を作りますか?私は本当にこのデータや何かを検索する必要はありません。

私は単にそれをkey-> valueの "meta"テーブルに変換して、ページID上で結合する必要がありますか?

あるいは、その代わりに、私はすべての可能な入力のために列を追加することを考えてきました: 等

おかげ列、button_caption列をsub_heading、列見出し!

答えて

2

あなたはおそらく良いデザインです。しかし、私は "キャッシュHTMLバージョン"を取り除くことを検討するだろう。あなたはおそらく、JSONからページを「十分に速く」ビルドすることができます。このstackoverflowページを見てください。キャッシュされません。実際、多数のコンポーネントから構築されており、その多くはたぶんデータベースから動的にロードされます。

「可能なすべての入力に対して列」を持つことは、メンテナンスのために急速に悪夢となります。検索する必要のある項目の列を作成します。 JSONを他のものに使用し、アプリケーションに解析/拡張/ etcを処理させます。つまり、EAV(Entity-Attribute-Value)デザインには行かないでください。

+1

ありがとうございます!また、私はちょうどあなたの[EAV記事](http://mysql.rjweb.org/doc.php/eav)を読み終えました。キャッシングの背後にある私の推論は、json_decodingがJOINING eavテーブルよりもCPU使用率が高くなることが懸念されるためです。私はそれなしでちょうど行くべきですか? – Miro

+0

学習経験として、あなたは両方の方法でそれを試すことができます。しかし、私の推測では、JSONの解析はJOINingよりも速くなるということです。 PHPでは、 'json_decode(...、TRUE)'と 'json_encode(...)'が好きで、パフォーマンスのボトルネックに気づいていません。 –

関連する問題