Выбор базы данных для приложения для голосования

Я видел много тем с вопросами о выборе базы данных для механизма голосования, но мои ответы немного отличаются. У меня есть приложение, содержащее графический интерфейс, в котором может быть несколько полей/переключателей или их комбинация. GUI не исправлен. На основе отправленной формы динамически генерируется XML-ответ.

Таким образом, если есть форма, может быть 10000 разных людей, отправляющих одну и ту же форму. и у меня будет 10000 различных форм (числа будут увеличиваться).

Теперь у меня есть следующие 2 варианта. Храните каждый xml в том виде, в котором он есть в базе данных (я не выбрал использование реляционной базы данных или базы данных nosql, такой как mongodb.) Или анализируйте xml и создавайте таблицы для каждой формы. Таким образом, количество столов будет огромным.

Теперь мне нужно создать механизм голосования, который в основном просматривает все XML-файлы, созданные для конкретной формы, т.е. 10000 XML-файлов, и извлекает отправленные ответы (Примечание: XML-файл сложен, потому что 1 форма может иметь несколько элементов ответа), а затем сделать голосование, чтобы узнать, сколько людей дали тот же ответ.

Мои вопросы:

  1. Должен ли я использовать реляционную базу данных или NOSQL (MongoDB/Redis или аналогичные)?
  2. Нужно ли мне сохранять XML-документы в том виде, в котором они есть в базе данных, или мне следует проанализировать их, преобразовать в таблицы и сохранить? Любой другой подход, которому я могу следовать.

Я использую JAVA/J2EE для текущей разработки.


person Raveesh Sharma    schedule 21.05.2012    source источник


Ответы (2)


Если ваш вопрос о том, как хранить данные с переменной структурой, то база данных документов будет очень кстати. Поскольку он не содержит схемы, проблем с обслуживанием столбцов rdbms не возникнет.

Логически этот способ очень похож на хранение xml в реляционной базе данных. Разница в том, что при использовании rdbms каждый читатель базы данных должен иметь специальный уровень синтаксического анализа xml. (Также о xml вы ссылаетесь на Зачем мне хранить XML и управлять им в реляционной базе данных?.)

В общем, если вы планируете иметь один клиент базы данных, вы можете использовать xml/rdbms.

Кстати, вместо того, чтобы хранить xml, вы можете использовать rdbms другим способом - определить "универсальную" структуру. Например, у вас может быть таблица «Сущности (имя, тип, идентификатор)» и «Атрибуты (entityId, имя, тип, значение)».

person mikalai    schedule 22.05.2012

Если вы храните XML в БД, вы получаете гибкость в отношении производительности и удобства обслуживания (анализ XML с помощью xpath и т. д. может быть многословным и подверженным ошибкам, особенно со сложными и глубоко вложенными структурами XML)

Если вы храните таблицы для каждого XML - вы получаете производительность, простоту использования, сложность против гибкости.

Выберите гибридный подход. Храните XML-файлы в таблице rdbms в виде общей структуры XML (как предлагается в одном из ответов). Таким образом, у вас будет меньше таблиц (меньшая сложность) и вы избежите всех проблем с производительностью при разборе XML.

person basav    schedule 22.05.2012