我正在处理实时跟踪系统,其中一台设备每年可以推动200万个GPS点(即每5秒1点,365天运行8小时)。如果这在全球范围内运行,有数千台设备,那么每年会产生数十亿条记录。
我知道SQL Server可以处理它。但我需要能够使用数千个执行并发写入的设备执行实时跟踪。它可以与一些设备一起使用,但是当我打开许多跟踪站点时,我可以看到这是CPU密集型的。
我打算尝试:
任何其他建议?
答案 0 :(得分:3)
根据您发布的信息,您的架构没有任何问题。然而,魔鬼在细节中。首先,很大程度上取决于您的数据库设计的好坏程度。这取决于您的查询编写得有多好,数据库索引,触发器等......
此外,如果这是任何类型的移动设备,则不应使用传统的基于套接字的连接器。您不能依赖与远程服务器的稳定tcp连接。您应该使用像REST这样的无状态架构来为您公开/写入数据。 REST很容易在.NET b.t.w中实现。这应该将比例难度从数据库移动到Web服务器。
最后,为了最大限度地减少在服务器上完成的工作,我将实现某种缓存或缓冲池系统来维护每个设备上的数据以供读取,并创建用于将数据发送到中央服务器的写缓存。写缓存将是至关重要的,因为您不能依赖与服务器的事务管理的稳定tcp连接。您需要维护要写入的数据缓存,即(队列),并在服务器确认已收到您已写入的数据时弹出队列。只要有数据和数据连接,就应该弹出队列。但是,在我可以肯定地说出来或提供更多细节之前,我需要了解更多关于您的要求。