基于多事件的文件设计

kno*_*der 5 sqlite database-design c#

我不是数据库专家,但我需要设计一个数据库来为我们的应用程序存储事件。我们的客户端应用程序连接到远程硬件并同步计数数据。计数数据是拆分为 /date/guid.cvs 的 csv 文件。同步部分已完成,但现在我需要获取同步文件并将它们转储到报告系统的数据库中。这一切都存储在客户端的计算机上,因此我需要一个文件数据库以方便使用。我一直在使用sqlite。

现在我的问题。csv 文件中的每一行都是一个定义了数据的事件:

时间戳、车辆长度(单个)、控制器状态(int)、转弯类型(int)、队列长度(int)、其他定义事件的整数

我还计划包含来自 csv 文件名的 guid。我看到的问题是这个单个表将有很多很多行。仅在少量数据(几天)上,我就已经有超过 10 万行。这将需要处理可能持续数年的事件。

有没有减少行数的好方法,或者它不会成为问题?我是否缺少某种设计表格的方法,以免它们变大?我看到了一些关于分区的内容,但我不确定 sqlite 是否支持。是否有另一个文件数据库可以做到?我使用 c# 4 作为客户端的前端。

Ste*_*oke 1

查看表结构意味着虽然实际行很小(许多 int 值),但将有数百万行。

是的,您可以使用您选择的数据库(MySQL、Oracle、SQL Server、PostGres)来获取来自摄像机的原始数据。

您可以按天添加分区,这将为每天创建一个分区,并且您可能需要考虑将每年的数据归档到每年的单独表中,以使表大小易于管理。

我建议您设置另一组用于报告的汇总表,该汇总表可以基于分区,并且可以每天(每个分区)自动完成。

摘要表的实际设计取决于您需要运行的报告,但这是必要的,这样您的查询就不会超出更大的基础数据表。