Я работаю в социальной сети. Теперь наша команда решает хранить профиль пользователя в денормализованном виде. поэтому наша структура таблицы выглядит следующим образом
здесь атрибут означает одно поле для профиля пользователя, например, Имя, Фамилия, Дата рождения и т. Д. ...
и groups означает название группы полей, например Личные данные, академическая информация, достижения и т.д ..
**
Атрибут / Мастер групп - он создает
иерархия групп и атрибутов.
**
Attribute_GroupId bigint
ParentId bigint
Attribute_GroupName nvarchar(1000)
ISAttribute bit
DisplayName nvarchar(1000)
DisplaySequence int
**
Атрибут управления информацией - магазины, которые
контроль должен быть заполнен во время бега
время для атрибута, а также его
критерии проверки ...
**
Attribute_ControlInfoId bigint
AttributeId bigint
ControlType nvarchar(1000)
DataType nvarchar(1000)
DefaultValue nvarchar(1000)
IsRequired bit
RegulareExpression nvarchar(1000)
**
И, наконец, значения атрибутов, где для
каждый атрибут, пользовательские значения
будет храниться
**
AttributeId bigint Checked
IsValueOrRefId bit Checked
Value nvarchar(MAX) Checked
ReferenceDataId bigint Checked
UserId bigint Checked
Unchecked
Теперь они говорят, что мы создадим индекс для таблицы значений атрибутов. там нет и первичного ключа.
КАК в этой таблице будут храниться огромные данные. например если там будет 50 миллионов пользователей и 30 атрибутов, будет храниться 1500 миллионов записей. в этом случае, если мы создадим индекс для таблицы, оператор Insert и Update будет очень медленным, а также во время выборки данных для одного пользователя. Запросы также будут очень медленными.
Я подумал, что один вариант для этого, вместо значений атрибутов, я могу сохранить одну запись XML для одного пользователя.
Так что, пожалуйста, кто-нибудь может помочь мне найти лучший вариант для этого случая. как хранить данные?
здесь я не могу составить таблицу с жестким кодом, потому что администратор может добавлять новые поля в любое время, поэтому мне нужна некоторая структура данных, где я могу легко добавить любые поля в профиле пользователя всего за 1-2 шага.
пожалуйста, ответьте мне, если у кого-нибудь есть лучшее решение для этого.