Я хотел бы представить изменяющуюся силу отношений между узлами в графике Neo4j.
Для статического графика это легко сделать, установив свойство «сила» для отношения:
A --knows--> B
|
strength
|
3
Однако для графика, который требует обновления с течением времени, существует проблема, поскольку увеличение значения свойства не может быть выполнено атомарно (через интерфейс REST), так как чтение до написать обязательно. Увеличение (а не просто обновление) необходимо, если график обновляется в ответ на входящие потоковые данные.
Мне нужно либо обеспечить, чтобы только один клиент REST считывал и записывал одновременно (внешняя синхронизация), либо использовать только встроенный API, чтобы я мог использовать встроенные транзакции. Это может быть выполнимо, но кажется неудобным.
Еще одним решением может быть запись нескольких отношений без каких-либо свойств, так что «сила» - это фактически количество отношений, т. Е.
A knows B
A knows B
A knows B
означает отношение силы 3.
- Недостаток: можно записать только целые числа
- Преимущество: чтение перед записью не требуется
- Недостаток: (вероятно) требуется больше места для хранения
- Недостаток: (возможно) гораздо медленнее извлекать значение, так как несколько связей должны быть извлечены и подсчитаны
Кто-нибудь пробовал этот подход и может ли он столкнуться с проблемами производительности, особенно при чтении?
Есть ли лучший способ смоделировать это?