在什么时候值得使用数据库?

rad*_*x07 52 c++ sql database user-interface qt

我有一个与数据库有关的问题,以及在什么时候值得深入研究.我主要是一名嵌入式工程师,但我正在编写一个使用Qt与我们的控制器连接的应用程序.

我们处于一个奇怪的地方,我们有足够的数据来实现数据库(大约700多个项目并且不断增长)来管理所有内容是可行的,但我不确定现在是否值得花时间来处理.使用excel生成的文件和解析后的文件实现GUI没有问题,但即使使用VBA脚本也很难跟踪.我一直在使用Microsoft Access将我们的数据转换为更易于管理的应用程序端,这似乎运行良好.如果能够解决这个问题,那么我只使用一个SQL数据库并使用Qt库来访问和修改它只需要一步(或几步).

我没有太多管理这个级别的数据的经验,我很好奇可能是解决这个问题的最佳方法.那么在这种情况下使用数据库有哪些真正的好处呢?我意识到这可能是非常特定于应用程序的,但是关于如何跨越嵌入式/应用程序编程线的一些一般性想法和建议将是有帮助的.

这不是将数据库放在嵌入式项目中.它也不是通常使用较大数据库的业务类型应用程序.我正在为桌面上的单个用户设计GUI,以便与微控制器连接以进行监视和配置.


我决定和SQLite一起去.您可以使用我在第一次启动此项目时并未真正考虑选项的数据做一些非常有趣的事情.

Tho*_*ews 38

在以下情况下数据库是值得的:

  1. 您的应用程序演变为某种形式的数据驱动执行.
  2. 您花时间设计和开发外部数据存储结构.
  3. 在应用程序或组织(包括个人)之间共享数据
  4. 数据不再简短.
  5. 数据重复

向数据驱动执行的演变
当数据发生变化但执行不是时,这是数据驱动程序的标志,或者程序的某些部分是数据驱动的.一组配置选项是数据驱动功能的标志,但整个应用程序可能不是数据驱动的.无论如何,数据库可以帮助管理数据.(数据库库或应用程序不一定像Oracle一样庞大,但可以像SQLite一样精益求精).

外部数据结构的设计和开发
Stack Overflow发布有关序列化或转换树和列表以使用文件的问题,这表明您的程序已经逐渐使用数据库.此外,如果您花费任何时间设计算法来将数据存储在文件中,或者在文件中设计数据是研究数据库使用情况的好时机.

共享数据
无论您的应用程序是与其他应用程序,其他组织还是其他人共享数据,数据库都可以提供帮助.通过使用数据库,可以更轻松地实现数据一致性.问题调查的一个重要问题是团队没有使用相同的数据.客户可以使用一组数据; 验证团队使用另一组数据进行开发和开发.数据库使数据版本化更容易,并允许实体使用相同的数据.

复杂数据
程序开始使用小型硬编码数据表.这演变为使用带有地图,树和列表的动态数据.有时,数据从简单的两列扩展到8或更多.数据库理论和数据库可以减轻组织数据的复杂性.让数据库担心管理数据并释放您的应用程序和开发时间.毕竟,如何管理数据并不像数据的质量和可访问性那么重要.

数据重复
通常,当数据增长时,重复数据的吸引力会越来越大.数据库和数据库理论可以最大限度地减少数据的重复.可以配置数据库以警告重复.

转向使用数据库有许多因素需要考虑.一些包括但不限于:数据复杂性,数据重复(包括部分数据),项目截止日期,开发成本和许可问题.如果您的程序可以使用数据库更有效地运行,那么就这样做.数据库还可以节省开发时间(和金钱).您和您的应用程序可以执行的其他任务比管理数据还要多.将数据管理留给专家.

  • 我希望我能喜欢这个答案......主要是因为它如此笼统.我本身并不是真正的开发人员,但我可以使用这个答案来帮助我理解使用数据库时是个好主意.说得好. (2认同)

Rob*_*vey 8

您所描述的内容听起来并不像典型的业务应用程序,并且此处发布的许多答案都假设这是您正在讨论的应用程序,因此让我提供一个不同的视角.

您是否使用700个项目的数据库将在很大程度上取决于数据的性质.

我想说,在这种规模的大约90%的时间里,你将受益于像SQLite这样的轻量级数据库,前提是:

  1. 数据可能会比您描述的数据大得多,
  2. 数据可能由多个用户共享,
  3. 您可能需要针对数据运行查询(我认为您现在没有这样做),以及
  4. 数据可以很容易地以表格形式描述.

另外10%的时间,您的数据将是高度结构化的,分层的,基于对象的,并且不能完全适合数据库或Excel表的表模型.如果是这种情况,请考虑使用XML文件.

我知道开发人员本能地喜欢在这样的问题上抛出数据库,但是如果你当前正在使用Excel数据来设计用户界面(或显示配置设置),而不是显示客户记录,那么XML可能更适合.XML比Excel或数据库表更具表现力,并且可以使用简单的文本编辑器轻松操作.

用于C++的XML解析器和数据绑定器很容易找到.