选择投票应用程序的数据库

时间:2012-05-21 08:14:55

标签: database database-design architecture nosql voting-system

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

因此,如果有表格,可以有10000个不同的人提交相同的表格。我会有10000种不同的形式(数字会增加)。

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

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

我的问题:

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

2 个答案:

答案 0 :(得分:1)

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

逻辑上,这种方式非常类似于在关系数据库中存储xml。区别在于使用rdbms方法,每个数据库读取器都应该有一个特殊的xml解析层。 (关于你引用Why would I ever choose to store and manipulate XML in a relational database?的xml。)

通常,如果您计划拥有单个数据库客户端,则可以使用xml / rdbms。

顺便说一句,不是存储xml,而是以其他方式使用rdbms - 定义“generic”结构。例如,您可以拥有“实体(名称,类型,ID)”表和“属性(entityId,名称,类型,值)”。

答案 1 :(得分:0)

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

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

选择混合方法。将XML作为通用XML结构存储在rdbms表中(如其中一个答案中所述)。这样,您可以减少表的数量(降低复杂性)并避免XML解析的所有性能问题。