Re[9]: Создание РБД
От: Ziaw Россия  
Дата: 18.05.10 15:38
Оценка: 5 (1)
Здравствуйте, ЛёХыЧ, Вы писали:

ЛёХ>Раскажи общий смысал реализации системы.


Это школьный документооборот. Общий смысл таков, все данные заполняются в школах и стекаются в краевой центр через районные базы. Т.е. трехуровневая схема: школа обменивается репликами с роно, роно с краем. В другую сторону данных идет совсем мало: обновление справочников, данные по ученикам которые прибыли из других школ. В итоге в крае получается общая картина по всем ученикам, учителям, учебным планам, приказам. Таблиц 200 или больше, я уже не помню. К системе предъявлялись достаточно жесткие требования по отказам т.к. раз в год формируется туева хуча отчетов по всем данным. Естественно выпадение даже одной школы из репликации (на начало работы их в крае было более 1300) недопустимо. Ибо цифры сразу поплывут и какой-то район недополучит денег например. Поэтому, а еще потому, что бывают моменты, когда до некоторых школ только вертолетом и по рации репликация стала самой неприхотливая к каналам связи, построена на сообщениях.

Как все устроено: каждая база получает диапазон идентификаторов которого теоретически ей хватит лет на тыщу. Все записи создаются с ключами по возрастанию из этого диапазона. На каждую таблицу вешаются CUD триггеры которые записывают айдишник и действие в таблицу лога (лог тоже с этим айдишником). Еще есть таблица соседних баз в которой хранится достоверно известный максимальный принятый ей айдишник записи лога.

Формируем посылку так: выбираем все записи лога айдишник которых больше того известного, пихаем в пакет все записи у которых в логе стоит создание или изменение. Ну и записываем айдишники удаленных записей. К посылке прикладываем максимальный принятый от той базы ключ, когда она его получит — запишет в свою таблицу соседних баз в нашей строке.

Самый геморой при приеме связан с отсутствием в фаерберде констрейнтов которые умеют проверяться при комите (deffered). И тем фактом, что констрейнты нельзя прибить или создать в дмл транзакции. Посему пришлось писать алгоритм разруливания зависимостей, который выстраивает данные в нужном порядке. После этого данные соотвественно вставляются, обновляются и удаляются.

Все возможные конфликты пресекались на уровне БЛ либо ресолвились автоматом в стиле "последний прав".

Как-то так.
Создание РБД
От: ЛёХыЧ Россия  
Дата: 17.05.10 04:53
Оценка:
Добрый день,

возникла потребность создание программы с возможностью распределенной БД, кто что может посоветовать и где можно почитать. в поиск нечего хорошего не дает. Прочитал статью про журналирование данных, с использованием тригиров. которые будут ставить время последнего изменения или создания в табличку, и дополнительно вести таблицу в которую будут заносится данные о все изменениях в базе по соотвествующим полям.
Re: Создание РБД
От: Ellin Россия www.rsdn.ru
Дата: 17.05.10 09:10
Оценка:
Здравствуйте, ЛёХыЧ, Вы писали:

ЛёХ>Добрый день,


ЛёХ>возникла потребность создание программы с возможностью распределенной БД, кто что может посоветовать и где можно почитать. в поиск нечего хорошего не дает. Прочитал статью про журналирование данных, с использованием тригиров. которые будут ставить время последнего изменения или создания в табличку, и дополнительно вести таблицу в которую будут заносится данные о все изменениях в базе по соотвествующим полям.

Ну очень интересно каким образом возникла такая потребность.
Re[2]: Создание РБД
От: ЛёХыЧ Россия  
Дата: 17.05.10 09:19
Оценка:
Здравствуйте, Ellin, Вы писали:

E>Ну очень интересно каким образом возникла такая потребность.


Из за того что появились подразделения, и в каждом из подразделений будет установлено данное ПО, а все данные должны собираться в единую БД. Если приводить пример то по принципу 1С РБД (импорт-экспорт).
Re[3]: Создание РБД
От: Аноним  
Дата: 17.05.10 09:28
Оценка:
Здравствуйте, ЛёХыЧ, Вы писали:

ЛёХ>Из за того что появились подразделения, и в каждом из подразделений будет установлено данное ПО, а все данные должны собираться в единую БД. Если приводить пример то по принципу 1С РБД (импорт-экспорт).

А что мешает сделать трехзвенку с подключением всех клиентов к одной базе?
Re[3]: Создание РБД
От: Ellin Россия www.rsdn.ru
Дата: 17.05.10 09:33
Оценка:
Здравствуйте, ЛёХыЧ, Вы писали:

ЛёХ>Здравствуйте, Ellin, Вы писали:


E>>Ну очень интересно каким образом возникла такая потребность.


ЛёХ>Из за того что появились подразделения, и в каждом из подразделений будет установлено данное ПО, а все данные должны собираться в единую БД. Если приводить пример то по принципу 1С РБД (импорт-экспорт).

