2012-05-21 36 views
1

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

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

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

现在,我必须建立一个投票机制基本上着眼于已为特定的形式,即10000 XML的生成所有的XML的,并提取提交的答案(注意:XML是复杂的,因为1点的形式可以有多种答案元素),然后做一个投票来找出有多少人给出了相同的答案。

我的问题:

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

我正在使用JAVA/J2EE开发currenty。

回答

1

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

从逻辑上讲,这种方式与在关系数据库中存储xml非常相似。不同之处在于,使用rdbms方法时,每个数据库读取器都应该有一个特殊的xml解析层。 (关于xml,你可以参考Why would I ever choose to store and manipulate XML in a relational database?。)

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

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

0

如果您存储在数据库中的XML - 你获得的灵活性对性能和可维护性(XML使用XPath等解析可以冗长且容易出错尤其是复杂的,深层嵌套的XML结构)

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

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

相关问题