2016-12-30 72 views
0

我正在編寫一個小應用程序,並有一個問題。我決定是否將數據存儲在JSON或MySQL行中最適合我的場景。在JSON vs MYSQL中存儲數據

我編碼,可能有很多頁面點擊的應用程序,正因爲如此,我在想存儲JSON編碼數組VS MySQL的行一列。一個查詢將更快執行VS 2.

我想弄清楚的問題是我需要刪除部分JSON編碼數組,但這樣做意味着刪除請求後,我將不得不獲取整個數據,JSON解碼並取消設置對象,然後再次更新該行。 VS mysql刪除行。

有沒有辦法,也許我不知道這可以使這更容易處理?

+1

除非您使用內置支持JSON數據類型的MySQL 5.7,否則應該避免使用這種方法。您不需要執行多個查詢,您可以使用'JOIN'將子表中的多個行與主表關聯。 – Barmar

+0

@Bamar。一個查詢無法使用,因爲首先我需要從一個錶行獲取產品信息,然後從另一個表獲取所有的交易。事務可以是多行。 – user3620142

+0

這就是你使用JOIN的原因。這是一個查詢 – e4c5

回答

0

這可能取決於你沒有提供的細節。

使用MySQL?如果您要獲取JSON對象,然後修改它並將其存回,那麼MongoDB在該用例中似乎更快。

一個查詢將以更快的速度執行VS 2.

你並不需要一個以上的查詢返回多行;該查詢可能會返回更多行,但是對結果進行循環和序列化/反序列化JSON與您在網站上必須執行的其他操作相比成本可以忽略不計。不要過多考慮這一點。

作爲一個經驗法則,在關係數據庫上,嘗試對數據進行規範化處理,直到出現性能問題。如果你設置爲使用MySQL,你可能需要很多行。隨着數據集的增長,提高查詢性能的最直接的方法是添加索引,並且您無法在JSON blob上執行此操作。

+0

我真的不得不使用mysql,但它是首選,因爲這是目前可用於我。但是,我將需要使用多個查詢,因爲查詢1必須從單個錶行獲取產品信息,然後查詢2必須獲取所有可能多的事務。 – user3620142

+0

如果您不得不使用兩個查詢,那麼您的數據結構必然有問題。這就是JOIN的用途。您將INNER JOIN基於FOREIGN KEY約束的事務表。當然,如果你使用JSON blob作爲數據,你也不能做JOIN。 – mlg

+0

欣賞答案,但不能爲我工作。我需要2個獨立數組中的數據。一個帶有產品信息,另一個帶有交易。加入會給我的數據,但是它太多的工作來循環和建立2個獨立的數據陣列。 – user3620142