我正在建立一个基于网络的聊天应用程序使用Node.js。当这个应用程序已经在Node.js PaaS中运行并被我的一群朋友测试的时候,我正在逐渐地构建它。问题是,我不能在数据库服务上花很多钱来存储聊天记录。
因此,我正在设计一个复杂的基于文件的数据库系统,就像SQLite一样。虽然我知道SQLite做了类似的工作,但我想以JSON格式存储数据。原因有很多。一个值得注意的原因是,为了减少CPU的使用,我将只向客户机发送原始JSON数据,在客户端使用AngualarJS正确地呈现这些数据。
我的问题是:
请注意,此解决方案仅用于琐碎的数据存储,如聊天历史。我不打算在大型和严肃的网络应用程序中使用这种方法。
更新:我不想使用MongoDB或其他人,因为我买不起这个项目。我想将数据存储在一个平面文件中,并将其放入磁盘中。因为,许多PaaS提供程序以1美元的价格提供1GB的磁盘空间,而1GB的MongoDB存储空间非常高.此外,他们甚至为我们的数据传输的数量,卖出和获取的数量等收费。
发布于 2014-06-12 18:13:30
你对这个方法有什么看法?
该方法是一个很好的方法,但是,由于类似SQLite的数据库缺乏结构,如果处理大量数据,就会遇到问题。但是,JSON与NodeJS很好地结合在一起,因此您有充分的理由希望使用这两种方法。
这种方法是垂直和水平缩放的吗?
在一个简单的实现中,它是垂直缩放,而不是水平缩放。向服务器添加更多的驱动器很容易,但是要实现一个可扩展的、分布式的、容错的软件要困难得多。有很多原因可以解释为什么软件的水平扩展要困难得多,而MongoDB和类似系统提供的大量功能都是为了解决水平扩展问题。如果你想要更少的体积,你就不会得到水平缩放(通常),如果你想要水平缩放,你会得到更多的批量。
可能存在哪些安全问题?
你需要小心JSON注入。以下是有关JSON注入的一些资源:http://www.slideshare.net/null0x00/json-injection 劫持
有其他可用的方法吗?
正如其他问题所暗示的,使用预先创建的数据库软件(如MongoDB、MySQL和RethinkDB )将是您的替代方法。请记住,尽管,它是免费主办这些你自己的。
Notes +源代码
也许想看看https://github.com/boboman13/flatfile。
来自我自己的经验。
发布于 2013-07-14 21:46:07
我知道MongoDB (可能还有其他)正在使用二进制JSON格式。我会调查这一点,以确保你没有重新发明车轮。至少我要说的是,由于MongoDB有一个Node.js库,所以在具有所需的效率和易于实现之间(因为您不需要编写数据库软件,从而允许您更多地关注应用程序本身),这可能是一个很好的折衷。
https://stackoverflow.com/questions/17644051
复制相似问题