2013-03-13 12 views
8

JSONデータをMySQLテーブル行に保存することはできますか?私はmysqlデータベースに配列を格納する必要があります。問題は、各ユーザーに必要な列の数がわからないことです。だから私は例のためのarrayという名前の行にJSONを格納すると思った。これが最善の方法ですか?MySQLデータベースにJSONを保存していますか?

編集:また

、私はテーブルの列の型としてtextを使用しています。

+3

JSONデータ(その中の特定のプロパティのクエリなど)で何かをする必要があることが分かっている場合は、どうしたらよいのですか...どのような場合でも本当に良い方法ではありません。 –

+0

異なるユーザーに異なる量の列が必要なのはなぜですか? – beny23

+0

@Pekka面白いですか? – user1947561

答えて

12

はい、キー値ストアとしてmysqlを使用することは非常に良いアイデアです。実際には、一部の用途ではFacebookがそうです。

CREATE TABLE `json` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `data` blob NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

上記のテーブル構造はあなたを遠ざけます。断片化やクラスタリングは非常に簡単です。

編集:ここでのポイントは、PHP、Rubyなどを使用してjson/dataを処理することです。 SELECT ...を編集してからINSERT ... ON DUPLICATE KEY UPDATE ...を編集してください。

+0

OPはJSONのデータの一部を照会する必要があるかもしれないので、これは最良のアイデアではないかもしれません。 –

+5

さて、それは疑問ではありません... – Gustav

+1

ええ、私は知っています。彼はそれをこの質問に対するコメントとして付け加えた。 –

0

これは問題ではありません。 mySQLは、大部分の括弧とファンキーな文字をテキストフィールドで処理できます。

0

だと思います。 4か月後に、エンティティに新しい属性を追加するか、エンティティからいくつかの属性を削除することになりますか?あなたは古いjsonのコンテンツをどのように解析しますか?テーブルに必要な列の数がわからない場合は、別の方法で考えて、おそらくuser_columnテーブルを使用するような動的構造を作成する必要があります。

2

リレーショナルデータベースフィールドに複数のデータを格納するのは、 。受け入れ可能なケースを考えることは可能ですが、ユーザー全体を格納することはできません。

リレーショナルデータベース構造を使用していない場合は、MySQLのNoSQLデータベースを参照してください。

関連する問題