Как получить блокировку записи на узле?

Я хочу сделать что-то вроде этого (запросы 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-приложение.

Мы добавим примечание к странице документации, на которую вы ссылаетесь, чтобы сделать это немного более понятным.

Другие вопросы по тегам