2017-07-08 93 views
0

我有一个JavaScript的Web应用程序,我使用Node.JS作为服务器组件。轮询数据库获取值的最佳选择是什么?

我想将我的应用程序与数据库集成。这个数据库有一个表格,里面有一个名为“状态”的字段,可以频繁更改(每隔几分钟左右)。

我希望我的网络应用程序能够实时了解状态字段的值。

我目前的方法:

我currenlty,在Javscript的AJAX功能,发送一个HTTP请求到我的Node.js服务器。 Node.js服务器从数据库中选择记录,然后将结果返回给AJAX函数,AJAX函数将结果显示在屏幕上。我设置了一个间隔来每秒执行一次该功能。

这似乎不是一个很好的选择,它导致我的服务器上的很多流量。

什么是实时监控SQL字段的正确方法?

+1

为什么不将变量保存在内存中并避免轮询数据库呢?在状态更改时,更新内存和数据库中的值。这取决于您的用例和资源 – vol7ron

+0

我不控制状态更改。该字段来自第三方数据库。我需要我的应用程序来了解它的价值。 – cleverpaul

+0

第三方数据库?你可以直接访问它?如果没有检查或更新连接以便将它推送给您时,您还能知道什么时候进行了更新?如果这是你管理一个数据库,我建议检查出火力地堡,否则,我很好奇,看看别人怎么说。看起来像使用Web套接字和内存管理的简单设置。 – vol7ron

回答

1

如果所有的客户有兴趣在数据库中的相同的价值和你的数据库的情况防止任何非轮询的情况下,那么你将要投票从客户端转移到服务器,因此服务器可以一劳永逸地轮询客户。这将显着限制服务器和数据库服务器上的负载。

然后,您可以让每个客户端通过webSocket(或socket.io)连接连接到服务器,并且当数据库中的值更改(并且只有这样)时,才可以向每个客户端发送更新消息webSocket连接。这将使用更少的CPU和带宽以及客户端电池。

相关问题