Ну ясно. Смотрите в сторону репликации.
Re[4]: Создание РБД
От: ЛёХыЧ Россия  
Дата: 17.05.10 09:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, ЛёХыЧ, Вы писали:


ЛёХ>>Из за того что появились подразделения, и в каждом из подразделений будет установлено данное ПО, а все данные должны собираться в единую БД. Если приводить пример то по принципу 1С РБД (импорт-экспорт).

А>А что мешает сделать трехзвенку с подключением всех клиентов к одной базе?

На некоторых точках инет очень худой. доходит до dialup.
Re: Создание РБД
От: Cyberax Марс  
Дата: 17.05.10 09:40
Оценка:
Здравствуйте, ЛёХыЧ, Вы писали:

ЛёХ>возникла потребность создание программы с возможностью распределенной БД, кто что может посоветовать и где можно почитать. в поиск нечего хорошего не дает. Прочитал статью про журналирование данных, с использованием тригиров. которые будут ставить время последнего изменения или создания в табличку, и дополнительно вести таблицу в которую будут заносится данные о все изменениях в базе по соотвествующим полям.

Посмотри на SymmetricDS (http://symmetricds.codehaus.org/) — он на Java, но его можно использовать и в .NET без особых проблем.

Там он строит хитрые триггеры и с помощью них ловит изменения и потом умеет их раскидывать куда надо. Успешно используется в крупной торговой сети для синхронизации инвентаря товаров между кассами, складом и центральным офисом.
Sapienti sat!
Re[2]: Создание РБД
От: Аноним  
Дата: 17.05.10 09:47
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, ЛёХыЧ, Вы писали:


C>Там он строит хитрые триггеры и с помощью них ловит изменения

А если база не поддержичает триггеры
Re[3]: Создание РБД
От: Cyberax Марс  
Дата: 17.05.10 12:58
Оценка:
Здравствуйте, Аноним, Вы писали:

C>>Там он строит хитрые триггеры и с помощью них ловит изменения

А>А если база не поддержичает триггеры
А какая база их не поддерживает?
Sapienti sat!
Re[4]: Создание РБД
От: Ellin Россия www.rsdn.ru
Дата: 17.05.10 13:28
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Аноним, Вы писали:


C>>>Там он строит хитрые триггеры и с помощью них ловит изменения

А>>А если база не поддержичает триггеры
C>А какая база их не поддерживает?
SQL Compact edition, например.
Re[5]: Создание РБД
От: Cyberax Марс  
Дата: 17.05.10 13:42
Оценка:
Здравствуйте, Ellin, Вы писали:

C>>>>Там он строит хитрые триггеры и с помощью них ловит изменения

А>>>А если база не поддержичает триггеры
C>>А какая база их не поддерживает?
E>SQL Compact edition, например.
Ну так не использовать их, значит. Взять какой-нибудь Firebird (поддерживается в SymDS) и не мучатся.
Sapienti sat!
Re[6]: Создание РБД
От: Ellin Россия www.rsdn.ru
Дата: 17.05.10 13:46
Оценка:
Здравствуйте, Cyberax, Вы писали:
E>>SQL Compact edition, например.
C>Ну так не использовать их, значит. Взять какой-нибудь Firebird (поддерживается в SymDS) и не мучатся.
Лично я бы не рискнул.
Re[7]: Создание РБД
От: Cyberax Марс  
Дата: 17.05.10 14:00
Оценка:
Здравствуйте, Ellin, Вы писали:

E>>>SQL Compact edition, например.

C>>Ну так не использовать их, значит. Взять какой-нибудь Firebird (поддерживается в SymDS) и не мучатся.
E>Лично я бы не рискнул.
А обрезанный SQL CE — так рискнул бы? Странно...
Sapienti sat!
Re[8]: Создание РБД
От: Ellin Россия www.rsdn.ru
Дата: 17.05.10 14:04
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А обрезанный SQL CE — так рискнул бы? Странно...

Может и обрезанный зато стабильно работает.
Re[7]: Создание РБД
От: ЛёХыЧ Россия  
Дата: 17.05.10 14:12
Оценка:
Я использую MySQL, а он поддерживает триггеры.
В принципе вариант использование триггеров очень удобен, можно не изменяя алгоритма обмена в программе, а только описывая для каждой новой таблицы набор триггеров для команд (INSERT, UPDATE, DELETE). Заполняя в таблице журналирования имя таблицы и другую служебную информацию. Остается только один вопрос это ключевое поле в БД. Но наверное уже другая тема. В принципе использовать в начале id колонки ASCII код префикса БД.
Re[9]: Создание РБД
От: Cyberax Марс  
Дата: 17.05.10 14:16
Оценка:
Здравствуйте, Ellin, Вы писали:

C>>А обрезанный SQL CE — так рискнул бы? Странно...

E>Может и обрезанный зато стабильно работает.
Так и FB тоже стабильный. Кстати, в чём "стабильность" измеряется?
Sapienti sat!
Re[8]: Создание РБД
От: Cyberax Марс  
Дата: 17.05.10 14:17
Оценка:
Здравствуйте, ЛёХыЧ, Вы писали:

ЛёХ>Я использую MySQL, а он поддерживает триггеры.

ЛёХ>В принципе вариант использование триггеров очень удобен, можно не изменяя алгоритма обмена в программе, а только описывая для каждой новой таблицы набор триггеров для команд (INSERT, UPDATE, DELETE). Заполняя в таблице журналирования имя таблицы и другую служебную информацию. Остается только один вопрос это ключевое поле в БД. Но наверное уже другая тема. В принципе использовать в начале id колонки ASCII код префикса БД.
Бери SymDS — он сгенерирует триггеры автоматически. Там вообще вся готовая инфраструктура для репликации уже есть.
Sapienti sat!
Re[9]: Создание РБД
От: ЛёХыЧ Россия  
Дата: 17.05.10 14:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Бери SymDS — он сгенерирует триггеры автоматически. Там вообще вся готовая инфраструктура для репликации уже есть.


Уже скачал, сейчас разбираюсь, единственно что он на Java.
Re: Создание РБД
От: Ciget http://www.ciget.com.ua
Дата: 17.05.10 22:16
Оценка:
Здравствуйте, ЛёХыЧ, Вы писали:

ЛёХ>Добрый день,


ЛёХ>возникла потребность создание программы с возможностью распределенной БД, кто что может посоветовать и где можно почитать. в поиск нечего хорошего не дает. Прочитал статью про журналирование данных, с использованием тригиров. которые будут ставить время последнего изменения или создания в табличку, и дополнительно вести таблицу в которую будут заносится данные о все изменениях в базе по соотвествующим полям.



Не занимайся ерундой. Возьми обычный компакт едишин и юзай проект в студии типа локал датабейс кеш. Он позволит делать синхронизацию. Разберись что к чему и пользуйся на здоровье.
Re[2]: Создание РБД
От: ЛёХыЧ Россия  
Дата: 18.05.10 01:53
Оценка:
Здравствуйте, Ciget, Вы писали:

C>Не занимайся ерундой. Возьми обычный компакт едишин и юзай проект в студии типа локал датабейс кеш. Он позволит делать синхронизацию. Разберись что к чему и пользуйся на здоровье.


Если внимательно посмотреть на то, что создоет мастер — это просто набор триггеров для таблица типа AFTER (INSERT, UPDATE, DELETE).
Re[3]: Создание РБД
От: ЛёХыЧ Россия  
Дата: 18.05.10 03:24
Оценка:
И еще одно ограничение которое вводит SQL Server Compact 3.5 он не поддерживает хранимые процедуры или представления. Так что данный вариант отпадает, почти все запросы из БД делаются StoreProc.
Re[7]: Создание РБД
От: Ziaw Россия  
Дата: 18.05.10 03:56
Оценка:
Здравствуйте, Ellin, Вы писали:

C>>Ну так не использовать их, значит. Взять какой-нибудь Firebird (поддерживается в SymDS) и не мучатся.

E>Лично я бы не рискнул.

Разрабатывал систему с распределенной БД. Центральная БД на оракле, ее кусочки на фаерберде распределяются на более 1000 рабочих мест. Репликация самописаная, оффлайновая, одно из требований к системе — "чтобы данные можно таскать на дискетке", система стоит в таких районах в которых до сих пор нет нормального интернета, данные реплицируются оказией раз в месяц. Особых претензий к фаерберду нет, хотя оптимизатор там уступает оракловому (по крайней мере одни и те же запросы выполняемые ораклом за милисекунды на ФБ могут тормозить до 20 секунд, их требуется тюнить, впрочем это отдельные классы запросов про которые надо знать).

Система работает уже лет 5 нормально.
Re[8]: Создание РБД
От: ЛёХыЧ Россия  
Дата: 18.05.10 04:02
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, Ellin, Вы писали:


C>>>Ну так не использовать их, значит. Взять какой-нибудь Firebird (поддерживается в SymDS) и не мучатся.

E>>Лично я бы не рискнул.

Z>Разрабатывал систему с распределенной БД. Центральная БД на оракле, ее кусочки на фаерберде распределяются на более 1000 рабочих мест. Репликация самописаная, оффлайновая, одно из требований к системе — "чтобы данные можно таскать на дискетке", система стоит в таких районах в которых до сих пор нет нормального интернета, данные реплицируются оказией раз в месяц. Особых претензий к фаерберду нет, хотя оптимизатор там уступает оракловому (по крайней мере одни и те же запросы выполняемые ораклом за милисекунды на ФБ могут тормозить до 20 секунд, их требуется тюнить, впрочем это отдельные классы запросов про которые надо знать).


Z>Система работает уже лет 5 нормально.


Раскажи общий смысал реализации системы.
Re[10]: Создание РБД
От: ЛёХыЧ Россия  
Дата: 19.05.10 03:32
Оценка:
Здравствуйте, Ziaw, Вы писали:

Спасибо, очень понятно расписали и дохочево. теперь можно собрать все мысли и попробывать реализовать. тестовый вариант.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.