Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11673
Последний выпуск: 19.06.2015

вставка новых записей

9.3K
28 сентября 2007 года
vitalik_4
37 / / 12.11.2006
Подскажите, как реализовать следующее. Есть БД из 5-6 таблиц в которые принимаются данные с разных клиентов . Далее из каждой из этих таблиц в другую БД надо вставить записи которых нет в этой БД. Таблицы промежуточной БД (в которую принимаются данные c клиентов) между собой синхронизированы. Синхронизировать надо по двум полям

типа отак pole1 NOT IN (select pole1 FROM <таблица основной БД>) AND
pole2 NOT IN (select pole2 FROM <таблица основной БД>);
671
29 сентября 2007 года
Ap0k
360 / / 13.03.2006
Это как вставлять записи в другую БД, которых нет в этой? Что вставлять-то?
Вопрос касается dotNET?
Мой шар телепатии никак не может дать информаци о Вашей СУБД.
В общем случае можете вопользоваться репликацией или изобрести велосипед..
9.3K
01 октября 2007 года
vitalik_4
37 / / 12.11.2006
-СУБД -MySQL
-это касается dotNET потому-что прогу пишу на С#
- Вставлять надо новые записи. Грубо говоря в основной БД есть старые записи, а в промежуточной БД есть и старые и новые записи, нужно вставить в основную БД только новые записи.
671
01 октября 2007 года
Ap0k
360 / / 13.03.2006
Нормальная СУБД спасёт отца русской демократии! :-)
У Вас, товарищ, что-то с архитектурой...
9.3K
01 октября 2007 года
vitalik_4
37 / / 12.11.2006
Цитата: Ap0k
Нормальная СУБД спасёт отца русской демократии! :-)
У Вас, товарищ, что-то с архитектурой...



Та ясное море что лучше было б MS использовать. Но просто с этой базой потом другая прога работает, поэтому и приходится исп. My.

В смысле "что-то с архитектурой" ? с архитектурой чего ?

7
03 октября 2007 года
hardcase
4.5K / / 09.08.2005
Заинтриговала фраза
Цитата: vitalik_4
Далее из каждой из этих таблиц в другую БД надо вставить записи которых нет в этой БД


:rolleyes:

Цитата: vitalik_4
В смысле "что-то с архитектурой" ? с архитектурой чего ?


С архитектурой БД, и не MySQL тому виной.
Попробуйте ответить на следующий вопросы:
1) Почему нельзя использовать одну БД
2) Если нельзя, то нужно разработать схему распределённого хранилища.
Больше ничего сказать не могу - попробуйте сформулировать вопрос менее абстрактно.

8.3K
10 октября 2007 года
Waldgeist
51 / / 18.10.2006
Сделайте эти два поля ключевыми - при попытке продублировать
начения ключа будет сгенерированна ошибка которую обрабатываете
с помощью блока try{}catch{}
9.3K
11 октября 2007 года
vitalik_4
37 / / 12.11.2006
Цитата: hardcase

С архитектурой БД, и не MySQL тому виной.
Попробуйте ответить на следующий вопросы:
1) Почему нельзя использовать одну БД
2) Если нельзя, то нужно разработать схему распределённого хранилища.
Больше ничего сказать не могу - попробуйте сформулировать вопрос менее абстрактно.



Дело в том что:
1) структуру БД разрабатывал не я
2) эту БД и до и после моей проги использует другое ПО, которое заточено имеено под архитектуру этой БД... так что работать приходится с тем что есть.

Насчет того что нельзя использовать одну БД:
Просто в ту БД, что находится на сервере тоже могут приходить данные по gps. И что бы (а) повысить скорость работы (б)ничего сулчайно не запортить в базе на серваке (в) чтоб не ... себе мозг лишними сложностями :) (если вдруг одновременно данные будут приходить и по gps и из клиентских баз). А так получается все просто и красиво:
- данные с клиентов пришли в промежуточную базу;
- удалили однинаковые записи в промежуточной базе;
- из промежуточной базы удалили записи, которые уже есть в основной;
- и потом все что осталось вставили в основную базу.
таким образом вставка в основную базу происходит только один раз...

7
14 октября 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: vitalik_4
Дело в том что:
1) структуру БД разрабатывал не я
2) эту БД и до и после моей проги использует другое ПО, которое заточено имеено под архитектуру этой БД... так что работать приходится с тем что есть.


С этим ясно. Вопросов нет.

Цитата: vitalik_4
- данные с клиентов пришли в промежуточную базу;
- удалили однинаковые записи в промежуточной базе;
- из промежуточной базы удалили записи, которые уже есть в основной;
- и потом все что осталось вставили в основную базу.
таким образом вставка в основную базу происходит только один раз...


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

9.3K
15 октября 2007 года
vitalik_4
37 / / 12.11.2006
Цитата: hardcase

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



Не совсем понял фразу "проверять разность множеств (Кл. БД - Сер. БД)" Это всмысле как происходит удаление записей которые содержаться в основной БД из промежуточной ? Делаю INNER JOIN по двум полям, а потом из INNER JOIN'a удаляю записи из промежуточной таблицы в которых значения полей по которым делается INNER JOIN совпадает с таковыми в основной БД

DELETE tmp.datagps_1 FROM tmp.datagps_1 INNER JOIN mca_dispatcher.datagps ON
mca_dispatcher.datagps.Mobitel_id = tmp.datagps_1.Mobitel_id
AND
mca_dispatcher.datagps.UnixTime = tmp.datagps_1.UnixTime;

А из клиентской БД в промежуточную БД (которая как и основная находится на серваке, за один сеанс переписываю только записи в которых некоторый ID > определенного числа например переписал за один сеанс 10 записей, пришло еще 10, при следующем сеансе буду копировать только записи с ID>10) по другому никак... главная задача максильно разгрузить клиента.

добавить логику проверки существования аналогичной записи можно, даже есть идеи, но мне кажется что это будет еще медленее... + к этому я еще и не знаю как это реализовать... :( так что приходится делать как умею :)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог