Динамические прямые поля базы данных или "эмулированные" поля?

96
7

В приложении PHP/MySQL...

Мы планируем предложить пользователям возможность создавать простые базы данных.

Скажем, он может получить более 10000 основных учетных записей пользователей и, возможно, в несколько раз больше через несколько лет. Каким будет эффективный способ?

A) Создайте пользовательские таблицы и поля непосредственно в нашей БД приложения? Разве это не было бы... наши приложения ~ 40 таблиц И как 10000 пользовательских таблиц?

Я понимаю, что в момент запроса и использования и т.д. Это будет эффективно

B) Наличие таблиц таблиц и полей? как...

    table usrtables табетический USRID

    TABNAME

    и т.п.

    table usrfields

    -tabID

    -fldName

    -fldType

    -fldContent

и т.п.

Большое спасибо

спросил(а) 2021-01-19T14:53:16+03:00 2 месяца, 3 недели назад
1
Решение
115

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

Вариант 1, выполняющий весь пользователь в вашей отдельной базе данных, приведет к некоторым проблемам, потому что у вас будет много таблиц, но по крайней мере вы все равно сможете масштабировать, поскольку, пока каждая таблица пользователя не "разговаривает" друг с другом ( соединяется), вы можете обходить/разбивать пользователя на несколько хостов. В итоге вы получаете почти ту же структуру и объем работы, что и предоставление каждой собственной базы данных. Если вам нужно время от времени присоединяться к пользователю, это может быть лучшим способом.

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

ответил(а) 2021-01-19T14:53:16+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема