Couchbase View не обновляется сразу?

Я просто следую этому сообщению, чтобы протестировать представление Couchbase. При редактировании просмотр используйте графический интерфейс Couchbase и сохраните, представление не обновилось сразу.

Например. С помощью php-скриптов некоторый массив сохраняется в Couchbase. И определяется именованное «последнее» представление в документе «dev_sessions»:

function (doc) {
if(doc.namespace == 'sessions') {
emit(doc.lastSeen, 1);
}
}

Затем используйте curl, чтобы получить результат json. Первый раз:

$ curl
http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[ ] }

Второй:

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352872218,"value":1},
{"key":1352879418,"value":3}
]
}

Еще один тест, добавьте новый массив в php-скрипты:

'eb255262434407766f212d1b6f23' => array(
'namespace' => 'sessions',
"type" => "user",
"userID" => "1107",
'lastSeen' => time(),
'firstSeen' => time(),
"remoteAddress" => "2.3.4.5",
"location" => "Vienna/Austria",
"name" => "Golden K"

Запустите curl снова, в первый раз:

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352872218,"value":1},
{"key":1352879418,"value":3}
]
}

Второй раз:

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352875163,"value":1},
{"key":1352882363,"value":4}
]
}

Если изменены данные или сценарий просмотра, нажмите кнопку Views - 'Show Results' в графическом интерфейсе Couchbase, первый и второй раз будут разными. Почему View не обновляется сразу?


person qkboy    schedule 14.11.2012    source источник
comment
Если изменены данные или сценарий просмотра, только первый раз, когда результат одного представления не обновляется. После второго запуска, это представление и другие все представления будут обновляться синхронно. Результат правильный.   -  person qkboy    schedule 14.11.2012


Ответы (1)


Это ожидаемое поведение. Couchbase по умолчанию «обновляет» индекс после вызова представления. И это, чтобы иметь более быстрое время отклика.

При выполнении представления вы можете контролировать состояние представления (фактически его индекс), используя параметр stale.

В вашем случае просто выполните:

curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true&stale=false'

И он обновит индекс перед возвратом данных в ваше приложение.

Вы можете найти в документации всю информацию об этом параметре и о том, как работают представления:

http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-stale.html

person Tug Grall    schedule 14.11.2012
comment
THX. Это ясно. Кстати, блокировка спама Couchbase Forums слишком строга для азиатских IP-адресов. Я уже сменил три IP-адреса, с Китая на HK, но все еще не могу отправить новое сообщение. %›_‹% - person qkboy; 15.11.2012
comment
Не уверен, что это связано с IP-адресом, но, вероятно, из-за количества ссылок, которые вы указали в своем сообщении. Я подниму этот вопрос до менеджера сообщества Couchbase. - person Tug Grall; 15.11.2012