我正在使用Node.js构建基于Web的聊天应用程序。当应用程序已经在Node.js PaaS中运行并且由我的一群朋友进行测试时,我有点逐渐构建它。问题是,我不能花太多钱在数据库服务上存储聊天记录。
所以我正在设计一个像SQLite一样的基于文件的复杂数据库系统。虽然我知道SQLite做了类似的工作,但我想以JSON格式存储数据。原因很多。一个值得注意的原因是,为了减少CPU使用率,我将只发送原始JSON数据到客户端,使用AngualarJS正确地呈现它们。
我的问题是:
请注意,此解决方案仅适用于聊天记录等简单数据存储。我不会将这种方法用于大型严肃的Web应用程序。
更新 我不想使用MongoDB或其他人因为我买不起这个项目。我想将数据存储在平面文件中并将其放在磁盘中。因为,许多PaaS提供商仅以1美元的价格提供1GB的磁盘空间,而1GB的MongoDB存储空间非常高......他们甚至还会向我们收取数据传输量,PUT数量和GET数量等。
答案 0 :(得分: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。
源于我自己的经验。
答案 1 :(得分:0)