我们总是有一些静态数据可以作为数组存储在文件中,也可以存储在基于Web的项目的数据库表中。那么应该首选哪一个?
在我看来,数组有一些优点:
但我的同事认为他更喜欢数据库方法,因为它可以保持统一的数据持久性接口,并且更灵活。
那么应该首选哪个?或者我们如何选择?或者我们应该在某些场景中选择一个而在其他场景中更喜欢?场景是什么?
编辑:
让我澄清一下。正如本杰明对标题所做的更改一样,我们想要存储在数组(文件)中的数据不会经常更改,这意味着代码不会更改运行时数组的值。如果数据变化非常频繁我无疑会使用DB。这就是我做这样一个帖子的原因。
有时很难存储一些非常复杂的关系,例如:
Task = {
"1" : {
"name" : "xx",
"requirement" : {
"level" : 5,
"money" : 100,
}
...
}
就像上面的代码示例(python dict或者你可以把它想象成一个数组)一样,需求字段很难存储在DB中(直接在DB中存储像pickle对象这样的结构?我觉得不太好)。所以在这种情况下,我会更喜欢数组。
那么你的想法是什么?在这种情况下,我们应该更喜欢数组到DB,对吗?
问候。
答案 0 :(得分:5)
让我务实/客观:
当然,我已经忘记了其他一些观点,但我想基础知识就在那里。
答案 1 :(得分:3)
文件中的“灵活”数组充满了使用数据库已经解决的大量问题。除非您能够证明数据库确实比使用其他方法更慢,否则请使用数据库。继续前进并开始解决业务问题。
修改强>
OP的评论询问使用文件的问题是什么,这里有一些(暂停深呼吸)。
答案 2 :(得分:2)
你的同事是对的,但是你需要放下comp sci教科书并务实。您多久会从您的应用程序访问这些数据?如果频繁,则不会产生访问开销的成本。您不仅可以从平面文件中读取数据,还可以获得数据库的优势,而是在应用程序中使用缓存策略。根据您的开发语言,您可以查看memcache或jtreecache等内容。
答案 3 :(得分:0)
这取决于您正在查看的数据类型,以及是否需要定期更新。
我倾向于在数据库中保留大部分内容(非配置数据),即使数据不会重复(例如行的thosands)。数据库的扩展比平面文件容易得多,如果系统开始快速增长,平面文件可能会成为系统的负担。
答案 4 :(得分:0)
如果数据没有很大的变化,并且您的Java编程,为什么不使用Spring来保存值?
它们可以注入你的bean,并且很容易改变。
但如果你用Java开发那就好了。
答案 5 :(得分:0)
是的,我同意您的隐含评估,即数据库被过度使用,基本平面文件可能在多种情况下都有效。如果您的应用程序是只读的(并且在应用程序重新启动时由管理员完成写入),我肯定会使用该文件。即使应用程序写入文件,但只在附加模式(相对于随机插入/更新)在一个线程中,我也会使用文件。还有别的 - 需要一个真正的数据库,包括随机更新,查询,并发控制等。