Я тестировал neo4j для графических проектов на 1 или 2 месяца, и это было действительно эффективно, но мне трудно найти, как решить одну из моих проблем, и я Я ищу совета.Запустить алгоритм графа в открытой транзакции
Я использую neo4j для хранения графических баз данных и проверяю, что они соответствуют некоторым структурным требованиям, например, у меня есть зависимость моделирования db между элементами: узлы - это элементы, а ссылки обозначены как «необходимость» или «несовместимые» «для моделирования зависимости, и я хочу, чтобы neo4j проверял согласованность данных.
Я закодировал контролер в серверном плагине, и он работает очень хорошо. Но теперь я хотел бы разрешить пользователям подключаться к базе данных, изменять данные (не сохраняя пока изменений), проверить, не изменили ли эти изменения согласованность и затем сохранили изменения.
Я нашел конечную точку http, которая может поддерживать транзакцию открытой и полностью соответствует «изменениям db без сохранения», но я не могу найти, как запустить мою проверку на измененных данных: есть ли способ запустить что-то еще, чем запрос Cypher с конечной точкой http, или мне нужно рассмотреть другой способ решить эту проблему?
Теперь я могу запустить свой checker, используя TransactionEventHandler beforeCommit, но это означает, что пользователь не мог знать, могут ли его данные быть в порядке, не запустив фиксацию, и тот факт, что данные разделены между db без модификация и TransactionData, которые сохраняют модификацию, делают проверку правильной.
Итак, если кто-то знает, как я могу это решить, было бы здорово. Спасибо.
Спасибо, что легче манипулировать данными таким образом, но если я это правильно, он все еще может быть сделано только при фиксации (перед) сделки и а не в середине, есть ли способ сделать это, не инициируя совершение транзакции? – DorianWilde
На самом деле, в методе beforeCommit вы находитесь «посередине» tx. GraphAware Framework предоставляет вам возможность «просматривать» две версии графика - до и после. Так что это частично соответствовало бы вашим критериям. Но я не думаю, что в настоящее время есть способ сделать это, не пытаясь зафиксировать tx. –