2016-07-08 12 views
0

私はアプリケーションを構築していて、データベースレイヤーを構築しているときに、複数のアイテムをJSONとして保存したり、保存するには?MYSQLでJSONデータを保存する - パフォーマンスへの影響

いつデータベースにJSONを保存する必要がありますか?

JSONをデータベースに格納するメリットとデメリットは何ですか?

例では、検索や索引付けを必要としないすべての列に対して、値をJSON配列に格納するのが最適でしょうか、複数の場所に正規化されたデータ表を作成する必要があります列?

+1

jsonは単なるテキストです。それは他のテキストと同じ "コスト"を持っています。あなたが** json内のデータの個々のチャンクに対処する必要はありません**場合は、コストはゼロです。それは単なるテキストです。個々のチャンクにアクセスする必要がある場合、コストは膨大です。つまり、mysqlはjsonが何であるかを知りません。つまり、文字列操作を使用してデータのチャンクにアクセスしたり、jsonをクライアントに吸い込んでデコードしたりする必要があります。 –

+1

あなたが5.7でないかぎり、[this](http://stackoverflow.com/a/33661590)と5.7のドキュメント検証を参照してください。コミュニティは、偏見のない典型的なビジネスシナリオをjsonなし。数百万行メトリックを表示します。 – Drew

答えて

0

例:検索や索引付けを必要としないすべての列について、MySQLで絶対にJSONデータを使用できます。

論理的には、正規化された データテーブルではなく、ストレージメモリを保存することができます。したがって、 のケースでは、MySQLのJSONストレージをうまく使用することができます。

さらに、可能なストレージタイプの詳細については、JSONまたはARRAYSで詳しく説明したいと思います。私にとっては、通常、JSONストレージではなくシリアル化された配列を使用します。 ARRAYS、オブジェクトクラス/配列のシリアライズされていない方がパフォーマンスは優れていますが、PHPの場合にのみ使用できます(PHPでシリアル化されていない関数& &)。あなたのための選択:

PHPでのみデータを使用していますか? yesの場合:配列、noの場合: JSON。

さらに次の議論を見ることができます:JSON vs. Serialized Array in database。がんばろう !

0

リレーショナルデータベースでは、常にnormalizeを試してください。このような観点から見ると、json文字列を格納するのは間違っています。

JSONのコンテンツを操作したりクエリしたりしない限り、パフォーマンスには影響しません。つまり、プライマリキーで設定して取得するだけです。

一般的にオブジェクトを保存したい場合は特別なケースではありませんが、MongoDBのようにNoSQL Databaseをご覧ください。これは、オブジェクトの格納および受信用です。たぶんそれはあなたのために何か、多分そうではないかもしれません。親指の私のルールがある、と述べた


:XML/JSON使用し、

  • あなただけの1行を持つテーブルで終わる場合(ConfigIDのを| XML/JSON)
  • あなたの場合複数の行で終わる、正規化する
関連する問題