c# - SQL 数据库 VS。多个平面文件(数以千计的小型 CSV)

标签 c# sql-server database c++-cli flat-file

我们正在设计对当前系统(C++\CLI 和 C#)的更新。 该系统将从约 10K 台设备(在不久的将来)收集少量(约 1Mb)数据。目前,它们用于将设备数据保存在 CSV(表格)中,并将所有这些存储在广泛的文件夹结构中。

数据只被插入(创建/追加到一个文件,创建文件夹)从不更新/删除。 数据处理是通过将许多 CSV 文件读取到外部程序(如 Matlab)来完成的。主要用于统计分析。

有一个选项可以开始将此数据保存到 MS-SQL 数据库中。 处理时间(将 CSV 文件读取到外部程序)可能长达几分钟。

  • 我们应该如何选择使用哪种方法?
  • 其中一种方法是否比另一种方法占用更多存储空间?
  • 大致而言,从数据库读取原始数据什么时候比读取 CSV 数据更快? (10 个文件,100 个文件?...)

非常感谢您的回答,欢迎提出利弊。

感谢您的宝贵时间。

最佳答案

好吧,如果您使用一个 CSV 中的数据来获取另一个 CSV 中的数据,我猜 SQL Server 会比您想出的任何方法都快。我怀疑 SQL Server 在大多数情况下会更快,但我不能肯定地说。 Microsoft 投入了大量资源来制作一个 DBMS,它完全可以满足您的要求。

根据您的描述,听起来您几乎已经创建了自己的基于表数据和文件夹结构的 DBMS。我怀疑,如果您转而使用 SQL Server,您可能会发现在许多方面,事情变得更快、更容易。

可能的优点:

  • 访问速度更快
  • 更易于管理
  • 如果需要,更容易扩展
  • 更容易实现数据完整性
  • 更容易设计更复杂的关系

可能的缺点:

  • 您必须重写现有代码才能使用 SQL Server 而不是当前系统
  • 您可能需要为 SQL Server 付费,您必须检查是否可以使用 Express

祝你好运!

关于c# - SQL 数据库 VS。多个平面文件(数以千计的小型 CSV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143724/

相关文章:

javascript - Sequelize TypeError : Cannot convert undefined or null to object

database - 获取并保存到数据库——时间与内存

c# - 如何禁用所有 WPF 应用程序的虚拟键盘?

c# - 更改日期时间错误消息

mysql - 在mySQL中使用json_array分割数组中的json元素

sql-server - C# SQL 连接字符串最佳实践

sql-server - 模拟 SQL Server 实例上的当前日期?

c# - 找不到资源组下的 Azure 媒体服务资源

c# - 在数组中找不到某些值

sql-server - 事务隔离级别 REPEATABLE READ 导致死锁