C# 我可以使用什么技术来存储数据

C# 我可以使用什么技术来存储数据,c#,.net,mysql,linq,database-design,C#,.net,Mysql,Linq,Database Design,我有一个应用程序,每0.1秒存储大约1KB的数据。这是36兆字节/小时,或者说大约600兆字节/天 数据高度可压缩,因此应在10:1和100:1之间压缩。所有数据都由时间戳引用 我的问题是:我可以使用什么技术来存储这些数据 限制条件: 将数据插入数据库的时间不能随着数据库大小的增大而增加。这个限制排除了Microsoft SQL Server(我们尝试了它,5天后它停止运行,因为每次“插入”都需要一分钟) 我们可以每天有效地暂停数据记录4小时,这将给我们时间进行压缩等 我们希望与linqfor

我有一个应用程序,每0.1秒存储大约1KB的数据。这是36兆字节/小时,或者说大约600兆字节/天

数据高度可压缩,因此应在10:1和100:1之间压缩。所有数据都由时间戳引用

我的问题是:我可以使用什么技术来存储这些数据

限制条件:

  • 将数据插入数据库的时间不能随着数据库大小的增大而增加。这个限制排除了Microsoft SQL Server(我们尝试了它,5天后它停止运行,因为每次“插入”都需要一分钟)
  • 我们可以每天有效地暂停数据记录4小时,这将给我们时间进行压缩等
  • 我们希望与linqfor.NET兼容,这意味着我们可能需要一个使用LINQ适配器的数据库(MySQL风格的接口就可以了)

一种方法是简单地将传入数据附加到磁盘上的文件中。一天后,切换到一个新文件,然后生成一个进程来压缩和存储前一天的文件


您似乎假设需要将数据存储在数据库中,但没有说明原因。是吗?

一种方法是简单地将传入的数据附加到磁盘上的文件中。一天后,切换到一个新文件,然后生成一个进程来压缩和存储前一天的文件


您似乎假设需要将数据存储在数据库中,但没有说明原因。是吗?

如果您不能让SQL Server及时处理这么小的负载,那么如果您不研究如何插入数据,我想知道任何RDBMS是否对您有效

您只是在一个没有其他索引/函数/进程阻塞/读取的表(带有主键)中进行非常简单的插入吗?或者这个过程实际上比您所说的这个简单/小的插入要复杂一些


如果您死心塌地地使用Linq,您是否分析Linq语句以确保您没有告诉ORM做一些愚蠢的事情?

如果您无法让SQL Server及时处理这么小的负载,那么如果您不探索如何插入数据,我想知道任何RDBMS是否对您有效

您只是在一个没有其他索引/函数/进程阻塞/读取的表(带有主键)中进行非常简单的插入吗?或者这个过程实际上比您所说的这个简单/小的插入要复杂一些



如果你下定决心要使用Linq,您是否正在分析linq语句以确保您没有告诉ORM做一些愚蠢的事情?

也许您可以将所有内容存储到二进制文件中,将元数据存储到数据库中。

也许您可以将所有内容存储到二进制文件中,将元数据存储到数据库中。

您的SQL server配置不正确。可以设置为插入无限期地占用固定时间。插入时间是否超过一分钟?99%的情况下,这是查询的问题,而不是数据库的问题。尝试用NoLoCK指定插入,并确保如果在插入的行上有索引,则插入的行在索引的“结束”处或附近,而不是随机地位于中间。我将重新评估使用LINQ的必要性。虽然我认为Linq非常棒,我自己也使用它,但对于类似的东西,我会对鼓励客户端处理(而不是服务器端处理)的编程方法保持警惕。您没有提到任何查询方面的要求。我希望在存储数据之后,您需要进行一些查询。如果需要对存储的数据进行查询,则不能选择将数据存储在普通文件中then@Juliet和@Greg Hewgill-谢谢你的提示,也许我们毕竟可以使用Microsoft SQL。你的SQL server配置不正确。可以设置为插入无限期地占用固定时间。插入时间是否超过一分钟?99%的情况下,这是查询的问题,而不是数据库的问题。尝试用NoLoCK指定插入,并确保如果在插入的行上有索引,则插入的行在索引的“结束”处或附近,而不是随机地位于中间。我将重新评估使用LINQ的必要性。虽然我认为Linq非常棒,我自己也使用它,但对于类似的东西,我会对鼓励客户端处理(而不是服务器端处理)的编程方法保持警惕。您没有提到任何查询方面的要求。我希望在存储数据之后,您需要进行一些查询。如果需要对存储的数据进行查询,则不能选择将数据存储在普通文件中then@Juliet和@Greg Hewgill-谢谢你的提示,也许我们最终可以使用Microsoft SQL。我希望将数据保存在数据库中,以便轻松查询。LINQ查询非常有表现力,并且使事情变得更加简单。如果您不需要立即获得今天的数据,那么您可以让后台进程也实际插入到数据库中。这样,您的在线日志根本不依赖于数据库。这将是一个更健壮的系统的一个方面。如果没有并发编写器,这实际上是一个非常好的解决方案,可以很好地扩展。我希望将数据保存在数据库中,以便轻松查询。LINQ查询非常有表现力,并且使事情变得更加简单。如果您不需要立即获得今天的数据,那么您可以让后台进程也实际插入到数据库中。这样,您的在线日志根本不依赖于数据库。这将是一个更健壮的系统的一个方面。如果没有并发编写器,这实际上是一个非常好的解决方案,可以很好地扩展。我们正在做一个简单的插入。我会按照你的建议去做——介绍我们的LINQ,确保我们没有做任何事情