基于JSON的数据库系统

时间:2013-07-14 21:39:13

标签: database json node.js flat-file

我正在使用Node.js构建基于Web的聊天应用程序。当应用程序已经在Node.js PaaS中运行并且由我的一群朋友进行测试时,我有点逐渐构建它。问题是,我不能花太多钱在数据库服务上存储聊天记录。

所以我正在设计一个像SQLite一样的基于文件的复杂数据库系统。虽然我知道SQLite做了类似的工作,但我想以JSON格式存储数据。原因很多。一个值得注意的原因是,为了减少CPU使用率,我将只发送原始JSON数据到客户端,使用AngualarJS正确地呈现它们。

我的问题是:

  1. 您对此方法有何看法?
  2. 此方法是垂直还是水平扩展?
  3. 可能存在哪些安全问题?
  4. 是否有其他方法可用?
  5. 请注意,此解决方案仅适用于聊天记录等简单数据存储。我不会将这种方法用于大型严肃的Web应用程序。

    更新 我不想使用MongoDB或其他人因为我买不起这个项目。我想将数据存储在平面文件中并将其放在磁盘中。因为,许多PaaS提供商仅以1美元的价格提供1GB的磁盘空间,而1GB的MongoDB存储空间非常高......他们甚至还会向我们收取数据传输量,PUT数量和GET数量等。

2 个答案:

答案 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)

我知道MongoDB(可能others)正在使用二进制JSON格式。我会调查一下,以确保你没有重新发明轮子。至少我会说,因为MongoDB有一个Node.js库,所以在你需要的效率和易于实现之间进行一次很好的权衡(因为你不需要编写数据库软件,因此您可以更专注于应用程序本身。)