基于JSON的数据库系统

我正在使用Node.js构build基于Web的聊天应用程序。 我有点build立它,而应用程序已经运行在一个Node.js PaaS和正在testing我的一堆朋友。 问题是,我不能在数据库服务上花费很多钱来存储聊天logging。

所以我正在devise一个复杂的基于文件的数据库系统就像SQLite。 虽然我知道SQLite做类似的工作,我想要以JSON格式存储数据。 原因很多。 一个值得注意的原因是,为了减lessCPU使用率,我只是将原始的JSON数据发送到客户端,在那里他们将使用AngualarJS正确渲染。

我的问题是:

  1. 你对这个方法有什么看法?
  2. 这种方法是垂直还是水平可伸缩的?
  3. 什么是可能的安全问题?
  4. 有没有其他方法可用?

请注意,此解决scheme仅适用于聊天logging等简单的数据存储。 我不会用这个方法来处理大型和严重的Web应用程序。

更新:我不想使用MongoDB或其他人,因为我负担不起这个项目。 我想将数据存储在一个平面文件中,并将其放置在磁盘中。 因为,很多PaaS提供商只需要1美元就可以提供1GB的磁盘空间,而1GB的MongoDB存储空间非常高……他们甚至向我们收取了数据传输量,PUT和GET数量等。

我知道MongoDB (可能还有其他人 )正在使用二进制JSON格式。 我会研究一下,以确保你没有重新发明轮子。 至less我会说,因为有一个用于MongoDB的Node.js库,它可能是一个很好的权衡之间的效率,你需要和易于实现(因为你不需要写数据库软件,因此可以让你更专注于应用程序本身)。

你对这个方法有什么看法?

该方法是一个好方法,但是由于类似SQLite的数据库中缺less结构,如果处理大量的数据,会遇到问题。 但是,使用NodeJS的JSON可以很好地协同工作,所以你有充分的理由要使用这两个。

这种方法是垂直还是水平缩放?

在这个简单的实现中,它是垂直缩放但不是水平缩放。 向服务器添加更多的驱动器是很容易的,但是要实现一个扩展的,分布式的容错软件则要困难得多,而且这个列表还在继续……软件水平缩放比较困难的原因有很多, MongoDB和类似的系统都是为了解决横向扩展问题。 如果你想减less批量,你不会水平缩放(通常),如果你想水平缩放,你会得到更多的批量。

什么是可能的安全问题?

你需要注意JSON注入。 以下是关于JSON注入的一些资源: http : //www.slideshare.net/null0x00/json-injection https://www.owasp.org/index.php/OWASP_AJAX_Security_Guidelines#Protect_against_JSON.2FJavaScript_Hijacking

有没有其他的方法可用?

正如其他问题所build议的那样,使用预先创build的数据库软件(如MongoDB,MySQL和RethinkDB)将是您的替代方法。 请记住,这是自由主办这些你自己的。

Notes +来源

可能想看看https://github.com/boboman13/flatfile

来源于我自己的经验。