Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/137: Рейтинг темы: голосов - 137, средняя оценка - 4.71
DmT

Обновление индекса для вью

31.01.2007, 11:22. Показов 25367. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предистория: в базу документы заносятся путем срабатывания агента на приход новой почты. В пришедшем письме - вложеный файл Excel, на основании которого создаются документы в БД. За один запуск этот агент формирует около 50000 (!) документов.

Проблема: когда пользователь заходит в эту БД и открывает вью - приходится очень долго ждать пока отобразятся все документы. Вторично зайдя в эту вьюху никакой задержки не наблюдается (индексы, я так полагаю, уже сформировались).

Вопрос: можно ли после формирования документов сказать программно "Сформировать индексы для вью", потому как формирование индексов для БД в целом результата не даёт.

P.S. Знаю, что теоретически в вопросах индексов "плаваю" поэтому сильно не пинайте.
Спасибо.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2007, 11:22
Ответы с готовыми решениями:

Обновление индекса базы.
Возможно ли программно обновить индекс всех представлений для пользователей у которых нет прав на обновление? кстати как определяются...

Несколько Колонок Для Респонсов Во Вью
Извиняюсь, если это баян, но прямого ответа так и не нашел. Собственно вопрос: можно ли показать несколько колонок для документов-ответов...

Обновление индекса
Ребята, подстажите пожалуйста, нормальна ли такая ситуация: Пару дней назад практически одновременно Ya и Google начали обновлять свой...

15
0 / 0 / 0
Регистрация: 12.10.2006
Сообщений: 185
31.01.2007, 12:16
Не на работе, хелпа под рукой нет... view.Refresh должон помочь по идее
Это вообще про индекс
http://www-128.ibm.com/developerworks/lotu...n-performance2/


http://www-128.ibm.com/developerworks/lotu...ry/ls-LS_views/

Надеюсь поможет <_<
0
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
31.01.2007, 12:31
Я тоже использую Call notesView.Refresh, правда только для того, чтобы кодом можно было поймать вновь созданные документы.
Если у вас получится с UI-интерфейсом, то киньте сюда сообщение.
0
DmT
31.01.2007, 12:42
Для: Ogion7
Для: Elena Nefedova

Если я правильно понял, то мне, по завершении работы основного агента, нужно инициализировать каждое из моих представлений Set View=db.GetView("Имя") и потом Call View.Refresh для каждого? Это построит индексы? Если так, счас попробую

Для: Elena Nefedova

Мне ж надо на сервере в агенте по приходу почты выполняться? UI разве можно использовать?
DmT
31.01.2007, 13:12
Получилось! <_<

Dim view As NotesView
Dim session As New NotesSession
Dim db As NotesDatabase
Dim views As Variant

Set db = session.CurrentDatabase
views = db.Views
Forall v In views
Set View=v
Print Cstr(Time$) + " Start update index for: " + Cstr(view.Name)
Call View.Refresh
Print Cstr(Time$) + " Stop update index for: " + Cstr(view.Name)
End Forall

Внимание новый вопрос: как отследить что Call View.Refresh уже выполнился? Это возможно?
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
31.01.2007, 14:23
<!--QuoteBegin-DNT+1:02:2007, 13:29 -->
<span class="vbquote">(DNT @ 1:02:2007, 13:29 )</span><!--QuoteEBegin-->Мне ж надо на сервере в агенте по приходу почты выполняться? UI разве можно использовать?[snapback]54664" rel="nofollow" target="_blank[/snapback]?[/quote]Имеется в виду UI как User Interface, а не как классы UI


<!--QuoteBegin-DNT+1:02:2007, 13:59 -->
<span class="vbquote">(DNT @ 1:02:2007, 13:59 )</span><!--QuoteEBegin-->как отследить что Call View.Refresh уже выполнился? Это возможно?
[snapback]54674" rel="nofollow" target="_blank[/snapback]?[/quote]Второй Print выполнится только после завершения метода Refresh. Чтобы это понять, надо 1-й и 2-й Print выполнить с разными аргументами. Иначе лотус только одну строку может напечатать в StatusBarе


