View.getalldocumentsbykey против View.createviewnavfromcategory

lionk

Well-known member
05.04.2007
310
2
#1
на днях разбирал одну старю базу которую делал другой чуваки столкнулся с такой штукой,
у него отбор колекции документов из представленя делается при помощи GetAllDocumentsByKey, где ключ лиас родительского документа. хотя в базе есть служебное представление где доки категоризированы по этому алиасу.
я всегда такой функционал делал с помощю CreateViewNavFromCategory и дальнейшим разбором навигатора на ентри а потом на документ или выдёргивал значение колонки.

и вот меня заинтерисовало а какой же метод лучше?
ведь большенство лотусистов самоучки (как мне кажется) и поскольку книг типа "Вот так надо потомучто это оптимально" либо нет либо я не читал :) , а розобратся всёже хочется вот поэтому я и открыл данную тему.

итак какой оптимальный метод отбора колекции доков?
какие вы знаете?
недостатки и достоинства каждого?
(с миру по нитек получим неплохой факю)
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
да тотже NotesDatabase -> Search
<!--QuoteBegin-lionk+21:11:2007, 15:46 -->
<span class="vbquote">(lionk @ 21:11:2007, 15:46 )</span><!--QuoteEBegin-->CreateViewNavFromCategory
[snapback]86802" rel="nofollow" target="_blank[/snapback]​
[/quote]
Не работал - не наю

<!--QuoteBegin-lionk+21:11:2007, 15:46 -->
<span class="vbquote">(lionk @ 21:11:2007, 15:46 )</span><!--QuoteEBegin-->GetAllDocumentsByKey
[snapback]86802" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вроде быстрая штука )
 
S

Sandr

#4
Использую и то и то, в зависимости от цели... Но если мне просто колекцию доков получить надо, то использую GetAllDocumentsByKey...
 

lionk

Well-known member
05.04.2007
310
2
#5
<!--QuoteBegin-Sandr+21:11:2007, 18:13 -->
<span class="vbquote">(Sandr @ 21:11:2007, 18:13 )</span><!--QuoteEBegin-->Использую и то и то, в зависимости от цели... Но если мне просто колекцию доков получить надо, то использую GetAllDocumentsByKey...
[snapback]86825" rel="nofollow" target="_blank[/snapback]​
[/quote]
а по какому критерию отбираеш где использовать одно а где другое?
 
A

Azrael

#6
С навигаторами советую быть осторожнее: в наследство база как-то доставалась, где внутри цикла
Код:
While not(entry is nothing)
...
set entry = nav.getNext...
Wend
был код достаточно долго работающий, и с увеличением количества документов во вьюхе стала в определенный момент в строке "set entry" вываливаться ошибка примерное содержание которой: "entry not found in index". Помнится, в своё время проклял всё... Весь код перелопачивать не хотелось, использовал тот же цикл для собирания значений нужных колонок в массив, с которым далее и работал. В данный момент база активно используется, жалоб не наблюдается, но все равно воспоминания неприятные остались...
 
A

Azrael

#8
Для: oshmianski
тогда не знал, да и сейчас по старой памяти если с навигаторами работаю, предпочитаю нужные значения сначала в массив сложить))
 

yerke

Well-known member
28.08.2007
392
0
#10
<!--QuoteBegin-lionk+21:11:2007, 19:46 -->
<span class="vbquote">(lionk @ 21:11:2007, 19:46 )</span><!--QuoteEBegin-->на днях разбирал одну старю базу которую делал другой чуваки столкнулся с такой штукой,
у него отбор колекции документов из представленя делается при помощи GetAllDocumentsByKey, где ключ лиас родительского документа. хотя в базе есть служебное представление где доки категоризированы по этому алиасу.
я всегда такой функционал делал с помощю CreateViewNavFromCategory и дальнейшим разбором навигатора на ентри а потом на документ или выдёргивал значение колонки.

и вот меня заинтерисовало а какой же метод лучше?
ведь большенство лотусистов самоучки (как мне кажется) и поскольку книг типа "Вот так надо потомучто это оптимально" либо нет либо я не читал smile.gif , а розобратся всёже хочется вот поэтому я и открыл данную тему.

итак какой оптимальный метод отбора колекции доков?
какие вы знаете?
недостатки и достоинства каждого?
(с миру по нитек получим неплохой факю)
[snapback]86802" rel="nofollow" target="_blank[/snapback]​
[/quote]
у меня был такой случай
обрабатывал доки с помощью CreateViewNavFromCategory
в процесс обработки внедрил прогресс бар чтобы было видно
вот что оно показало
если количество категории во вьюшке меньше 30 000
то CreateViewNavFromCategory работает быстро (примерно за 35 сек обработал 27 000 категории)

а если количество ентри больше 30 000 то CreateViewNavFromCategory еле находил нужную категорию и с трудом создавал навигатор

в прочем все сами делайте выводы
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#11
некорректный код при обработке навигаторов вообще может привести к падению сервера :rolleyes:
 

lionk

Well-known member
05.04.2007
310
2
#12
некорректный код при обработке навигаторов вообще может привести к падению сервера :rolleyes:
єто что то новое, у меня уже почти два года на серваке работают агенты с навигаторами и всё тьфу-тьфу нормально. а откуда такие сведенья?
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#13
да как-то писал агента и в нем нужно было получить массив категорий .. вроде все корректно написал, потому что долго искал, но так и не нашел в чем же была проблема .. в массив много мусора попадало кроме категорий ?! - переполнение и кирдык серверу..
 
M

Mihal

#15
Мои размышления...

При использование ViewNavigator в итоге обрабатываем ViewEntry. При использовании GetAllDocumentsByKey - документы. Так вот, документ (при обращении к нему) "приезжает" полностью. А ведь в нём может быть и аттач какой-нить на много мегабайт. А это время. ViewEntry содержит, как я понимаю, кусок индекса представления. То есть, приезжает ровно столько, сколько нужно (естественно, если всё сделать так, что не надо к документу обращаться). Так что скорость работы зависит и от размеров документов, которые потом обрабатываются.

<!--QuoteBegin-Kee_Keekkenen+23:11:2007, 00:38 -->
<span class="vbquote">(Kee_Keekkenen @ 23:11:2007, 00:38 )</span><!--QuoteEBegin-->некорректный код при обработке навигаторов вообще может привести к падению сервера
[snapback]87035" rel="nofollow" target="_blank[/snapback]​
[/quote]
Некоректный код при обработке чего-либо может привести к падению всего :).