【问题标题】:SQL Database VS. Multiple Flat Files (Thousands of small CSV's)SQL 数据库 VS。多个平面文件(数千个小 CSV)
【发布时间】:2012-06-24 00:23:20
【问题描述】:

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

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

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

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

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

感谢您的宝贵时间。

【问题讨论】:

  • 这是您只能通过尝试才能回答的问题之一。
  • 您也可以考虑使用 noSQL 数据库。

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


【解决方案1】:

好吧,如果您使用一个 CSV 中的数据来获取另一个 CSV 中的数据,我猜想 SQL Server 会比您想出的任何东西都快。我怀疑 SQL Server 在大多数情况下会更快,但我不能肯定地说。 Microsoft 已投入大量资源来打造完全符合您的要求的 DBMS。

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

可能的优点:

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

可能的缺点:

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

祝你好运!

【讨论】:

  • 我看到的 CSV 文件的最大优势之一是您可以进入单个文件并相当轻松地手动编辑它。您可以在 SQL Server 中执行相同的操作,但您需要拥有管理工作室的副本并知道如何实际编辑数据。
  • 是的。不过,Management Studio 很容易上手,而且它们确实提供了完全基于 UI 的数据编辑方式。
  • 同意。对于普通业务用户,CSV 编辑可能更容易。但从听起来这似乎不是问题。
【解决方案2】:

我想试着把这些问题打得有点乱。

大致来说,什么时候从数据库中读取原始数据变成 比阅读 CSV 更快? (10 个文件,100 个文件?...)

马上。数据库经过优化(假设您已完成作业)以惊人的速度读取数据。

其中一种方法是否比 其他的?

在您处理数以万计的文件之前,它可能不会产生太大的影响。空间很便宜,对吧?但是,一旦您进入大联盟,您会注意到数据库占用的空间要少得多。

我们应该如何选择使用哪种方法?

很好的问题。数据库中的所有内容总是回归到可伸缩性。如果您只有一个 CSV 文件要读取,那么您就可以开始了。不需要数据库。几十个也没问题。

看起来您最终可能会扩大到您肯定希望数据库引擎很快支持您的数据的级别。如有疑问,创建数据库是安全的选择,因为您仍然可以在一秒钟内查询 100 GB 的数据。

【讨论】:

    【解决方案3】:

    在我工作的地方,我们的许多客户都有这个问题。除非您需要现有基础架构的平面文件,或者您认为自己无法计算出 SQL Server,或者如果您只有几个文件需要管理少量数据,那么使用 SQL Server 会更好。

    【讨论】:

      【解决方案4】:

      如果您可以选择使用 ms-sql 数据库,我会这样做。

      在广泛的文件夹结构中维护数据绝不是一个好主意。读取您的数据将涉及读取多个文件。这些可以存储在磁盘上的任何位置。您的文件 io 时间会非常长。作为生产数据库的 SQL 服务器已经解决了这些问题。

      你在这里重新发明轮子。这就是 foxpro 管理数据的方式,每个表一个文件。除非您实际上是在制作数据库服务器,否则使用经过验证的技术通常是一个好主意。

      我这里没有任何测试统计数据,但是如果您要处理大量数据,读取多个文件几乎总是比数据库慢。鉴于您大约有 10k 台设备,您应该考虑使用标准数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        相关资源
        最近更新 更多