2013-03-13 140 views
8

將JSON數據存儲在MySQL錶行中是否可以接受?我需要將數組存儲在mysql數據庫中。問題是,我不知道每個用戶需要多少列。所以我想將JSON存儲在一個名爲array的行中作爲例子。這是最好的方法嗎?在MySQL數據庫中存儲JSON?

編輯:

而且,我使用text爲表列類型。

+3

如果你肯定知道你永遠,永遠需要用JSON數據做任何事情(如查詢裏面的特定屬性),爲什麼不......但它不是真的在任何情況下很好的做法。 – 2013-03-13 20:02:37

+0

爲什麼你需要不同的用戶數量不同的列? – beny23 2013-03-13 20:02:55

+0

@Pekka웃我確實需要它 – user1947561 2013-03-13 20:04:05

回答

12

是的,它使用MySQL作爲一個key-value存儲一個非常好的主意,事實上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 /數據。你做SELECT ...,做你的編輯,然後INSERT ... ON DUPLICATE KEY UPDATE ...

+0

OP可能需要查詢JSON中的一些數據,所以這可能不是最好的想法。 – 2013-03-13 20:08:25

+5

恩,這不是問題... – Gustav 2013-03-13 20:17:00

+1

是的,我知道。他補充說,作爲對這個問題的評論。 – 2013-03-13 20:17:29

0

這不是問題。 mySQL已經可以處理其文本字段中的大部分括號和時髦字符。

0

我認爲不是。大約四個月後,你決定爲你的實體添加一個新的屬性或從你的實體中刪除一些屬性?你將如何解析你的舊JSON內容?如果您不知道表格中需要多少列,則應該用不同的方式思考,也許可以創建一個像使用user_column表一樣的動態結構。

2

在關係數據庫字段中存儲多條數據通常是錯誤的。可以考慮可接受的情況,但不能存儲整個用戶。

如果使用關係數據庫結構是不夠的,你可能想看看的MySQL數據庫的NoSQL inestead。