2016-09-20 23 views
0
  1. JSON將每天進行更新多達〜4倍
  2. JSON常常會被加載(每個用戶都將以此爲基礎 數據)
  3. 將需要保持先前最後一個版本每次保存變化 (一個備份副本)

鑑於這些情況是否存在將json數據存儲在服務器上的某個文件中並將其存儲在數據庫中的明確pro/con?如果將它存儲在數據庫中,是否有意義的是它有自己的表(兩行,一個當前版本,一個備份副本)存儲json數據,這些數據將在db或文件中經常訪問/更改?

回答

0

這些天存儲,讀取甚至查詢JSON並不是什麼大問題 - 特別是使用像MongoDB & Cassandra這樣的NoSQL解決方案。實際上,像MongoDB這樣的平臺可以讓你直接查詢JSON本身 - 事實上,它將數據存儲爲JSON文檔,並且表現非常好。 (我假設你不是在談論大規模,至少現在還沒有。)

問題是像MongoDB這樣的系統爲你做了很多艱苦的工作。它將爲您有效地優化內容,比如將頻繁的文檔加載到內存中,優化它們的大小並提供用於遍歷大型JSON文檔的機制,而不需要巨大的佔用空間。

如果您要逐個文件地處理這個問題,將會出現很多無法預料的問題,您需要在後面處理。您需要管理文件句柄,注意併發讀取的讀/寫鎖定,文件系統權限,處理磁盤I/O性能瓶頸 - 這個列表還在繼續。即使對於日夜提供文件的網絡服務器,他們已經做了一些非常有趣的優化來管理文件處理性能,最終與CDN(內容交付網絡)一起工作,以優化邊緣性能並管理規模。

保留JSON數據的先前版本可能很簡單,只需簡單地覆蓋現有條目並標記上一個(n-2)版本以便刪除即可。然後可以在單獨的線程中進行「清理」或在一夜之間進行批處理以除去無關數據。 (注意:這可能會導致一些碎裂,但可以在稍後進行壓縮。)

因此,長話短說。我不會再將JSON存儲在文件系統上。把它放在MongoDB之類的東西里,讓它處理細節。在你真正到達1B +交易之前,這應該可以爲你做得很好。

相關問題