Обновляем базу

NEK

Guest
Обновляем базу

Есть база с около 1000000 записей, 2 вариата обновления:
1) устанавливаем timestamp для записи , и потом вытерам старые
+ высокая скорость INSERT, DELETE
- если индексация не закончена полностью , то в базе (до следующей переиндексации) находятся данные повтоямые 2 раза

2) заносим перед индексацией в отдельные таблицы , а помом сравниваем связаное INSERT into ... SELECT ... JOIN
+ никаких проблем с избыточностью данных, простота постоения выборки нового, нет проблем если индексация не закончена полностью
- ну очень низкая скорость работы и относительно высокая нагрузка на сервер

Что выбрать ?
Просьба обосновывать варианты ....
 

NEK

Guest
Автор оригинала: Diesel
http://phpclub.ru/talk/showthread.php?s=&threadid=54318&highlight=%E2%F0%E5%EC%E5%ED%ED%F3%FE+%F2%E0%E1%EB%E8%F6%F3

-~{}~ 15.10.04 21:08:

Я сделал как посоветовал Кром
В общем это 1 вариант ...
Суть проблемы в том чтоб обновить данные и при утере соединения , все же занести в базу изменения (если они есть),
причем на приемлемой скорости ...

-~{}~ 18.10.04 20:14:

Просто это поиск по локальной сети , т.е. индексатором заношу в базу ...
Есть рабочие оба варианта ...
Вопрос в том что выбрать ?
 

Кром

Новичок
>В общем это 1 вариант ...

Указанный мною вариант никакого отношения к твоему первому варианту не имеет. Поэтому у него нет и минусов твоего варианта.
 

NEK

Guest
Автор оригинала: Кром
>В общем это 1 вариант ...

Указанный мною вариант никакого отношения к твоему первому варианту не имеет. Поэтому у него нет и минусов твоего варианта.
Проблема не в том, постановка таблиц не решение ...

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

Согласен нет минусов 1 варианта , но если что-то новое появилось, то информация будет недоступна до первой успешной индексации.
Во врорых если из 1с эспортировалась 1-2-3 таблицы , то тогда мне придется создать около 200 ... И как потом искать по этому , заносить в общий индекс еще раз эмулируя FULLtext search.
Возможно я торможу и ошибаюсь ...


2 вариант: для начала все данные заносятся во временные таблифы а потом идет их обработка ...
 

Кром

Новичок
>1-2-3 таблицы , то тогда мне придется создать около 200

Для этого создаешь две базы. Из одной базы идет только выборка, в другую заносятся результаты поиска.

>А удаление происходит, только тогда когда успешно закончена индексаци конкрекстно для каждогго хоста в отдельности ...

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

>но если что-то новое появилось, то информация будет недоступна до первой успешной индексации.

В любом случае, ждать, пока все компьютеры включаться, не надо. Индексируй только то, что есть в сети на момент работы поискового скрипта.
 

NEK

Guest
>А удаление происходит, только тогда когда успешно закончена индексаци конкрекстно для каждогго хоста в отдельности ...

Если компьютер не в сети, обрабатывать это можно двумя вариантами. Первый - если он не работает, данные о нем не выкладывать. Т.е. общий индекс делать без него (что вполне логично). Второй вариант, выкладывать старый индекс.
А удаление происходит, только тогда когда успешно закончена индексаци конкрекстно для каждогго хоста в отдельности, а ситуации комда комп ОТРКУБИЛСЯ до конца индексации ??? С этим траблы ...
 

Кром

Новичок
>а ситуации комда комп ОТРКУБИЛСЯ до конца индексации ???

И в чем проблема? Или выкладывай то что успех проиндескировать или делай откат и стирай информацию по отключенному компьютеру. Траблов здесь нет.
 

NEK

Guest
>И в чем проблема? Или выкладывай то что успех проиндескировать или делай откат и стирай информацию по отключенному компьютеру. Траблов здесь нет.

Выкладываю (пока) сумму успешной и неуспешной индексации, .т.е. данные повторяются.
Делаю так пока т.к. ОТКАТ (проверям дельту изменений в 2х таблицах старой и новой) , работает крайне долго, и порядком нагружает сервер ...
Хотя в принципе можно и на 3-4 утра выкинуть этот процесс , но тогда данные будут обновляться раз в сутки
 

Кром

Новичок
>Делаю так пока т.к. ОТКАТ (проверям дельту изменений в 2х таблицах старой и новой) , работает крайне долго, и порядком нагружает сервер ...

Это не тот откат, о котором я говорил. Тебе НЕ НАДО сравнивать данные по таблицам. Создал новый индекс в новой таблице/базе после чего скрипту передаешь имя новой таблицы/базы. ВСЕ!

Кстати таблиц было раньше около 200, теперь осталось только две? :)
 

NEK

Guest
Автор оригинала: Кром
>Делаю так пока т.к. ОТКАТ (проверям дельту изменений в 2х таблицах старой и новой) , работает крайне долго, и порядком нагружает сервер ...

Это не тот откат, о котором я говорил. Тебе НЕ НАДО сравнивать данные по таблицам. Создал новый индекс в новой таблице/базе после чего скрипту передаешь имя новой таблицы/базы. ВСЕ!

Кстати таблиц было раньше около 200, теперь осталось только две? :)
1(щас работает так)
Поторяем есть общая таблица А, в нее заносятся данные в нее заносят проиндексированые фалы/папки потом если успешно прошла индексаци , старце вытираются (происходит достаточно быстро проблем нет). НО в таком случае даные в базе хранястся 2 раза

ТО что ты предлагаешь: в индексе только хосты с УДАЧНО законченой индексацией ...
И как потом искать по 200 таблицам ? выносить внешний индекс (т.е. изобразить подобие fulltext) ?
 

Кром

Новичок
>eсли успешно прошла индексаци , старце вытираются (происходит достаточно быстро проблем нет). НО в таком случае даные в базе хранястся 2 раза

Этой фразы я вообще не понимаю. Какая-то каша.

>И как потом искать по 200 таблицам ? выносить внешний индекс (т.е. изобразить подобие fulltext) ?

Трудно себе представить более нелепый вопрос:
"Я сделал кучу таблиц в базе, не подскажите, как мне теперь в них найти хоть что нибудь!?!"

И эта, не надо больше повторять свои замудреные решения. Все уже давно стало понятно. Форум тебе вряд ли чем нибудь поможет.
 
Сверху