Самое-то главное: Будет ли обновляться вьюха в пользовательском интерфейсе после завершения работы данного кода?
0
DmT
31.01.2007, 14:57
Для: Elena Nefedova

На самом деле в живом коде у меня нет Print, я веду локальный "Журнал запуска агента". Записи добавляются в RText поле. Всё красиво получается:

...

13:35:27 Start update index for: Абоненты
13:35:27 Stop update index for: Абоненты
13:35:27 Start update index for: Абоненты по услугам
13:36:25 Stop update index for: Абоненты по услугам
13:36:25 Start update index for: Настройки
13:36:25 Stop update index for: Настройки
...

Моя задача была, чтоб человек зайдя в БД и во вьюху не испытывал "тормозов" при её (вьюхи) открытии.
При помощи вызова Call View.Refresh после накопления документов, эта задача реализована. Это ответ на ваш вопрос?

Интересные цифры из лога: на обработку 11 файлов Excel (с их предварительным разархивированием из входящего письма) и формирование около 50 000 документов тратится менее 3-х минут, в то время на обновление индекса для 10-ти вьюх уходит 12 (!) минут....
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
31.01.2007, 15:18
<!--QuoteBegin-DNT+1:02:2007, 15:44 -->
<span class="vbquote">(DNT @ 1:02:2007, 15:44 )</span><!--QuoteEBegin-->Моя задача была, чтоб человек зайдя в БД и во вьюху не испытывал "тормозов" при её (вьюхи) открытии.
При помощи вызова Call View.Refresh после накопления документов, эта задача реализована. Это ответ на ваш вопрос?[snapback]54711" rel="nofollow" target="_blank[/snapback]?[/quote]Спасибо, это как раз нужный мне ответ - очень не хотелось генерить 50000 документов для теста
0
DmT
31.01.2007, 15:38
Для: Elena Nefedova

Вопрос не по теме (просто раньше вы об этом упоминали): как обрабатывать входящие документы на событие "Before new..."? Другими словами как из коллекцию, например сделать? Их ведь ещё нет в $Inbox... Или они будут в db.UnprocessedDocuments?

И теоретический вопрос: чем плох триггер "After new..."?
0 / 0 / 0
Регистрация: 12.10.2006
Сообщений: 185
31.01.2007, 15:54
Самое-то главное: Будет ли обновляться вьюха в пользовательском интерфейсе после завершения работы данного кода?
Когда-то делал, не обновляется

Из хелпа пo view.Refresh



This method does not refresh the front-end view that the interactive user sees, nor does it rebuild the front-end view. See ViewRefresh and ViewRebuild in NotesUIWorkspace.
0
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
31.01.2007, 16:03
Цитата Сообщение от DNT
Для: Elena Nefedova
Вопрос не по теме (просто раньше вы об этом упоминали): как обрабатывать входящие документы на событие "Before new..."? Другими словами как из коллекцию, например сделать? Их ведь ещё нет в $Inbox... Или они будут в db.UnprocessedDocuments?
Нельзя коллекцию сделать. Документы в базу по одному добавляются.



Цитата Сообщение от DNT
Для: Elena NefedovaИ теоретический вопрос: чем плох триггер "After new..."?
Да ничем он не плох. Все зависит от того, какая на сервере очередь агентов имеется.
Но в семерке есть глючок - если добавить критерий отбора в After new.., то не обрабатываются документы, пока индексер не отработает - "зависают" надолго, и это раздражает пользователя.
0
DmT
31.01.2007, 16:15
<!--QuoteBegin-Elena Nefedova+1:02:2007, 15:50 -->
<span class="vbquote">(Elena Nefedova @ 1:02:2007, 15:50 )</span><!--QuoteEBegin-->Да ничем он не плох. Все зависит от того, какая на сервере очередь агентов имеется.
Но в семерке есть глючок - если добавить критерий отбора в After new.., то не обрабатываются документы, пока индексер не отработает - "зависают" надолго, и это раздражает пользователя.
[snapback]54720" rel="nofollow" target="_blank[/snapback]?[/quote]


