我正在构建一个利用静态数据的小型C ++项目(它不会在用户端更改,只有在需要更改时才会更新)。数据本身将包含五个不同类别的项以及各种字段。这些项目的一个例子是:
item1 {a=3, b=2, d=4}
item2 {c=4, d=2, m=3}
...
每个项目都可以包含任意数量的字段(本例中为a-z),并带有关联值。每个类别都有一个项目列表(想想包含上述文本行的五个不同文件)。
该计划的目标是从每个类别中找到一个项目,其中包含的不同字段将总和以满足所需的输入(即总和(d)== 10,总和(x)== 20 )。由此产生的五个项目将至少满足这些要求。我的目标是通过找到五个不同类别的笛卡尔积(在通过仅查找包含来自输入的至少一个字段的项目来缩小它)来完成此操作,然后在结果中循环以找到五个项目的集合这是正确的。
现在回答我的问题:我很好奇是将数据存储在文本文件中(并在每次启动时加载它),还是使用SQLite。使用文本文件肯定会更好地实现,至少对我来说。但我确信它不会像加载所有内容一样高效,并且每次启动程序时都会将其存储到正确的数据对象中。
使用SQLite,我可以立即拥有一切,并且可以直接使用查询执行我的大部分任务。在找到笛卡尔积之前我如何缩小表格,然后进一步循环搜索结果以获得答案,我有点不确定。不过,我确信我可以通过时间和研究来解决这个问题。
那么,StackOverflow的专家,您对此有何看法?如果不是我计划进行数据的具体操作,我会选择SQLite。但有了这个,我有点不确定,并希望确保从长远来看保持这种简单性。
答案 0 :(得分:1)
这部分取决于您计划存储多少条记录 - 在特定大小的情况下,RDBMS的好处开始显示自己有一个巨大的平面文件阻塞了您的RAM。
您所谈论的规则非常简单,您可以获得可靠性,数据完整性检查以及RDBMS带来的其他优势。如果是我,我会整天去SQLite。
答案 1 :(得分:0)
使用SQLite会使数据库scalabale,基于查询,如果需要实现任何新操作,它将更快地进行操作。 基于分隔符的文件系统管理将更容易实现,因为它不需要理解查询语言。 SQLite是别人的代码,而FMS则是你自己的代码。代码,因此任何面临的错误或问题都很容易诊断和修复。
PS:我目前正在研究EMV支付系统(SDK)并且必须维护交易记录,我最初使用SQLite3用于此目的,但后来将我的实现移至FMS,因为db存在间歇性问题,它是很难调试它们,最常见的是SQLite3中的错误代码21,其中可用的帮助最少,其次很难找到内存泄漏,新手很容易创建。 简而言之,如果您的数据库不是很大,易于管理而且您可以根据分界符设计结构,我建议您使用FMS,但要确保使其“结构良好”。