【发布时间】:2011-05-27 23:48:11
【问题描述】:
我有一个应用程序,我每 0.1 秒存储大约 1kbyte 的数据。那是 36MByte/小时,或大约 600MByte/天。
数据是高度可压缩的,因此应该在 10:1 到 100:1 之间进行压缩。所有数据都以时间戳引用。
我的问题是:我可以使用什么技术来存储这些数据?
约束:
- 将数据插入数据库的时间不能随着数据库大小的增大而增加。这个限制排除了 Microsoft SQL Server(我们尝试过,5 天后它停止了,因为每次“插入”都需要一分钟)。
- 我们可以有效地每天暂停数据记录 4 小时,这样我们就有时间进行压缩等操作。
- 我们希望与 .NET 的 LINQ 兼容,这意味着我们可能需要一个带有 LINQ 适配器的数据库(可以使用 MySQL 风格的接口)。
【问题讨论】:
-
您的 SQL 服务器配置不正确。可以对其进行设置,以便插入无限期地花费恒定时间。
-
插入时间超过一分钟? 99% 的时间,这是查询的问题,而不是数据库的问题。尝试使用 NOLOCK 指定 Insert,并确保如果要插入的行上有索引,则插入的行会位于索引的“末尾”或附近的某个位置,而不是随机位于中间。
-
我会重新评估使用 Linq 的必要性......虽然我认为 Linq 很棒并且我自己使用它,但对于这样的事情,我会警惕鼓励客户端的编程方法处理(而不是服务器端处理)。
-
您没有提到查询方面的任何要求。我希望您在存储数据后需要进行某种查询。如果您需要对存储的数据进行查询,那么将数据存储在普通文件中不是您的选择
-
@Juliet 和 @Greg Hewgill - 感谢您的提示,也许我们毕竟可以使用 Microsoft SQL。
标签: c# .net mysql linq database-design