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

jam*_*s b 2 javascript json node.js

我刚刚开始使用 node.js 进行编程,在此之前我使用 PHP,并且曾经将数据存储在 sql 数据库上。然而,我现在很困惑。我应该使用sql来保存数据还是Json。我需要保存数据并稍后在网页上显示它们,或者提供这些数据来绘制图形和图表。

Zak*_*Zak 5

在 Node.js 应用程序(或任何实际应用程序)中存储数据时,您有三个主要选项......

记忆

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

  • 如果您存储大量数据,您可能会开始遇到问题,因为您将耗尽机器的大部分内存。

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

  • 如果您使用像 PM2 这样的进程管理器(如果在多核计算机上托管,则需要这样做,请参阅https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-使用-uwsgi-and-nginx-on-ubuntu-16-04),您将无法跨多个请求存储数据,因为进程不会共享公共内存。

输入/输出

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

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

  • 这样做的明显缺点是它可能比数据库调用慢,但如果您使用多个进程,您还必须注意 I/O 并发问题。

  • 但是,如果您确实想存储 JSON,请考虑使用 Mongo DB 等非关系型数据库。

数据库

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

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

  • 同样,要警惕的主要问题是使用多个进程时的并发性(通常只是更新或插入记录时的问题)。

我希望这涵盖了你的问题 - 我可能错过了一些东西,但我相信其他人会告诉我如果我错过了。Node.js 是 Web 服务器的绝佳选择,因为它是异步的,因此自然可以同时处理多个连接。