2013-12-23 2 views
0

Какой лучший дизайн для социальной сети обмена на основе телефонной книги?Хорошая схема для neo4j DB

Фон: Приложение синхронизирует телефонную книгу контактной и социальной сети пользователя и создает график и дает рекомендации.

Использование: 1. Рекомендация друзей, общие друзья людям в телефонной книге. 2. Изначально не многие узлы, к которым пользователь подключается, имеют социальную связь, поэтому может быть
случай, когда у вас много друзей, но очень немногие из них являются социальными друзьями. Имеет ли смысл , чтобы иметь новые отношения для каждого социального ID (be bbm, FB, linkedin) 3. Мы построим сеть, через которую старый пользователь получает уведомление, когда новый пользователь присоединяется к любой из социальных сетей и зарегистрируется в нашем приложении. 4. Выбор дня - основанный на общих друзьях (степень и социальные интересы и страна), пользователь может искать мудрые социальные идентификаторы страны. 5. Пользователь всегда ищет людей из одной страны или ее подключенного узла (до 4 градусов) на основе мужских/женских и возрастных фильтров. 6. Обновление статуса будет сообщено другим связанным узлам с социальными идентификаторами.

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

Имеет ли смысл добавлять друзей и социальных друзей в качестве отношения?

ответ

0

Обычно вы могли бы сделать что-то вроде этого:

(u:User { phone : "phone#" })-[:ON_PHONE]->(u2:User { phone : "phone#" }) 

(u:User { phone : "phone#" })-[:KNOWS]->(u2:User:Facebook { phone : "phone#", fbid: "fbid" }) 

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

(u:User { phone : "phone#" })-[:KNOWS_ON_FB]->(:FacebookUser {fbid:"fbid"})<-[:ON_FB]-(u2:User { phone : "phone#", fbid: "fbid" }) 

Я думаю, что в большинстве случаев вам не нужно хранить записи и нужно просто сосредоточиться на структуре «реального времени/текущего» вашего графика, которую вы можете обновить.

Вы можете добавить дополнительные метки для пользователей, если у вас есть Facebook, LinkedIn и т.д. для них информацию, а затем добавить дополнительные индексы:

create index on :User(phone) 
create index on :Facebook(fbid) 
+0

Спасибо Майкл за предложенные schema.I имею в виду, чтобы выбрать knows_on < социальная сеть> учитывая, что в будущем может быть модель SAAS, основанная на нашей первоначальной работе. Я считаю, что компании хотели бы, чтобы отношения поддерживались отдельно, и мы также можем записывать информацию о том, откуда пришли социальные сети. С учетом сказанного вы подумайте, что нам нужна страна как отдельное отношение для масштабируемости, так как у нас есть пользователи, которые ищут пользователей (в социальной сети) в конкретной стране. Мы используем фильтр страны и мужчины/женщины как другой Отношение это правильно? – user2756260

Смежные вопросы