Если вызов цепного кода запрашивает и обновляет личные данные, запрос предложения вернет ошибку. ПОЧЕМУ? - PullRequest
0 голосов
/ 07 февраля 2020

Цепной код, который выполняет диапазон или расширенный JSON запросов и обновлений данных в одной транзакции не поддерживается, так как результаты запроса не могут быть проверены на равноправных узлах, которые не имеют доступа к частным данным, или на узлы, которым не хватает личных данных, к которым у них есть доступ. Если вызов цепного кода запрашивает и обновляет личные данные, запрос предложения вернет ошибку. Если ваше приложение может допускать изменения результирующего набора между выполнением цепочечного кода и временем проверки / подтверждения, вы можете вызвать одну функцию цепочечного кода для выполнения запроса, а затем вызвать вторую функцию цепочечного кода для выполнения обновлений. Обратите внимание, что вызовы GetPrivateData () для получения отдельных ключей могут быть сделаны в той же транзакции, что и вызовы PutPrivateData (), поскольку все одноранговые узлы могут проверять чтение ключей на основе версии хешированного ключа. Найти ссылку здесь

Я натолкнулся на этот небольшой абзац, связанный с limitation of querying Private Data в fabri c. Я довольно плохо знаком с концепцией личных данных.

Я понял следующее:

  • CC вызов требует Range или rich JSON запросов И обновляет оба, чтобы личные данные вызывали ошибку предложения предложения.

  • Лучше вызвать одну функцию цепного кода для выполнения запроса, а затем вызвать вторую функцию цепного кода для выполнения обновлений

  • Обычно, GetPrivateData() для извлечения отдельных ключей можно выполнить в той же транзакции, что и вызовы PutPrivateData(), поскольку все одноранговые узлы могут проверять чтение ключей на основе версии хешированного ключа.

Верно ли мое понимание ? Если да, то почему это так для личных данных? Если нет, то, пожалуйста, дай мне мудрость.

1 Ответ

0 голосов
/ 07 февраля 2020

Итак, прежде всего - расширенные запросы никогда не выполняются при фиксации в любом случае, будь то личные данные или не частные данные.

Теперь, что касается запросов диапазона - помните, что запросы диапазона - все о предположении, что ключи имеют алфавитный порядок между ними.

Однако транзакция должна пройти проверки MV CC независимо от того, однорангового узла имеет личные данные или нет, но если одноранговый узел не имеет личных данных, то он видит только хеши (не настоящие имена ключей), и хеши не сортируются по алфавиту - следовательно, он не может убедитесь, что имитация запроса диапазона не устарела.

...