Как получить блокировку записи на узле?
Я хочу сделать что-то вроде этого (запросы ruby, cypher):
// ПОЛУЧИТЬ ЗАПИСЬ ЗАПИСИ НА УЗЕЛ 1
// НЕКОТОРЫЙ КОД, КОТОРЫЙ ЧИТАЙТЕ И ЗАПИСЫВАЙТЕ, например:
results = neo.query("MATCH (n {id: 1}) RETURN n")
...
case results.size
when 0
neo.create_node(properties)
when 1
neo.update_node(results.first, properties)
...
// ОТКРЫТЬ ЗАПИСЬ НА УЗЕЛ 1
Согласно документам, http://docs.neo4j.org/chunked/stable/transactions-isolation.html:
По умолчанию операция чтения считывает последнее зафиксированное значение, если не существует локального изменения в текущей транзакции. Уровень изоляции по умолчанию очень похож на READ_COMMITTED: чтения не блокируют и не блокируют, поэтому могут произойти неповторяющиеся чтения. Можно достичь более высокого уровня изоляции (такого как REPETABLE_READ и SERIALIZABLE), вручную получая блокировки чтения и записи.
http://docs.neo4j.org/chunked/stable/transactions.html:
Можно вручную получить блокировки записи на узлах и взаимосвязях для достижения более высокого уровня изоляции (SERIALIZABLE).
Но нигде не упоминается о том, как получить блокировку или как изменить уровень изоляции.
1 ответ
В настоящее время нет поддержки для переопределения значения по умолчанию READ_COMMITTED
уровень изоляции через REST API. Ручной переопределение уровня изоляции может быть достигнуто только при использовании Neo4j, встроенного в ваше Java-приложение.
Мы добавим примечание к странице документации, на которую вы ссылаетесь, чтобы сделать это немного более понятным.