2012-09-04 88 views
0

我從數據庫運行非常複雜的報告。到目前爲止,我正在返回一個複雜的json對象,並且javscript正在呈現報告。但隨着越來越多的創建這個json對象需要很長時間。將Json對象存儲到數據庫中

我想用另一種方法取代它。用戶將創建一個生成報告的請求,並且服務器端進程可以生成json並將其存儲以備後用,用戶將通過電子郵件發送鏈接。

將json對象存儲在數據庫中是否安全?存儲它的主要原因是用戶要運行報告的列從未修復過。我寧願去參加NoSql?

在此先感謝。

+1

您可能想考慮使用節儉而不是JSON。有一個JavaScript thrift庫,所以你仍然可以渲染節儉的對象,並且生成和更有效地存儲在任何數據庫中都會更快。 – DigitalGhost

回答

1

在數據庫中存儲JSON應該是安全的。從這個意義上說,JSON是簡單的文本,我沒有看到這種方法的任何問題。

1

在您提到的特定情況下,您應該考慮Redis等關鍵值存儲區。你可以存儲,比如user_id - > json_object。關鍵值存儲非常適合緩存,這基本上就是您所做的。

在一般情況下,存儲JSON是可能的,但它失去了一個重要的事情:如何在SQL查詢中使用數據的語義並不明顯。例如,假設我們存儲如下記錄:

{'color': blue, 'height': '40px'} 
{'color': blue, 'height': '50px'} 
{'color': red, 'height': '40px'} 

作爲數據庫中的字符串。

如果我們想識別所有顏色爲「藍色」的元素,那麼我們唯一的選擇是在每個字符串元素中搜索字符串「%blue%」。這既昂貴又容易出錯。您可能會考慮拆分JSON並將其作爲數據庫存儲或移動到某種鍵值對或其他存儲區。