Я хочу, чтобы в моей базе данных были динамические поля.
Например: я хочу создать приложение для пользователей, чтобы создавать свои собственные формы.
Пользователь может создавать следующие формы:
Личный профиль:
- ФИО
- Улица
- Работа
- Телефон
- Интересы
- Проценты 1
- Проценты 2
- Проценты 3
Работа:
- Имя
- Фамилия
- Работа
- Департамент
- Специальность 1
- Специальность 2
- Департамент
- Специальность 1
- Специальность 2
Страна:
Как видите, это очень динамичная структура:
- Нет предопределенного количества полей
- Нет предопределенных имен полей
- Пользователь создает структуру базы данных
Итак, мне интересно, какая база данных лучше для этого: реляционная (mysql / postgresql) или нереляционная, например mongodb / couchdb / cassandra, или даже XML-базы данных, такие как xindice?
И даже если я выберу для этого нереляционные базы данных, было бы разумно хранить на нем информацию, критичную для безопасности, такую как информация о клиентах и счетах?
Я слышал, как люди говорят, что если ваша информация требует уникальности, используйте реляционную базу данных. «Мы не хотим рисковать, чтобы выставлять счета нашим клиентам дважды». Какие проблемы в нереляционных базах данных они на самом деле означают? Разве вы не можете хранить уникальные данные в нереляционных базах данных?
Еще одна вещь, о которой я думал: не означает ли сохранение данных в нереляционных базах данных, что у меня будут дублированные записи?
Рассмотрим этот пример:
Категория:
Как видите, существуют ситуации для идентичных записей. Как с этим справляются нереляционные базы данных? Я так привык к реляционным базам данных.
Подводя итог моим вопросам:
- Какой тип базы данных для созданной пользователем структуры базы данных?
- Являются ли нереальные базы данных для хранения критически важной информации?
- Как нереальные базы данных обрабатывают дубликаты?