|
Обновление файла
|
|||
---|---|---|---|
#18+
Всем привет! Вопрос такой. На сервере есть большой файл А (порядка 300 мб). Часть информации из него по определенному признаку каждое утро при переиндексации копируется в другой файл Б (около 270 мб). Этот файл Б на весь день фиксируется и копируется на лок. комп в файл С. Потом требуется несколько раз в день к файлу С на лок.компе приписывать инфу из А, которой нет в С, индексировать его (С) и работать с ним. Вопрос такой. Как это сделать с минимальной нагрузкой на сеть? Cамый простой вариант - сразу качать файл А в С и работать с ним, но 300 мб! Для этого я и выделяю файл Б. Но как дальше оптимальней? Может, вообще эффективней без файла Б? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2008, 11:30 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
Да, забыл еще - инфа в А, которая ушла в Б не меняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2008, 11:31 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
Странный вы человек... То бишь у вас файл-сервер. Есть сетевая таблица (А) и локальная копия (С). И нужно в (С) дописывать из (А), то, чего не хватает. Вопросы: - (А) каждый день - полностью новый файл? Или просто таблица со всеми текущими данными? - (С) зачем нужна в локальном варианте? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2008, 14:18 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
****- (А) каждый день - полностью новый файл? Или просто таблица со всеми текущими данными? Нет, я же писал, каждый день часть инфы в А фиксируется окончательно. Скажем, из 40000 записей могут меняться только последние 2-3 тыс. И каждый день этот "балласт" выгружается в параллельную таблицу.На следующий день фиксируется еще несколько записей и т.д. Поэтому и вопрос как бы их не гонять лишний раз посети. ****- (С) зачем нужна в локальном варианте? Ну, в общем, нужна... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2008, 19:13 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
Вообще-то, разница в объемах файлов чисто символическая. Ну, если очень хочется... 1. В таблице A нужен timestamp. Метка времени. Дата и время последней модификации. Ее можно вести как поле в той же таблице, но, эффективнее, использовать другую таблицу. Другими словами, при ЛЮБОЙ модификации таблицы A через триггер, в таблицу-лог будут сбрасываться, как минимум, идентификатор измененной записи и вид изменения (INSERT, UPDATE, DELETE). А также дату и время изменения. В случае необходимости, можно детализировать информацию об изменениях. Например, так прямо и записывать команду INSERT-SQL, хотя это сложнее. Придется последовательно "накатывать" все модификации сделанные для этой записи. 2. Далее, по мере необходимости, просматриваешь лог изменений и переносишь изменения в таблицу на локале. Просто уникальный список ID измененных записей, с учетом типа модификации. 3. При этом, нужна еще третья таблица. Дата и время последнего переноса. Чтобы ограничить информацию из лога изменений. Также эта третья таблица понадобиться, если перенос выполняется на несколько локальных копий. При такой технологии, вообще отпадает необходимость полного копирования. Кроме случая краха локальной копии. Ну, и время от времени, стоит чистить лог, если он слишком уж сильно распухнет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2008, 20:44 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
Как это сделать с минимальной нагрузкой на сеть? Перенести на флэшке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2008, 22:27 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
Вы пытаетесь написать фокпро на фоспро. На локале каждый пусть откроет файл А или Б с сервера (не принципиально) и перепишет все что ни хочет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2008, 23:02 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
Ю Как это сделать с минимальной нагрузкой на сеть? Перенести на флэшке. У меня флешка всего 128 Мб :-)))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2008, 11:46 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
Спасибо всем за ответы. Наверно, не очень четко объяснил ситуацию. Итак. Есть большой файл А, в котором часть информации с каждым днем окончательно фиксируется. Файл большой, растет дальше. Информация, которая может меняться - 15%. На лок. компах нужна относительно свежая информация из основного файла А (ну, раз в час обновляясь) в монопольном режиме (ну нужно так) - файл С. Качать каждый час на 30-40 компов по полгига по сетке считаю неразумным. Поэтому утром при переиндексации фикисирую неизменную часть файла А в файле Б на сервере. Этот файл один раз (утром) перекидывается на лок. комп. под именем С. Все, 85% инфы на лок.компе. Вопрос - как с минимальной нагрузкой на сеть дописывать С из А. Признак "фиксации" информации - поле DATE. Т.е., при dat<=date()-30 - записи утром переходят в Б. Я вижу два варианта. 1 - раз в час из А в Б1 для dat>date()-30 и из Б1 дополнять С на лок.компах. Второй вариант - раз в час сразу из А в С по этому признаку.Может, есть другие варианты. Вот, собственно, все. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2008, 12:02 |
|
Обновление файла
|
|||
---|---|---|---|
#18+
StindСпасибо всем за ответы.... Еще раз внимательно и вдумчиво прочитайте ответ Владимира. Он подробно описал как это обычно делается... Я многократно делал подобную "репликацию" данных даже через Интернет, где трафик еще более дорогой... Чисто технически на каждом компьюере клиента надо запускать каждый час маленькое приложение по обновлению данных. Для VFP 9.0 это будет всего лишь одна строка значимого кода - INSERT FROM с логикой, описанной Владимиром... Good luck! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2008, 12:11 |
|
|
start [/forum/topic.php?fid=41&msg=35537650&tid=1587292]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 486ms |
0 / 0 |