簡體   English   中英

Memory 使用文件與數據庫進行簡單數據存儲

[英]Memory usage of file versus database for simple data storage


我正在為具有同步功能的 Javascript 應用程序編寫服務器。 客戶端創建和修改的文件和目錄需要同步到服務器(客戶端上所做的相同更改需要在服務器上進行,包括刪除)。

由於每個文件都在服務器上,我正在討論是否需要與每個文件對應的 MySQL 數據庫條目。 需要在每個用戶的每個文件/目錄中保留以下信息:

  1. 是否被刪除(因為刪除需要同步到其他客戶端)
  2. 上次修改每個文件的時間戳(所以我知道文件是否需要客戶端更新)

我可以將這兩條信息保存在文件中(例如,每個用戶目錄中的 .deleted 文件和 .modified 文件,其中包含文件路徑 + 時間戳)或數據庫中。

但是,我還必須適應 80mb memory 約束。 在文件存儲和數據庫存儲之間,為此目的,哪個內存效率更高?

編輯:文件必須存儲在文件系統中(而不是數據庫中),並且用戶對他們可以使用的存儲空間有配額。

只要文件數量少,文件系統變體可能會更有效 memory 明智,但該解決方案可能無法擴展。 數據庫經過優化可以做到這一點。 隨着文件和請求數量的增加,搜索文件系統、打開文件、搜索文檔將變得昂貴。

但是沒有人說你必須使用 MySQl。 像 Redis 這樣的 NoSQL 數據庫,或者像 CouchDB(您可以在其中保留文件本身並包含版本控制)之類的數據庫可能是更具吸引力的解決方案。

這里是NoSQL 數據庫的快速比較。 更長的比較

編輯:根據您的評論,我將按如下方式構建它:創建一個 API 抽象您想要執行的所有操作的后端。 然后使用 2 或 3 個操作來實現后端部分,這些操作對於文件系統和數據庫(或兩個)發生最多,或者可能更昂貴。 測試和基准測試。

我想為 NoSQL 數據庫之一提供 go 。 您可以存儲文件內容並根據用戶 ID 提供一些密鑰 function 以便在需要時檢索這些內容。 對於這種情況, RedisCasandra可能是不錯的選擇。 在 Python 以及許多其他語言中,有許多庫可以使用這些數據庫。

在我看來,唯一可以確定的真正方法是構建一個測試系統並比較空間需求。 以編程方式生成一些隨機數據應該不會花費那么長時間。 有人可能認為文件系統會更高效,但數據庫可以並且可能會壓縮數據或對其進行重復數據刪除,或其他任何事情。 不要忘記,數據庫還可以更輕松地實現新功能,也許是訪問控制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM