С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Базы данных
Войти
Регистрация
Восстановить пароль
 
outoftime
║XLR8║
764 / 663 / 212
Регистрация: 25.07.2009
Сообщений: 3,320
Записей в блоге: 5
1

Чем лучше пользоваться для реализации задачи?

07.03.2018, 13:31. Просмотров 140. Ответов 0
Метки нет (Все метки)

Есть пользователи User которые связанные с другими пользователями N:N. Нужно для каждого пользователя выводить множество пользователей на всю глубину графа связей, т.е. тех, к кому есть путь в графе связей.

Первое что я подумал: завести графовую БД и радоваться жизни. Но, у нас же неизвестна глубина, может быть такое что есть 1000 пользователей которые связаны друг с другом по типу списка, когда каждый дружит с двумя соседями. Как такое записать в Neo4J? Если решать тоже на Radis, можно написать Lua script который будет наботать на стороне сервера и "быстро" пройдет по всем множествам связей и вернет множество польвателей к которым можно дотянуться связями.

Я вполне готов на одну эту задачу поиска выделить отдельную БД и микросервис. Возможно, даже придерживаться event sourcing-а и перед каждым запросом о поиске, запрашивать данные об изменении состояния связей.

Добавлено через 59 минут
Нашел ответ как делать рекурсивный поиск на Neo4j https://stackoverflow.com/questions/...nswer-31080118

This query goes 2 level deep.

Код
MATCH (john:Person { name:"John" })-[:friend *1..2]->(friend: Person)
RETURN friend.name, friend.age;
To go n nevel deep, don't put anything i.e. *1..

So what does *1..2 here means:
  • * to denote that its a recursion.
  • 1 to denote that do not include john itself i.e. is the start node. If you put 0 here, it will also include the John node itself.
  • .. to denote that go from this node till ...
  • 2 denotes the level of recursion. Here you say to stop at level 2. i.e. dont go beyond steve. If you put nothing there, it will keep on going until it cannot find a node that "has" a friend relationship
Осталось попробовать это в действии на тестовых данных.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2018, 13:31
Ответы с готовыми решениями:

На чем лучше изучать SQL?
Хочу изучить SQL. Посоветуйте, на чем его лучше изучать? Вообще, на тему БД у...

В чем лучше сделать торгово-складскую БД
подскажите, в чем лучше сделать торгово-складскую БД, с возможностью учета...

Как (и на чем) лучше сделать расчет калькуляции
Вопрос скорее идеалогический. Задача такова. Есть юзер, которому раз в день...

Что выбрать для реализации!?
Всем доброго времени суток! Суть такова - через год писать диплом, а сейчас в...

Какой IDE лучше всего пользоваться при создании хранимых процедур?
Есть ли какие-то альтернативы MS SQL server management studio?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2018, 13:31

Чем пользоваться лучше для организации имитации движения ?
В Microsoft Winndows Common Conntrols имеется ImageList, позволяющий грузить в...

Чем лучше пользоваться при создании ASP?
я пользуюсь Front Page по привычке, но есть такое подозрение что для подобных...

Посоветуйте чем лучше пользоваться VB 6.0 или VB 2008 express
Здравствуйте. Я начал учить программирование на VB 6.0, просто нашёл к нему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru