powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Структура БД для мультиаккаунтного сервиса
7 сообщений из 7, страница 1 из 1
Структура БД для мультиаккаунтного сервиса
    #38978528
otrubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Наставьте на путь истинный)) или ткните что почитать по следующему вопросу:

Задуман мультиаккаунтный сервис. В некоторых таблицах сервиса потенциально может быть очень много записей, например в таблице учета посещений определеных веб-страниц.

Что бы было понятно, приведу пример без подробностей. Таблица hits, поля таблицы:
- id
- user_id
- page_id
- account_id
- hit_time

Вопрос собственно вот в чем: оставить таблицу в таком виде или же при создании каждого аккаунта создавать для него отдельную структуру таблиц, естественно поле account_id в этом случае будет лишним.

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

Непонятен следующий момент, допустим на каждый аккаунт требуется 20 таблиц. 1000 аккаунтов, это уже 20 000 таблиц. Как это может отразится на работе Mysql? Не будет ли каких-то проблем из-за такого большого кол-ва таблиц?

Возможно кто-то делал подобное, прошу поделиться опытом.
...
Рейтинг: 0 / 0
Структура БД для мультиаккаунтного сервиса
    #38978543
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разделение нецелсообразно. Единая таблица плюс грамотная индексация. А вся логика - искючительно на ХП и УДФ, исключающих доступ к "чужим" данным.
...
Рейтинг: 0 / 0
Структура БД для мультиаккаунтного сервиса
    #38978753
otrubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaРазделение нецелсообразно. Единая таблица плюс грамотная индексация. А вся логика - искючительно на ХП и УДФ, исключающих доступ к "чужим" данным.

Большое спасибо за ответ! Но хотелось бы услышать (кратко) аргументы против такого подхода. Насколько я знаю, технически ограничений нет (возможно плохо смотрел).
...
Рейтинг: 0 / 0
Структура БД для мультиаккаунтного сервиса
    #38978773
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otrubinНасколько я знаю, технически ограничений нет.
Они есть, но их достичь малореально.
Аргументов за единое хранилище предостаточно, они не раз озвучивались, поиск поможет. Вот некоторые:

- DDL, работающий не с временными структурами уровня сеанса или соединения, в клиентском приложении - однозначное свидетельство плохой структуры, к тому же требует явно избыточных прав, что само по себе есть косяк и дыра в безопасности;

- Большое количество таблиц приводит к быстрому вымыванию кэшей (данных, индексных, запросов), что снижает эффективность работы сервера;

- Любые обработки, требующие доступа к данным более чем одного пользователя (сравнения, статистики и пр.), требуют динамического построения запросов (снова минус эффективность - тем более что становится проблемным использовать индексацию) и избыточного доступа к метаданным.
...
Рейтинг: 0 / 0
Структура БД для мультиаккаунтного сервиса
    #38979152
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
otrubinAkinaРазделение нецелсообразно. Единая таблица плюс грамотная индексация. А вся логика - искючительно на ХП и УДФ, исключающих доступ к "чужим" данным.

Большое спасибо за ответ! Но хотелось бы услышать (кратко) аргументы против такого подхода. Насколько я знаю, технически ограничений нет (возможно плохо смотрел).

походу не то что не смотрел, даже и не думал... а если пользователей милион? а если милиард... а трилиард таблиц....точно ограничения нету?

а список таблиц ...на 30 милионов...как из этого списка найти нужную таблицу? индексацией...индексацией по чему ? если имена таблиц по принципу -имя-+-айди-юзера-
а если по такому индексу. то чем это принципиально будет отличаться от поиска с индексацией по айдиюзера в одной таблице?
...
Рейтинг: 0 / 0
Структура БД для мультиаккаунтного сервиса
    #38979167
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есчё глубже копнуть....

то при одной таблице при использовании составного индекса -айди-юзера- + -некое-поле
будет идти поиск - сначала таблицы в огромном списке таблиц, в самом лучшем случае по индексу тогоже юзера, потом поиск этой таблицы на винчестере (если на каждую таблицу отдельный файл) + в самой таблице поиск по -некое-поле-

с другой стороны...а если для статистики надо подсчёт сделать по всем юзерам- ... пооткрывать в цикле 30млн файлов...врядли дело быстрое


таблица прав, в лудшем случае, все юзеры имеют глобальные права..... если же каждому юзеру есчё права на его таблицы прописывать, таблица прав разростаеться(самой субд) ...

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

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

- одна таблица, один файл=один винчесте - чтение с него частое

-разбили на два файла, = два разных винчестера...чтение тогоже обьёма произойдёт быстрее

- но 30млн винчестеров...врядли...


или таблица делиться на таблица все кроме сегодня(актуальные данные) и сегодня. и сегодня размещаеться в оперативке или на влешовой памяти... тут можно чтото сукорить.

а подход....вместо 30 млн записей в одной таблице, 30 млн таблиц по одной записи...

это в стиле мускл я учу, а то как мускл работает не мое дело...этож не мне 30млн ...у меня одна запись, а остальное проблема мускла...пусть как хочет так и работает...
...
Рейтинг: 0 / 0
Структура БД для мультиаккаунтного сервиса
    #38979219
otrubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina- Большое количество таблиц приводит к быстрому вымыванию кэшей (данных, индексных, запросов), что снижает эффективность работы сервера;


Еще раз спасибо. Кэш действительно проблема.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Структура БД для мультиаккаунтного сервиса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]