Вопрос по БД
176 сообщений
#15 лет назад
Как лучше поступить, я хочу создать нечто подобное livejournal.com.Как известно на этом сервисе, как и в любой соц сети есть пользователи и у каждого пользователя есть своя информация которая сохраняется у БД.
Как лучше:
1. Чтобы информация отдельных пользователей была у БД специально созданных для него;
2. Одна БД со всеми данными от всех пользователей (все сохраняется в общих таблицах);
3. Одна БД со всеми данными от всех пользователей (каждому пользователю свои таблицы, шаблон тот же, префиксы разные (app_users, ne_users и т.д.) ).
16382 сообщения
#15 лет назад
А вот если представить себе, что плодить одинаковые сущности это вредно. Как поступить в этом случае?
589 сообщений
#15 лет назад
Естественно одна база и одна таблица - пункт 2. Как Вы представляете, например, получение сводной информации по тысячам таблиц или баз, или обновления структуры, или добавление модулей? Это не говоря о том, что физические сервера будут слабо поддерживать столько баз.
16382 сообщения
#15 лет назад
Pilat66, ну зачем было так сразу палить контору? 
83 сообщения
#15 лет назад
4. если собираетесь делать своими силами - начать с чего-нибудь попроще, а так, конечно же, искать команду на проект (и очень мноооого денег 
3240 сообщений
#15 лет назад
Цитата ("lovelas"):Как лучше:
1. Чтобы информация отдельных пользователей была у БД специально созданных для него;
2. Одна БД со всеми данными от всех пользователей (все сохраняется в общих таблицах);
3. Одна БД со всеми данными от всех пользователей (каждому пользователю свои таблицы, шаблон тот же, префиксы разные (app_users, ne_users и т.д.) ).
Так-с, рассмотрим эти способы.
1. Этот способ самый надежный и безопасный. Если БД такого-то пользователя будет повреждена или взломана, то БД других пользователей с большей вероятностью будут в порядке. Но при этом на проект в целом накладывается ряд функциональных ограничений.
2. Этот способ самый лучший с точки зрения производительности, и он наиболее функционален.
3. Это аналогично способу 1 с точки зрения безопасности, то есть можно разным пользователям дать раздать пермиссии только на их таблицы, и т.д., но это немного менее надежно. И те же функциональные ограничения присутствуют.
Это в теории. На практике же способы 1 и 3 имеют право на жизнь лишь если у Вас всего несколько пользователей, и нет сквозных запросов по всем пользователям (например, ка френдленту-то смотреть...). В настоящее время повсеместно применяется способ 2, именно этот способ лучше и выбрать в данном случае.
589 сообщений
#15 лет назад
Я, кстати, реализовал комбинацию пунктов 1 и 3 недавно - не для пользователей, а для версий наборов данных, которых было немного. Пока не начал переходить на DBIx::Class, всё казалось правильным, логичным и быстрым.
5330 сообщений
#15 лет назад
Все так просто реализовывается, что непонятно зачем отдельная тема. есть конкретные проблемы в реализации?
55 сообщений
#15 лет назад
По пункту 3 реализовано разделение данных пользователей в WordPress MU ( multi-user ):wpmu_1_posts
wpmu_1_comments
wpmu_1_options
...
94 сообщения
14 сообщений
#15 лет назад
Только 2 вариант тут другого даже быть не может. Но вот стоит ли хранить все данные о пользователе в одной таблице это уже вопрос нужно проектировать, т.к. иногда лучше разделить иногда нет.