2013-07-14 53 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

从我自己的经验来源于此。