Совет по смешиванию MongoDB с MySQL для веб-приложения

У меня есть веб-приложение, которое использует реляционную базу данных (MySQL). Мы добавляем новую функцию, которая позволит определенным пользователям динамически создавать «формы» из пула дополнительных элементов форм и распространять эти формы для заполнения / отправки другим пользователям.

Проблема заключается в хранении заполненных отправленных форм.Каждая форма может и будет различаться по количеству и комбинации элементов формы, а с реляционной базой данных мои возможности несколько ограничены динамическим созданием новой таблицы для хранения представлений каждой формы (похоже, плохой путь для спуска) или хранения каждая из представленных форм в виде JSON в столбце TEXT (теряя все полезные возможности запросов СУБД)

Я никогда раньше не использовал MongoDB в производственном проекте, но я думаю, что было бы неплохо использовать мои Реляционная база данных MySQL для хранения всех форм, созданных определенными пользователями моего приложения, а затем хранения всех представленных материалов в MongoDB с каждым документом, ссылающимся на UUID формы в MySQL.

Первый недостаток этого подхода, о котором я могу думать, - это отсутствие ссылочной целостности между отправкой форм и формами, расположенными в MySQL. Если я удалю форму в MySQL, все отправленные формы придется удалить вручную (если я хочу воспроизвести эффект «Каскад»)

Могу ли я сохранить все отправленные мной формы для всех моих форм в одном Коллекция MongoDB как отдельные документы? Любые советы высоко ценится. :)


РЕДАКТИРОВАТЬ 1 На основе документации здесь: http://www.mongodb.org/display/DOCS/Using+a+Large+Number+of+Collections

Сейчас я подумываю о создании новой коллекции для хранения всех представления из каждого уникального типа формы.


РЕДАКТИРОВАТЬ 2

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

enter image description here

По сути, каждая запись в «формах» представляет собой уникальную форму, созданную пользователем. 'forms_fields' имеет внешний ключ, который ссылается на форму и тип перечисления с параметрами: 1. флажок 2. текстовое поле 3. textarea 4. выберите 5. множественный выбор 6. date

'forms_fields_options' содержит все 'опции', которые может иметь поле выбора. С помощью этих трех таблиц пользователи могут создавать собственные формы.

Когда другой пользователь заполняет и отправляет форму, создается запись в forms_submissions. Для каждого поля будет создана соответствующая запись в «forms_submissions_fields», которая ссылается на отправку формы и form_fields_id. Последняя таблица, 'forms_submissions_options_multiselect', по сути, является таблицей соединений, чтобы указать, какие параметры из поля формы с множественным выбором выбрал пользователь.

9
задан Community 22 September 2017 в 18:01
поделиться