Сейчас сделал так: пользователь регистрируется и для него создается новая БД(db344) и к ней конфиг с его ID(db344.php). После авторизации по его id просто подхватывается нужный файл с настройками например db344.php, в котором указаны логин пароль и адрес для доступа к базе данных. Таким образом я могу подключать новые сервера баз данных и быстро переносить туда сильно загруженные страницы.
Мне интересно послушать ваши идеи по этому поводу
Как вы думаете, правильное ли это решение?
Спустя 2 часа, 19 минут, 59 секунд (29.06.2012 - 09:21) vagrand написал(а):
А как вы собираетесь осуществлять поиск пользователей и вывод списка друзей например?
Спустя 11 минут, 10 секунд (29.06.2012 - 09:33) filippok написал(а):
Цитата (vagrand @ 29.06.2012 - 06:21) |
А как вы собираетесь осуществлять поиск пользователей и вывод списка друзей например? |
таблица друзей
user_id | name
-----------------------------
564 | Сидоров Иван
этих данных достаточно чтобы показать в списке моих друзей фотографию друга, его имя, ссылку на его страницу или сразу написать ему сообщение, а для поиска у меня будет создана отдельная база на отдельном сервере и заполнена специальным образом (оптимизирована) как раз для быстрого поиска и тем самым не будет трогать основные базы
Спустя 9 минут, 44 секунды (29.06.2012 - 09:42) Invis1ble написал(а):
для каждого юзера отдельная БД ?

Спустя 5 минут, 51 секунда (29.06.2012 - 09:48) filippok написал(а):
Цитата (Invis1ble @ 29.06.2012 - 06:42) |
для каждого юзера отдельная БД ? ![]() |
Но не совсем для каждого, там пользователи по категориям делятся, для некоторых создается, а для некоторых нет, это у меня как сервис на Ucoz`e. Там же тоже создается база если ты сайт сделал, а если как пользователь, то ничего не создается.
Спустя 2 минуты, 55 секунд (29.06.2012 - 09:51) vagrand написал(а):
Цитата |
таблица друзей |
И зачем тогда дублировать данные? К тому же указанных вами данных явно недостаточно, нужна еще аватарка, статуст онлайн или офлайн. А как же друзья друзей и прочее?
Спустя 15 минут, 41 секунда (29.06.2012 - 10:07) filippok написал(а):
Цитата (vagrand @ 29.06.2012 - 06:51) | ||
И зачем тогда дублировать данные? К тому же указанных вами данных явно недостаточно, нужна еще аватарка, статуст онлайн или офлайн. А как же друзья друзей и прочее? |
Дублировать необходимо для уменьшения запросов на основную базу.
В таблице указан user_id(например 564) это много о чем говорит например:
ссылка на аватарку - http://img.site.ru/ava/564.jpg
ссылка на его страницу http://site.ru/id/564 там же можно и его друзей глянуть.
А вот про статус On или Off можно и запрос на основную бд сделать, ведь у меня есть его id
Спустя 15 минут, 54 секунды (29.06.2012 - 10:23) vagrand написал(а):
Ну тогда подумайте о следующем, вот у вас скажем 1000 пользователей, соответствено у вас 1001 БД на допустим на 5-ти серверах, т.е. по 200 БД на сервере и вот вам например надо в пределах одной страницы получить данные из 5-ти БД, т.е. вы открываете уже не один конект к БД, а 5, а если учесть что еще и основная БД есть то 6-ть. Дале очень вероятно что все 5-ть конектов будут к разным серверам. Таким образом один пользователь создает нарузку на все 5-ть серверов и я не вижу тут никакого выигрыша.
Можно спроектировать по другому:
1. Одна БД;
2. Основная инфа о пользователе кешируется или даже напрямую хранится пусть в той же MongoDB.
Тогда для получения инфы о конкретном пользователе по его ID, надо будет сделать звпрос к MongoDB, а судя по е описаниям она такие запросы выполняет ну очень быстро.
Можно спроектировать по другому:
1. Одна БД;
2. Основная инфа о пользователе кешируется или даже напрямую хранится пусть в той же MongoDB.
Тогда для получения инфы о конкретном пользователе по его ID, надо будет сделать звпрос к MongoDB, а судя по е описаниям она такие запросы выполняет ну очень быстро.
Спустя 32 минуты, 20 секунд (29.06.2012 - 10:55) filippok написал(а):
Так то действительно я и не подумал, что все запросы пойдут последовательно, а не параллельно, так бы запрос выполнился в 5 раз быстрее, но не факт что базы как раз будут на разных серверах, а про "MongoDB" впервые слышу.
А что если таблицу сообщений отделить от основной бд и кинуть на другой сервер, ведь она будет чаще перезаписываться и создавать очередь.
Я просто боюсь, что база у меня сильно вырастит и ей потом будет сложно управлять, вот и думаю заранее.
может у кого есть какие наработки по схемам и структурам баз данных? И вообще стоит ли делить базы на части?
А что если таблицу сообщений отделить от основной бд и кинуть на другой сервер, ведь она будет чаще перезаписываться и создавать очередь.
Я просто боюсь, что база у меня сильно вырастит и ей потом будет сложно управлять, вот и думаю заранее.
может у кого есть какие наработки по схемам и структурам баз данных? И вообще стоит ли делить базы на части?
Спустя 6 минут, 59 секунд (29.06.2012 - 11:02) vagrand написал(а):
Цитата |
Так то действительно я и не подумал, что все запросы пойдут последовательно, а не параллельно |
Для одного пользователя сами запросы пойдут последовательно, но вот конекты к БД он будет держать параллельно.
Спустя 7 часов, 48 минут, 43 секунды (29.06.2012 - 18:51) filippok написал(а):
Я весь день думал над базой и пришел снова к тому же. Как я понял вы не знаете масштабы проекта. А дело вот в чем, это коммерческая социальная сеть(КСС). Регистрируется у меня предприятие и ему сразу создается сайт. На этом сайте будут различные модули такие как: новости; обратная связь; онлайн заказы и т.п. Они то и будут требовать отдельности базы.
Может кто хочет принять участие
буду полностью переписывать, а сейчас это как набросок, пишу на фраемворке cakephp 2.0
http://zsit.ru
логин: 101
пароль: 101
Может кто хочет принять участие

http://zsit.ru
логин: 101
пароль: 101
Спустя 6 минут, 23 секунды (29.06.2012 - 18:57) I++ написал(а):
Спустя 25 минут, 18 секунд (29.06.2012 - 19:22) filippok написал(а):
Цитата (I++ @ 29.06.2012 - 15:57) |
+1 в таком проекте за транзакты. |
Не понял в каком смысле? )))
Спустя 34 минуты, 1 секунда (29.06.2012 - 19:56) filippok написал(а):
скорее всего у меня по транзакциям и будет построен проект
Спустя 13 часов, 58 минут, 16 секунд (30.06.2012 - 09:55) vagrand написал(а):
Цитата |
Как я понял вы не знаете масштабы проекта. А дело вот в чем, это коммерческая социальная сеть(КСС). Регистрируется у меня предприятие и ему сразу создается сайт. |
Вот интересно и каким образом я мог об этом догадаться по вашему первому посту?

Спустя 11 минут, 29 секунд (30.06.2012 - 10:06) filippok написал(а):
Цитата (vagrand @ 30.06.2012 - 06:55) |
Вот интересно и каким образом я мог об этом догадаться по вашему первому посту? |
Вот и я подумал об этом, сначала надо было рассказать суть и масштабы проекта.
Получается, что я правильно сделал, каждому пользователю своя база данных.
P.S. под пользователем подразумевается предприятие, ведь это коммерческая сеть
Спустя 3 минуты, 1 секунда (30.06.2012 - 10:09) vagrand написал(а):
Цитата |
Получается, что я правильно сделал, каждому пользователю своя база данных. |
Првильно вы сделали или нет покажет практика. Но для такого проекта это боле обосновано, чем для обычной социальной сети.