• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Notesviewentry.universalid дергает сам документ?

  • Автор темы Akupaka
  • Дата начала
A

Akupaka

Привет!

Кто знает, notesViewEntry.UniversalID достает документ из БД или читает значение из индекса вида?
Т.е. есть ли смысл использовать notesViewEntry вместо документа, если надо читать свойство notesViewEntry.UniversalID?
Хотя, можно добавить еще один столбец с унидом в вид и не париться... Но вопрос уже созрел ))
 
N

nvyush

есть ли смысл использовать notesViewEntry вместо документа, если надо читать свойство notesViewEntry.UniversalID
КМК, за документом Lotus обращается в базу только по notesViewEntry.Document, остальные свойства читаются из самого notesViewEntry, т.е. смысл есть.
 
A

Akupaka

А кто вообще сказал, что использовать notesViewEntry вместо документа будет производительнее?
Подробнее кто условия такой производительности может рассказать?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
Подробнее кто условия такой производительности может рассказать?
мат-лы есть в гуле и я - под конкретную задачу смотрел
энтрисы берут индех вида, док - тянет поля с сервера
ощутимо будет, при обращении к сервреру
 
N

nvyush

В подтверждение сказанного
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">результаты профилирования простенького агента</div></div><div class="sp-body"><div class="sp-content">UNID = entry.UniversalID
Class Method Operation Calls Time
Session CurrentDatabase Get 1 0
Database Views Get 1 547
View AllEntries Get 1 47
ViewEntryCollection GetFirstEntry 1 15
ViewEntry UniversalID Get 1 0

UNID = entry.Document.UniversalID
Class Method Operation Calls Time
Session CurrentDatabase Get 1 0
Database Views Get 1 344
View AllEntries Get 1 47
ViewEntryCollection GetFirstEntry 1 0
ViewEntry Document Get 1 15
Document UniversalID Get 1 0

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код агента</div></div><div class="sp-body"><div class="sp-content">
Код:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim entry As NotesViewEntry
Dim UNID As String
Set db = s.CurrentDatabase
Set view = db.Views(0)
Set entry = view.AllEntries.GetFirstEntry
UNID = entry.UniversalID 'в первом варианте
UNID = entry.Document.UniversalID 'во втором варианте
End Sub

P.S. Время исполнения отдельных операций в данном случае роли не играет (зависит от загрузки сервера, сети, бокового ветра), главное — число и суть операций.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
не поленился...
но результат меня удивил (или я где-то напортачил, к вечеру)
нахожусь в тяжёлом недоумении..., локально - медленнее на энтрисах, вариант клент-сервер ситуёвина не луче - на энтрисах 1.5-2 раза хуже (как минимум)
клиент 7.0.4 под вайн 1.2.2
сервак 7.0.2 под РедХат (стареньком)
результаты:
-локально NDC-1sec, NVN-5sec
-клиент-сервер NDC-52sec, NVN-90sec

т.е. в данных условиях (10тыс доков), пробег по полной колекции доков - быстрее, чем по нвигатору (вариант вьюэнтрисколлекшн - ещё хуже)
Посмотреть вложение performance.nsf.zip
 
A

Akupaka

нахожусь в тяжёлом недоумении...
Теперь и я ))) Хотя код переделать не составит труда, все-равно я GetAll...ByKey использую. Но ситуация выходит нелепая ))
Хотя, мне ближе все же метод прохода по документам, т.к. там и поля более "типизированы", т.с. Но вот решил использовать индекс.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
я решал специфичные задачи, возможно, зависит от вьюшки...
у меня никак по докам не получалось - вернее логика там была такова, что доки потом анализировать и отбирать повторно надо былобы

Добавлено: кстати - да!
похачив колонку с вЭриантом (многозначное поле, но не спличеное во вью)
получил сопоставимый резалт на локале

Добавлено: вот очередное подтверждение :lovecodeby: - во всём нужен подход к задаче (вторую колонку я специально делал сложной)
видать кэша на индекс не хватало, что убивало перформанс
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
гляжу на сетку и вижу интересную картину - сперва (при проходе по энтрисам) трафик очень мал, но с опред. момента (где-то половина) он возрастает "по-полной"
возможно подкрутив к-то правметры - можно добиться лучшего перформанса, на энтрисах
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!