2013-07-14 48 views
2

我正在使用Node.js構建基於Web的聊天應用程序。當我的應用程序已經在Node.js PaaS中運行並且正在被我的一羣朋友測試時,我有點兒在逐漸建立它。問題是,我不能在數據庫服務上花費很多錢來存儲聊天記錄。基於JSON的數據庫系統

所以我正在設計一個複雜的基於文件的數據庫系統就像SQLite。雖然我知道SQLite做類似的工作,但我想以JSON格式存儲數據。原因很多。一個值得注意的原因是,爲了減少CPU使用率,我只會將原始JSON數據發送到客戶端,在那裏他們將使用AngualarJS正確呈現。

我的問題是:

  1. 你有什麼關於這個方法的意見?
  2. 此方法是垂直還是水平可伸縮的?
  3. 什麼是可能的安全問題?
  4. 有沒有其他方法可用?

請注意,此解決方案僅適用於聊天記錄等簡單的數據存儲。我不會將這種方法用於大型和嚴肅的Web應用程序。

更新: 我不想使用MongoDB或其他人,因爲我負擔不起這個項目。我想將數據存儲在平面文件中並將其放置在磁盤中。因爲,許多PaaS提供商以1美元的價格提供1GB的磁盤空間,而1GB的MongoDB存儲非常高......他們甚至向我們收取了數據傳輸量,PUT和GET數量等。

+2

https://github.com/petersirka/nosql,也許?其他「* embedded *」系統列在http://nosql-database.org/。 –

+0

+1謝謝。這幫助了我。 :) – Mithun

回答

1

我知道MongoDB (可能還有others)正在使用二進制JSON格式。我會研究一下,以確保你不會重新發明輪子。至少我會說,既然有一個用於MongoDB的Node.js庫,它可能是一個很好的權衡,可以提供你需要的效率和易於實現(因爲你不需要編寫數據庫軟件,因此可以讓你更專注於應用程序本身)。

+1

我不想使用MongoDB或其他人,因爲我負擔不起這個項目。我想將數據存儲在平面文件中並將其放置在磁盤中。因爲,許多PaaS以1美元的價格提供1GB的磁盤空間,而1GB的MongoDB存儲非常高......他們甚至向我們收取了數據傳輸量,PUT和GET數量等。 – Mithun

1

您對這種方法有什麼看法?

的方法是一個很好的方法,但是由於在SQLite樣數據庫結構的缺乏,如果你處理大量數據,你會遇到的問題。但是,使用NodeJS的JSON可以很好地協同工作,因此您有充分的理由希望使用這兩者。

該方法是垂直還是水平縮放?

在這個簡單的實現中,它是垂直縮放但不是水平縮放。向服務器添加更多驅動器非常容易,但要實現擴展的分佈式容錯軟件要困難得多,並且名單還在繼續......軟件水平縮放比較困難的原因有很多, MongoDB和類似的系統都是爲了解決水平擴展問題。如果你想減少批量,你不會水平縮放(通常),如果你想水平縮放,你會得到更多的批量。

什麼是可能的安全問題?

您需要注意JSON注入。以下是有關JSON注入一些資源: http://www.slideshare.net/null0x00/json-injection https://www.owasp.org/index.php/OWASP_AJAX_Security_Guidelines#Protect_against_JSON.2FJavaScript_Hijacking

是否有任何其他方法可用?

正如其他問題所示,去預先創建的數據庫軟件如MongoDB,MySQL和RethinkDB將是您的替代方法。請記住,雖然它是自由主持這些你自己的。

票據+源

可能要看一看https://github.com/boboman13/flatfile

從我自己的經驗來源於此。