A
Akupaka
Всем привет!
Задумался тут на чем лучше, практичнее и работоспособнее организовывать импорт данных в Нотес-БД.
Вот, к примеру, есть задача импорта данных из файла в формате excel (формат не важно, но так попсовее выглядит).
Предположим, что каждая строчка из Н-столбцов соответствует одному документу в БД.
Как чаще всего поступает программист? Наверняка, читает строчку, преобразует ее в документ, читает следующую.
Во всяком случае, это самый простой и прямой путь. Так я и реализовал сейчас.
Вот появилась мысля, а не преобразовать ли этот процес таким образом: сначала читаем файл, записываем данные в буфер, отпускаем файл, преобразуем данные из буфера в документы.
Чего добились? Файл "занят" значительно меньшее время, представьте, что при создании каждого документа происходит заметная во времени проверка. Получили предполагаемое число импортируемых записей. Разделены операции чтения файла и преобразования записей в документы. Что-то еще, о чем я сейчас не думаю )
Минусы - реализация буфера.
Варианты реализации буфера: NotesStream, временные документы, свои объекты.
Буфер NotesStream:
ограничен как минимум 2 ГБ текста:
<!--QuoteBegin-Help+-->
<span class="vbquote">(Help)</span><!--QuoteEBegin-->bytes& = notesStream.WriteText( text$ , [ eol& ] )
text$ - String. The text to write, to a maximum of 2GB bytes.[/quote]
Встретил еще ограничение в 4 ГБ вообще:
Но, думаю, даже 2 ГБ это внушительная возможность для большинства задач импорта.
Надо писать какой-то парсер, либо юзать XML.
Буфер временные документы:
если их лепить в "рабочую" БД, то либо придется удалять, а потом стабы полезут куда ни попадя, либо красиво что-то делать. Писать во временную базу? Все-равно хужее чем в памяти.
Буфер свои объекты:
при большом кол-ве своих объектов в памяти нотес может покраснеть, всегда ли?
В общем, такая вот каша. Хотелось бы услышать практиков, ну и теоретиков тоже. А не борюсь ли я с мельницами, т.е. а надо ли? И, стандартный вопрос, кто как делает?
Спасибо за внимание.
Задумался тут на чем лучше, практичнее и работоспособнее организовывать импорт данных в Нотес-БД.
Вот, к примеру, есть задача импорта данных из файла в формате excel (формат не важно, но так попсовее выглядит).
Предположим, что каждая строчка из Н-столбцов соответствует одному документу в БД.
Как чаще всего поступает программист? Наверняка, читает строчку, преобразует ее в документ, читает следующую.
Во всяком случае, это самый простой и прямой путь. Так я и реализовал сейчас.
Вот появилась мысля, а не преобразовать ли этот процес таким образом: сначала читаем файл, записываем данные в буфер, отпускаем файл, преобразуем данные из буфера в документы.
Чего добились? Файл "занят" значительно меньшее время, представьте, что при создании каждого документа происходит заметная во времени проверка. Получили предполагаемое число импортируемых записей. Разделены операции чтения файла и преобразования записей в документы. Что-то еще, о чем я сейчас не думаю )
Минусы - реализация буфера.
Варианты реализации буфера: NotesStream, временные документы, свои объекты.
Буфер NotesStream:
ограничен как минимум 2 ГБ текста:
<!--QuoteBegin-Help+-->
<span class="vbquote">(Help)</span><!--QuoteEBegin-->bytes& = notesStream.WriteText( text$ , [ eol& ] )
text$ - String. The text to write, to a maximum of 2GB bytes.[/quote]
Встретил еще ограничение в 4 ГБ вообще:
Ссылка скрыта от гостей
Но, думаю, даже 2 ГБ это внушительная возможность для большинства задач импорта.
Надо писать какой-то парсер, либо юзать XML.
Буфер временные документы:
если их лепить в "рабочую" БД, то либо придется удалять, а потом стабы полезут куда ни попадя, либо красиво что-то делать. Писать во временную базу? Все-равно хужее чем в памяти.
Буфер свои объекты:
при большом кол-ве своих объектов в памяти нотес может покраснеть, всегда ли?
В общем, такая вот каша. Хотелось бы услышать практиков, ну и теоретиков тоже. А не борюсь ли я с мельницами, т.е. а надо ли? И, стандартный вопрос, кто как делает?
Спасибо за внимание.