Любое практическое правило о том, где использовать метку против свойства узла против отношения + узла.
Давайте рассмотрим пример, допустим, у меня есть магазин, и я хочу разместить свои продукты в neo4j. Их идентификатор - артикул продукта, и я также хочу, чтобы они были разделены на категории, например, для одежды, еды, электроники, и вы поняли. У меня будет бесплатный поиск на моем графике, как будто пользователь может искать что угодно, и я верну все, что связано с этой поисковой строкой.
Было бы лучше использовать:
- У меня есть узел с
sku 001
, и я помечу его меткойFood
. - У меня есть узел с
sku 001
, и у меня есть свойство на этом узле под названиемcategory:"Food"
- У меня есть узел с
sku 001
, и я создам еще один узел дляFood
и создам связь "category
", чтобы связать их.
Я читал, что если вы будете искать свойство, лучше использовать связь + узел, поскольку обход выполняется намного быстрее, чем поиск свойств узла.
Tia
2 ответа
Следует ли использовать свойство, метку или узел для категории, зависит от того, как вы будете запрашивать данные.
(Я предполагаю, что у вас довольно небольшой, довольно фиксированный набор категорий.)
Используйте свойство , если вы не будете запрашивать по категории, а просто должны вернуть категорию узла, найденного другими способами. (Например: к какой категории относится товар с sku 001
?)
Используйте ярлык , если вам нужно выполнить запрос по категории. (Например: какие продукты стоят менее 10 долларов?)
Используйте узел , если вам нужно пройти по категории, не зная, что это такое. (Например: какие десять самых популярных товаров в той же категории, что и тот, который выбрал пользователь?)
Эта запись в блоге также может быть полезна из-за содержащихся в ней тестов.
Я смоделировал «отношения» 4 разными способами ...
- Использование определенного типа отношений
(node)-[:HAS_ADDRESS]->(address)
- Использование общего типа связи с последующей фильтрацией по метке конечного узла
(node)-[:HAS]->(address:Address)
- Использование общего типа отношения с последующей фильтрацией по свойству отношения
(node)-[:HAS {type:“address”}]->(address)
- Использование общего типа отношения с последующей фильтрацией по свойству конечного узла
(node)-[:HAS]->(address {type: “address”})
<...>
Итак, вкратце… конкретные отношения #ftw!
Похожие вопросы
Новые вопросы
modeling
Моделирование - это создание и манипулирование абстрактными (математическими и / или графическими) представлениями экономических, инженерных, производственных, социальных и других типов ситуаций и явлений природы, моделируемых с помощью компьютерной системы.
(:user)-[LIKES]->(:node:food {sku: 1, cost: 10})
, 2(:user)-[LIKES]->(:node {sku: 1, category: "food", cost: 10})
и 3(:user)-[LIKES]->(:node {sku: 1, cost: 10})-[HAS_CATEGORY]->(:Category {name: "food"})
, где вариант 3 позволяет проще всего запросить все 3 ваших примера.