Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 写重应用程序的体系结构设计_C#_Asp.net_Sql Server_Database Design_Architecture - Fatal编程技术网

C# 写重应用程序的体系结构设计

C# 写重应用程序的体系结构设计,c#,asp.net,sql-server,database-design,architecture,C#,Asp.net,Sql Server,Database Design,Architecture,我正在处理实时跟踪系统,其中一台设备每年可以推送大约200万个GPS点(即每5秒1个点,365天运行8小时)。如果在全球范围内使用数千台设备,每年将产生数十亿条记录 我知道SQL Server可以处理它。但我需要能够对数千台执行并发写入的设备执行实时跟踪。它适用于一些设备,但当我打开许多跟踪站点时,我可以看到这是CPU密集型的 我计划尝试: 蒙戈数据库 带kazzing的套接字方法 有其他建议吗?根据您发布的信息,您的体系结构没有问题。然而,问题在于细节。首先,很大程度上取决于数据库设计的好

我正在处理实时跟踪系统,其中一台设备每年可以推送大约200万个GPS点(即每5秒1个点,365天运行8小时)。如果在全球范围内使用数千台设备,每年将产生数十亿条记录

我知道SQL Server可以处理它。但我需要能够对数千台执行并发写入的设备执行实时跟踪。它适用于一些设备,但当我打开许多跟踪站点时,我可以看到这是CPU密集型的

我计划尝试:

  • 蒙戈数据库
  • 带kazzing的套接字方法

有其他建议吗?

根据您发布的信息,您的体系结构没有问题。然而,问题在于细节。首先,很大程度上取决于数据库设计的好坏。这取决于您的查询编写得有多好、db索引、触发器等等

此外,如果这是任何类型的移动设备,您不应该使用传统的基于插座的连接器。您不能依赖到远程服务器的稳定tcp连接。您应该使用REST之类的无状态体系结构来为您公开/写入数据。REST很容易在.NET b.t.w中实现。这将把扩展难度从db转移到web服务器


最后,为了尽可能减少服务器上的工作量,我将实现某种缓存或缓冲池系统来维护每个设备上的数据以供读取,并创建一个写缓存以将数据发送到中央服务器。写缓存将是至关重要的,因为您无法依赖于稳定的tcp连接和来自服务器的事务管理。您需要维护要写入的数据缓存,即(队列),并在服务器确认队列已收到您写入的数据时弹出队列。只要有数据和数据连接,就应该弹出队列。但是,在我可以确定或提供更多细节之前,我需要更多地了解您的需求。

也许您可以为传入的数据建立内存存储,并建立一个外部进程,最终将数据存储到数据库中。Protip:更多服务器。这种规模的全球分布需要它。您需要一个可扩展的解决方案,并有一些缓存机制。实际上,我不确定NoSQL db在这种情况下是否能为您带来任何好处。在你的情况下,我认为解决方案是在宽度上进行缩放,即提高处理能力。回答很好,但我认为设备没有进行查看,它们是被跟踪的设备。无论如何,这是我的理解。@EladLachmi推送应该仍然是无状态的。无论是读还是写,您都不会在移动设备上使用传统的连接器。事实上,大多数移动SDK甚至都不提供它们。我不确定Windows 8,因为.NET内置了SQL ADO.NET连接器,但这并不意味着任何人都应该使用它们。