Это обычная социальная сеть. Любой пользователь имеет "Настройки профиля"Какой подход намного лучше для партий ENUM?
Там около 30 настроек пользователь может изменить, так Там уже некоторые категории:
- настройки профиля
- SMS | Уведомления по электронной почте
- настройки авторизации
- Настройки безопасности
- настройка доступа
Я сделал несколько таблиц, которые хранят настройки (тип ENUM)
Если я падаю, что настройки в столики, как это (конечно, уникальный идентификатор пользователя будет проиндексирован)
(Идентификатор пользователя является первичным ключом везде на вкладках)
CREATE TABLE user_profile_settings (...) type=MyISAM;
CREATE TABLE user_profile_notif (...) type=MyISAM;
CREATE TABLE user_profile_auth (...) type=MyISAM;
CREATE TABLE user_profile_security (...) type=MyISAM;
CREATE TABLE user_profile_access (...) type=MyISAM;
Затем один запрос сводится к нескольким таблицам сразу, что также означает некоторое изменение вниз. Преимущество этого: Если я не читаю только из user_profile_settings, я запрашиваю только идентификатор index из этой таблицы.
Второй подход заключается в следующем: создать одну строку для всех пользовательских настроек пользователь имеет, как это:
CREATE TABLE all_user_config (/***/) type=MyISAM;
Он содержит около 30 colums, но делает немного труднее поддерживать всю систему.
Вопрос: Какой подход рекомендуется и подходит для миллиарда строк?
Я согласен, потому что наличие одной таблицы имеет тенденцию делать вещи более удобными для обслуживания. Однако вы можете попасть в ситуацию, когда вы храните ключи для общей таблицы как 4 байта, но вы можете уйти с 1 байтом для отдельных значений. Если длина строки является главной задачей, вы можете попробовать другой подход. –