当我使用Node.js作为Web应用程序时,是否应该使用sql或Json存储数据

我刚开始使用node.js进行编程,在此之前我使用PHP和我用来在sql数据库上存储数据。 不过,我现在很困惑。 我应该使用sql来保存数据或Json。 我将需要保存数据并稍后在网页上显示它们,或者馈送这些数据以绘制图表和图表。

当将数据存储在Node.js应用程序(或真正的任何应用程序)中时,您有三个主要选项…

记忆

  • 您可以简单地将数据作为variables存储在应用程序中,这很可能是访问速度最快的。

  • 如果您正在存储大量数据,则可能会遇到问题,因为您将占用大部分机器的内存。

  • 当脚本重新启动时,所有数据都将丢失,所以启动时应该能够再次生成数据。

  • 如果您使用像PM2这样的进程pipe理器(如果托pipe在多核机器上,您将需要执行此操作,请参阅https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-与-uwsgi-and-nginx-on-Ubuntu-16-04 ),你将不能跨多个请求存储数据,因为进程不会共享一个共同的内存。

I / O

  • 您也可以将数据编码为JSON并将其存储在您计算机上的文件中。

  • 我不能想到这样比使用数据库更好的情况下,I / O通常只用于图像等静态文件。

  • 这样做的明显缺点是它可能比数据库调用要慢,但是如果你使用了miultiple进程,你还必须小心I / O并发问题。

  • 但是,如果您确实想要存储JSON,请考虑像MongoDB这样的非关系数据库。

数据库

  • 这将是我几乎所有情况下的首选方法(除了静态文件或非常短暂的数据,如上所述)。

  • 数据库也有储存和查找数据的有用方法 – 您需要在关系数据库或非关系数据库之间进行select,请查看https://www.mongodb.com/scale/relational-vs-non-relational数据库的一些差异。

  • 同样,使用多个进程时要注意的主要问题是并发性(更新或插入logging时通常只是一个问题)。

我希望能涵盖你的问题 – 我可能错过了一些东西,但是我相信如果有的话,其他人也会告诉我。 Node.js是Web服务器的绝佳select,因为它是asynchronous的,所以可以一次处理多个连接。