你如何处理小数据集?

时间:2008-09-25 13:42:50

标签: database theory

使用非常小的数据集,我工作的策略通常是将它们粘贴到文本文件中,但根据我的经验,这可能是一个令人头疼的问题。数据通常来自数据库,当它没有时,设置/存储数据的过程通常隐藏在代码中。通过数据库,您通常可以看到所有可用的数据以及它与其他数据的关联方式。

有时对于非常小的数据集我只是将它们存储在代码中的内部数据结构中(如A Perl哈希),但是当需要进行更改时,它就在开发人员的手中。

那么你如何处理不常更改的小数据?您是否设置了何时使用数据库表或文本文件或..的标准?

我很想将数据库表用于绝对的一切,但我不确定是否会对此产生任何影响。

编辑:对于上下文:

我被要求在网站上为少数公司添加一个新的联系表格,将来偶尔会添加更多的联系表格。除了公司没有联系电子邮件地址..这些公司内部的用户这样做(因为他们通过自己的帐户发布工作)。现在,我们想要一个“推测应用程序”类型的功能,并且表单需要一个电子邮件地址来发送这些应用程序。但我们也不希望将电子邮件地址作为表单中的属性,否则垃圾邮件发送者只能将其用作开放式电子邮件网关。很明显,我们需要一个ID - > contact_email与公司的关系类型。

所以,我可以在一个包含数百万行的表中添加一列,字面上大约20次,或者创建一个最多可容纳20行的新表。通常我们过去如何处理这个问题只是创建一个讨厌的文本文件并从那里读取它。但是这会产生维护噩梦,并且当它们依赖的数据发生变化时,这些文本文件经常被查看。也许这是一个错误的过程,但我只是想听听这个问题。

8 个答案:

答案 0 :(得分:2)

将它放在数据库中。如果它不经常更改,请将其缓存在中间层。

答案 1 :(得分:2)

立即想到的例子是适合存储为枚举的内容以及存储在“查找”数据库表中的内容。

我倾向于使用以下规则“画线”:如果它将导致数据库中包含映射到枚举值的“幻数”的列,则枚举应该作为查找表存在。如果它与存储在数据库中的数据无关(例如,应用程序配置数据而不是用户生成的数据),则它一直是枚举。

答案 2 :(得分:2)

当然,这取决于您开发的软件工具的用户使用的数据集,无论大小如何?

可能只是他们了解Excel,因此您的工具必​​须解析他们创建的.csv文件。

如果它是为开发人员编写的,那么谁在乎你使用的是什么。然而,我并不喜欢使用次要数据或瞬态数据来混淆数据库。

答案 3 :(得分:2)

我们有一个标准的配置文件格式(键:值)和一个处理它的类。我们只是在所有项目中使用它。大多数情况下,我们只是为我们的应用程序(移动电话开发)设置持久属性,这是一个合适的事情。 YMMV

答案 4 :(得分:2)

如果程序访问数据库,我会将所有内容存储在那里:更容易备份和移动数据。

对于没有数据库访问权限的小程序,我将我的数据存储在.net设置中,这些设置存储在xml文件中 - 当然这是c#的一个功能,所以它可能不适用于你。

无论如何,我确保将所有数据存储在一个地方。通常是数据库。

答案 5 :(得分:2)

您考虑过sqlite了吗?它是基于文件的,它解决了你“只是一个文件可能会做”的感觉(零配置),但它是一个非常好的数据库并且非常好地扩展。它支持许多API,并且numerous front ends用于管理它。

答案 6 :(得分:1)

如果这些是类似配置的小数据,我使用一些简单和通用的格式。 ini,json和yaml通常都可以。 Java和.NET粉丝也喜欢XML。简而言之,使用一些你可以轻松读取到内存中对象的内容而忘记它。

答案 7 :(得分:1)

我会将它添加到主表中的数据库中:

  1. 备份和恢复(你确实要恢复这个文本文件吗?)
  2. Adhoc查询(因为你可以使用SQL工具并将其加入其他数据库数据)
  3. 如果数据库列为空,则对它的存储要求应该是最小的(如果它是Oracle中表的末尾的NULL列,则没有任何内容)
  4. 如果您想拥有多个应用程序服务器会更容易,因为您不需要保留一些额外配置文件的多个副本
  5. 将它放入小孩子桌只会使设计复杂化而不会带来任何实际好处
  6. 无论如何,您可能已经在数据库中的同一行进行了处理,因此性能不太可能成为问题。如果不是,可以将其缓存在内存中。