1

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

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

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

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

Мои вопросы:

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

Я использую JAVA/J2EE для точного определения.

ответ

1

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

Логически этот способ довольно похож на хранение xml в реляционном db. Разница заключается в том, что при использовании подхода rdbms каждый читатель базы данных должен иметь специальный слой синтаксического анализа xml. (Также около xml вы ссылаетесь на Why would I ever choose to store and manipulate XML in a relational database?.)

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

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

0

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

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

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