我的nodejs应用程序需要一个数据库吗?

时间:2016-03-29 19:26:52

标签: node.js database parsing heatmap

我需要创建一个热图,显示与世界上Ipv6地址相对应的密度区域。我可以通过解析csv文件并过滤Ipv6地址和相关的lat,long坐标来填充此热图(密度)。

我是否需要一个数据库来存储此过滤后的信息?或者我可以这样编写我的应用程序(客户端),每次进入index.html页面时,客户端都会处理这个csv文件并填充热图?此外,还有一个警告,即可以更改csv文件。这不意味着如果我使用数据库,我需要使用新csv文件中的新数据重新填充数据库吗?

3 个答案:

答案 0 :(得分:1)

我想这取决于你和前者和后者的表现。

如果装载的时间太长,加载时,依靠应用程序进行繁重的工作可能会很好。

否则,您可以让应用程序解析CSV文件并将数据存储在数据库中。问题是,CSV文件是暂时的吗?如果是这样,你可能想要前者,只是在每次加载应用程序时解析它。

否则,您可以自由地将数据存储在数据库中,让应用程序查询数据库以在地图上显示结果。

答案 1 :(得分:1)

没有规则!!但需要考虑很多。

解析/加载和初始化应用程序需要多长时间?如果从文件系统加载数据,则必须在每个请求上产生该成本。

数据集的更改频率是多少?如果加载数据集非常密集,您可以将应用程序加载到内存中,并使用内存版本来处理请求。然后,当它被更新时,必须通知服务,以便它可以更新其内存版本。

还有其他方法可行吗?您可以将数据集渲染为svg或其他东西,并让Web服务器提供该静态内容吗?

如果您选择使用数据库存储客户端看到的数据集,那么在更改数据以供客户端查看时,必须更新数据集:)

答案 2 :(得分:1)

这个答案真的取决于你。您可以随时在客户端执行csv文件的解析过程。如果这是一个耗时的过程,那么最好让服务器执行此步骤,然后将结果提供给客户端。

以下是一些可以解决问题的方案......

1)客户端。这是你的想法。服务器将index.html和data.csv发送到客户端浏览器。并且在客户端解析和提供数据。

优点:简单的服务器端逻辑。

缺点:在客户端上做了很多工作! (希望他们不使用移动设备)。每个请求都会在客户端解析数据。

2)服务器端。服务器解析data.csv并将结果存储在内存中。服务器根据请求在内存中发送index.html和解析数据。

优点:客户端无处理。服务器端的最小处理(解析一次)。

缺点:存储在服务器内存中。每次服务器启动时都必须重新解析。除非需要很长时间来解析数据,否则这应该是微不足道的。

3)服务器端+ DB 。服务器解析data.csv并将结果提交到数据库。服务器根据请求发送index.html和解析数据。

优点:客户端无处理。服务器端的最小处理(解析一次)。

缺点:如上所述存储简单静态数据集的数据库似乎过度使用IMO。

我个人喜欢情景#2(如果不明显的话)。这是我的意见,希望它能帮助你做出决定。

帮助回答有关将服务器数据传递给客户端的问题......

这主要取决于您在服务器端使用的内容。 Node / Express,ASP.Net MVC等?

我想你有2个场景(更多决定!)。

1)index.html是由后端提供的静态文件。如果是这种情况,您将在该文件中有一些javascript,在页面加载后将回调到您的服务器以请求热图数据。此调用是您的其他端点将发挥作用的地方。一旦获得数据 - 您可以猜测其余的数据 - 它会将其传递给您的热图库以执行此操作。因此,您提到的REST端点将执行解析和操作并返回JSON结果。 index.html中的脚本将使用JQuery通过$ .get()调用服务器上的该端点。

2)index.html不是静态文件。相反,它是一个生成html(和javascript)的端点。你会把所有内容都放在这一个电话中。它将解析和操作CSV(如果服务器启动时尚未完成),并生成一个响应,其中包含HTML页面和脚本标记以及包含所有javascript的内容。您将javascript变量设置为等于数据。加载页面时,您可以将变量中的数据传递给热图库。

我认为你的想法与方案1更加一致。我觉得这些信息可能会让你更加困惑,但希望它有所帮助。