1

我看到很多主题要求为投票机制选择数据库,但我的输入有点不同。我有一个包含 GUI 的应用程序,其中可以有多个字段/单选按钮或以上的组合。GUI 不固定。根据提交的表单,动态生成答案 XML。

因此,如果有一个表单,那么可能有 10000 个不同的人提交同一个表单。我将拥有 10000 种不同的表格(数量会增加)。

我现在有以下 2 个选项。将每个 xml 原样存储在数据库中(我没有选择使用关系数据库或 nosql 数据库,如 mongodb。)或解析 xml 并为每个表单创建表。这样表的数量将是巨大的。

现在,我必须建立一个投票机制,它基本上查看为特定表单生成的所有 xml,即 10000 个 xml,并提取提交的答案(注意:xml 很复杂,因为 1 个表单可以有多个答案元素)然后投票看看有多少人给出了相同的答案。

我的问题:

  1. 我应该使用关系数据库还是 NOSQL(MongoDB /Redis 或类似的)?
  2. 我是否需要将 xml 文档保存在数据库中,还是应该解析它并将其转换为表格并保存?我可以遵循的任何其他方法。

我目前正在使用 JAVA/J2EE 进行开发。

4

2 回答 2

1

如果您的问题是关于如何存储可变结构的数据,那么文档数据库将非常方便。由于它是无模式的,因此 rdbms 列维护不会有任何问题。

从逻辑上讲,这种方式与将 xml 存储在关系数据库中非常相似。不同之处在于,使用 rdbms 方法,每个数据库读取器都应该有一个特殊的 xml 解析层。(还有关于 xml,您参考了为什么我会选择在关系数据库中存储和操作 XML?。

一般来说,如果您打算拥有一个单一的数据库客户端,您可以使用 xml/rdbms。

顺便说一句,您可以以其他方式使用 rdbms,而不是存储 xml - 定义“通用”结构。例如,您可以有“Entities (name, type, id)”表和“Attributes (entityId, name, type, value)”。

于 2012-05-22T08:42:33.100 回答
0

如果您将 XML 存储在数据库中 - 您将获得性能和可维护性方面的灵活性(使用 xpath 等进行 XML 解析可能很冗长且容易出错,尤其是对于复杂且深度嵌套的 XML 结构)

如果您为每个 XML 存储表 - 您将获得性能、易用性、复杂性和灵活性

选择一种混合方法。将 XML 作为通用 XML 结构存储在 rdbms 表中(如答案之一中所建议)。通过这种方式,您可以拥有更少的表(更少的复杂性)并避免 XML 解析的所有性能问题。

于 2012-05-22T11:05:49.347 回答