Да есть такое дело, замечал, но не знал что это индексер работает.
Так, всё таки, как документы вытягивать при "Before new..."?
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
01.02.2007, 09:51
<!--QuoteBegin-DNT+1:02:2007, 17:02 -->
<span class="vbquote">(DNT @ 1:02:2007, 17:02 )</span><!--QuoteEBegin-->Так, всё таки, как документы вытягивать при "Before new..."?
[snapback]54721" rel="nofollow" target="_blank[/snapback]?[/quote]Session.DocumentContext
Кстати, это и для веба тоже подходит.
0
mor
02.02.2007, 22:32
Для: DNT

Уважаемый, DNT. У меня к вам пару вопросов, которые меня заинтересовали.

1. Как происходит разархивирование эттачмента в письме? Поделитесь кодом, если можно.
2. Какое общее количество докуиментов в бд? Каков размер бд? Если одно письмо генерирует 50 000 документов, то 10 писем сгенирирует 500 000 документов? А 100 писем? И это все хранится и отображается в лотусовой базе?
DmT
04.02.2007, 09:50
Для: nor

Уважаемый это сильно. :D

Ответы:

<!--QuoteBegin-nor+3:02:2007, 22:19 -->
<span class="vbquote">(nor @ 3:02:2007, 22:19 )</span><!--QuoteEBegin-->1. Как происходит разархивирование эттачмента в письме? Поделитесь кодом, если можно.
[snapback]54930" rel="nofollow" target="_blank[/snapback]?[/quote]

...

If ( o.Type = EMBED_ATTACHMENT ) Then
FileName$ = Cstr(o.Source) имя файла
TempDir$ = Environ("Temp") темповая директория Windows
Call o.ExtractFile( TempDir$ & "\" & FileName$) извлекаем файл на диск
распаковываем 7z
comand$ = "CMD.EXE /C c:\Arc\7z.exe e -y -o" + TempDir$ +" "+ TempDir$ & "\" & FileName$
вариант с winrar-ом
comand$ = "CMD.EXE /C c:\Arc\winrar.exe e -y "+ TempDir$ & "\" & FileName$ +" "+TempDir$
rezult = Shell(comand$,1)
Sleep 1

ПРОЦЕДУРА ОБРАБОТКИ ФАЙЛА
ОБРАБОТКА ФАЙЛА STOP

Kill TempDir$ & "\" & FileName$
End If
...


<!--QuoteBegin-nor+3:02:2007, 22:19 -->
<span class="vbquote">(nor @ 3:02:2007, 22:19 )</span><!--QuoteEBegin-->2. Какое общее количество докуиментов в бд? Каков размер бд? Если одно письмо генерирует 50 000 документов, то 10 писем сгенирирует 500 000 документов? А 100 писем? И это все хранится и отображается в лотусовой базе?
[snapback]54930" rel="nofollow" target="_blank[/snapback]?[/quote]

БД "мэйл-иновская" в неё приходит почта от оператора моб. связи один раз в месяц по каждому из предприятий корпоративной группы. В этих письмах приаттаченные файлы с раскладкой звонков по каждому корпоративному абоненту - отсюда такое кол. документов: на каждый звоночек создается документик. Цифра 50 000 получилась при обработке 11 предприятий за один месяц. Т.е. другими словами наполняемость БД примерно 50k документов в месяц.
mor
04.02.2007, 11:09
очень интересно, спасибо
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2007, 11:09
Помогаю со студенческими работами здесь

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

Автоматическое обновление индекса в Smart Search
Добрый день. Подскажите, как можно автоматически перестраивать индекс в Smart Search? Просто попался сайт, где товары из 1С...

Обновление DataGridView при изменении индекса ComboBox
Добрый день. Возникла небольшая проблема. Имеется datagridview, куда данные попадают из базы данных. Также есть combobox, хочу сделать...

Не могу установить обновление KB2670838 (Обновление платформы для Windows 7)
Не могу установить обновление KB2670838(Обновление платформы для Windows 7). Запускаю .msu файл, начинает устанавливаться, но в конце...

Обновление базы и ошибка: Обновление невозможно. База данных или объект доступны только для чтения.
Помогите пожалуйста! asp не может обновить базу. Про ошибку говорит Microsoft OLE DB Provider for ODBC Drivers (0x80004005) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru