2016-01-05 2 views
0

В моем бизнес-заявлении говорится, что мне нужно добавить произвольное количество четко определенных (AKA не динамических, неизвестных) атрибутов для определенных типов узлов. Я почти уверен, что, хотя может быть 30 или 40 различных атрибутов, узел будет , вероятно, имеет не более 4 или 5 из них. Конечно, будут угловые случаи ...Есть ли преимущества для внедрения синглонов в Нео?

В этом контексте я в основном использую атрибут «как атрибут», который нужен для бизнеса, а не в смысле Neo4J.

Ожидается, что я сообщу, какие узлы имеют какие атрибуты. Например, мне, возможно, придется сообщить, какие узлы имеют атрибуты «задержания», «приостановки» или «двойного секретного испытательного срока».

Один из способов - просто иметь массив соответствующих атрибутов для каждого объекта. Но для каждого запроса потребуется поиск всех узлов. Или я мог бы создавать явные атрибуты на каждом узле. Теперь они могут быть проиндексированы. Я серьезно не рассматриваю ни один из этих подходов.

Другой способ - реализовать каждый атрибут в качестве одноэлементного узла Neo и разрешить многим (десятки тысяч?) Других узлов относиться к этим узлам. Эта реализация будет иметь 10 000 узлов, но 40 000 отношений.

Наконец, узлы атрибутов могут быть созданы и использованы конкретными узлами сущности по мере необходимости. В этом случае, если 10 000 объектов имели в среднем 4 атрибута, у меня было бы всего 50 000 узлов.

Как я печатаю это, я понимаю, что во втором случае у меня все еще есть 40 000 отношений; «правда» ситуации не изменилась.

Есть ли причина, чтобы избежать реализации «singleton»? Я мог бы установить временные отметки о взаимоотношениях. Но они не будут проиндексированы ...

ответ

1

Для вашего простого случая использования я бы предложил подход, который вы не указали, - который должен использовать метку узла для каждого атрибута.

Узлы могут иметь несколько меток, а neo4j может быстро проходить через все узлы с одной и той же меткой, что позволяет быстро и легко находить все узлы с определенной меткой.

Например:

MATCH (n:Detention) 
RETURN n; 
+0

ооооо хороший. –