Neo4j · Neo4j 5.26.20
В Авито граф инфраструктуры лежит в Neo4j: точки интерфейса, эндпоинты, сервисы, хранилища, а ещё команды, люди и роли из 1С и LDAP. Частый вопрос к графу — кому писать за доступом к чужой базе. Ответ ищут так: от хранилища к сервису, который им владеет, от сервиса к команде-владельцу, в команде — техлид.
В нашей модели: (:Service)-[:OWNS]->(:Storage) — сервис владеет хранилищем, (:Service)-[:USES]->(:Storage) — сервис только читает из него, (:Team)-[:OWNS]->(:Service), (:Person)-[:MEMBER_OF {role}]->(:Team). Роль человека — свойство связи, потому что в разных командах у одного человека разные роли. Кадровая система ещё вешает метку :TechLead на всех, кто техлид хоть где-то.
Нужны имена техлидов команды-владельца хранилища pg-orders, по алфавиту.
В работе: Каталог инфраструктуры в графе: поиск ответственного за ресурс.
Источник: доклад Авито о графе инфраструктуры Persistent Fabric, текст в блоге Авито на Хабре, 2019. Условие пересказано своими словами.
Какой запрос вернёт техлидов команды-владельца pg-orders?
- Путь только по OWNS, роль — из свойства связи MEMBER_OF
- Путь по OWNS или USES, чтобы не потерять сервисы
- Фильтр по метке :TechLead у человека
- Все участники команды-владельца