Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.05.2011, 04:54
aimatme вне форума Посмотреть профиль Отправить личное сообщение для aimatme Найти все сообщения от aimatme
  № 1  
Ответить с цитированием
aimatme

Регистрация: Jan 2010
Сообщений: 37
По умолчанию Особенности хранения данных с учетом различных соц сетей

Расскажите а как вы храните данные о пользователях разных социальных сетей?
сталкивался с вариантами когда все в одной таблице хранят (разделяя поиск по soctype = 'vkontakte' допустим), однако заинтересовал вариант когда основные данные хранятся в отдельной таблице, а данные из соц сети (id, имя, фамилия, адрес аватарки) в отдельных. связь между ними осуществляется за счет хранения в основной таблице soctype и socid как foreign key.

Кто как пробовал и реализовывал? как удобнее и возможно быстрее?

Старый 07.05.2011, 13:10
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 2  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Вообще не представляю зачем всех юзеров из разных соц. сетей в одну таблицу сохранять. В чем смысл этого?
Также непонятна идея связей между юзерами разных соц. сетей. Может быть в конкретном случае это как-то обосновано, но в общем все это зачем?

Старый 07.05.2011, 14:45
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 3  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Сообщение от aimatme Посмотреть сообщение
Расскажите а как вы храните данные о пользователях разных социальных сетей?
Это зависит от того, ЗАЧЕМ вы их храните. Если, к примеру, это данные для аутентификации и пользователь однозначно определяется своей identity в выбранной социальной сети -- можно сделать как одну таблицу, так и одну общую + по одной на каждую социальную сеть с использованием общего значения первичного ключа.

Если же принадлежность к социальной сети является одним из атрибутов пользователя и допускается указание участие более чем в одной социальной сети одновременно, то однотабличная реализация явно неразумна.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 09.05.2011, 04:43
aimatme вне форума Посмотреть профиль Отправить личное сообщение для aimatme Найти все сообщения от aimatme
  № 4  
Ответить с цитированием
aimatme

Регистрация: Jan 2010
Сообщений: 37
я вообще хочу добиться минимизации времени регистрации (занесения пользователя в базу) и минимизации времени доступа к социальным данным пользователя

то есть если использовать отдельную таблицу на данные соц сети то доступ к данным будет проходить с двумя условиями WHERE (смотрит тип соц сети и id записи в талице), а в случае с одной общей таблицей все на уровне одной таблицы c WHERE id = n
аналогично с добавлением, для того чтобы добавить пользователя мне надо записывать сразу в обе таблицы
, однако при однотабличном хранении - в одну

Насколько выигрышным будет второй вариант? (использую InnoDB)

Добавлено через 2 минуты
Цитата:
Сообщение от Astraport Посмотреть сообщение
Вообще не представляю зачем всех юзеров из разных соц. сетей в одну таблицу сохранять. В чем смысл этого?
Также непонятна идея связей между юзерами разных соц. сетей. Может быть в конкретном случае это как-то обосновано, но в общем все это зачем?
имеется ввиду не идея связи между ними, а идея их хранения

Старый 09.05.2011, 14:25
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 5  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Коллега, Вы экономите на спичках.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 10.05.2011, 05:59
aimatme вне форума Посмотреть профиль Отправить личное сообщение для aimatme Найти все сообщения от aimatme
  № 6  
Ответить с цитированием
aimatme

Регистрация: Jan 2010
Сообщений: 37
Цитата:
Сообщение от Crazy Посмотреть сообщение
Коллега, Вы экономите на спичках.
так все же в мелочах складывается
при 1000 запросов в час может быть выигрыш неочевиден
а при 1 000 в минуту? или в секунду?

Старый 10.05.2011, 13:54
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 7  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Уже при 1000 в минуту разговор начинается не с того, что храним, а с операций и их частоты. Например, если вставка новых данных происходит в 10,000 раз реже чтения и данные по каждой социальной сети запрашиваются независимо от остальных, то храним в разных таблицах. Если выборка идет по принципу "дайте все данные по социальным сетям выбранного пользователя", то вообще сериализуем все это в XML и храним в записи пользователя.

Под большой нагрузкой вообще все сильно меняется. Если Вам это всерьез не требуется -- лучше пока не заморачивайтесь, сделайте просто логически верную структуру.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 11.05.2011, 16:43
aimatme вне форума Посмотреть профиль Отправить личное сообщение для aimatme Найти все сообщения от aimatme
  № 8  
Ответить с цитированием
aimatme

Регистрация: Jan 2010
Сообщений: 37
в том то и дело что хочу расчитать под большие нагрузки
может есть дока чтобы почитать? а то вдруг я что то не учитываю
просто хочу чтобы база не упала в самый ответственный момент при большом наплыве новых игроков (на инсертах)
а так вообще большинство операций конечно апдейты записей
поэтому использую в таких таблицах innodb который блокирует таблицу на уровне одной записи

Старый 11.05.2011, 17:06
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 9  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Если под большие нагрузки -- тогда идем по порядку. Вопрос первый: какие запросы (вставки, обновления, удаления, выборки) будут применяется к проектируемой структуре и какой процент обращений приходится на каждый в пиковом режиме?

P.S. Преимущественные обновления мягко говоря нехарактерны для веб-приложений (включая игры и т.п.)
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 12.05.2011, 06:50
aimatme вне форума Посмотреть профиль Отправить личное сообщение для aimatme Найти все сообщения от aimatme
  № 10  
Ответить с цитированием
aimatme

Регистрация: Jan 2010
Сообщений: 37
на одного онлайн пользователя приходится 2 селекта при логине (себя и друзей), 1 апдейт (информации из соц сети), и в среднем 2-3 апдейта (количество апдейтов в сессию не ограничено и зависит от длины сессии пользователя) и 1 инсерт под конец сессии (логи)
средняя продолжительность сессии 10 минут
если юзер новый получаем 2 допольнительных инсерта (если хранитб данные соц сетей по разным таблицам) или 1 инсерт -
итого получаем на 1 юзера: 2 селекта, 3-4 апдейта, 1 инсерт (+ 1 или 2 допольнительных)
соответственно пиковый режим наверное можно посчитать за 1000 онлайн или 2000 онлайн

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
db , mysql

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:59.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.