|
|
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
Добрый день всем! Никогда не работал с BTrieve (все Oracle да Oracle)), а тут приперло. Есть Btrieve-база с товарными документами. Большая. Оперативная, постоянно пополняемая. Надо передавать изменения в ней в другую БД. Передача выполняется внешним приложением и по расписанию (желательно раз в 15 минут). Надо помочь этому внешнему приложению и как-то ограничить объем данных, который оно пытается сравнивать с "другой" базой, иначе полное сравнение занимает 10 часов... То есть, надо каким-то образом засечь момент, а потом получить информацию о всех записях, которые изменились/добавились/удалились с того момента. Причем, так как данные меняются в основном "последние", то пригодились бы любые приближения -- например, узнать, раньше какой записи по RowID (или коду... чем в Btrieve идентифицируется строка в таблице?)) изменений точно не было. Приветствую любые предложения. Как мне сказали, триггеров в Btrieve нет. Это правда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2005, 11:29 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
plimouthrock...Никогда не работал с BTrieve ... Давно это было. Решил заглянуть в код и оказалось не оказалось... под рукой то нема. Если система кривая - написана без сервака приложения, то думаю нужно ползти в сторону переезда на другой движок. По поводу тригеров - я могу ошибиться но кажись да, нема там такого. Если юзаеться на уровне SQL - то наверное стоит "в тупую" попытаться переползти на этом уровне. Хотя - хз. возможно специфика... Как инфа... В принцепе, что на клиенте...что на серваке - коннекшен к базе происходит через "позвать функцию" - это то, что ниже SQL. Возможно и мона схимичить на данном уровне. Подложить редирекшен и анализатор...Даже думаю мона плавно переплыть на другой движок... А вот идут ли через эти точки "родные" (имееться ввиду IPX или TCP к ядру Btrv.nlm - на стороне сервака...) обращения - даже не щупал на этот предмет... Совсем кривизна - сенсетив файловой системы + конекшен и сканирование в бакграунде базы данных = выемка необходимой инфы в он лайне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2005, 18:05 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
Решение найдено, но требует доработки. Файлы BTrieve имеют страничную организацию. Мы будем сохранять между сеансами экспорта контрольные суммы страниц файлов, относящихся к блокам данных. А теперь вопрос -- может кто посоветует где найти или вышлет документацию по физической организации файлов Btrieve? И как, зная какая страница реально изменилась, вытащить только те записи, которые находятся в ней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 15:33 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
С таким подходом ты напишешь свой Btrieve движок. Извини за критику - конструктивных идей нет - нельзя даже за внутренние ID зацепиться т.к. они повторно используются при удалении-вставке записи. Если только в структуре таблицы нет поля даты и времени последнего изменения (но в этом случае не было бы вопроса) - последовательное чтение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 13:51 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
Использовать свежие версии Pervasive и пользовать триггеры и все остальные прибамбасы SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2005, 12:59 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
http://emanual.ru/download2/2172.html#CONTENTS Здесь есть немного про структуру и организацию BTRIEVE файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2005, 13:04 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
Структура описаны в SDK Pervasive. Но это "Решение найдено, но требует доработки. Файлы BTrieve имеют страничную организацию. Мы будем сохранять между сеансами экспорта контрольные суммы страниц файлов, относящихся к блокам данных." как бы помгче сказать..... ( особенно для поля переменной длины) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2005, 13:10 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
2 BPA: А реально ли подставить новый движок старой программе? Кстати о программе -- RStyle Торговый Дом какой-то древней версии, от которой у самого производителя не осталось даже структуры БД... BPAкак бы помгче сказать..... Если бы были какие-то другие идеи, было бы гораздо лучше))) Судя по внутренностям файлов, записи постоянной длины. 2 golsa: Да, видел. Вся моя сегодняшняя информация почерпнута именно оттуда, и пока четко я не вижу, что именно надо сделать чтобы решить задачу. Например, если бы там было написано: "байты с 4 по 6-й в заголовке определяют размер записи, если она постоянной длины. Если нет -- там записан ноль", то было бы гораздо проще. Или если бы кто-то сказал: есть BXXX.DLL, в которой функции навигации по файлам и получения записей -- тоже было бы проще. Но пока нет ни того, ни другого...))) Кстати, в тексте на emanual ребята умудрились перевести на русский даже имена параметров инициализации))) -- чинно так, без пробелов, с большими буквами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2005, 01:10 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
Все версии PSQL совместимы сверху вниз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 10:22 |
|
||
|
Btrieve: лог изменений
|
|||
|---|---|---|---|
|
#18+
"Если бы были какие-то другие идеи, было бы гораздо лучше)))" Если неизвестна структура таблицы, то можно посмотреть общую стрктуру таблицы утилитой maintenance , и если окажется что в ней есть автоинкрементное поле . то не сложно сделать прогу кот. будет отслеживать добавление в базу не зная всей остальной структуры таблицы (изменение и удаление записи сложнее). maintenance покажет типа этого. Key Position Type Null Values* ACS Segment Length Flags Unique Values 0 1 5 4 AutoInc M -- 17813503 -- 1 1 1 4 Integer RMD -- 17813503 -- 1 2 5 4 Integer RMD -- 17813503 -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 10:40 |
|
||
|
|

start [/forum/topic.php?fid=56&msg=33248207&tid=2016574]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 392ms |

| 0 / 0 |
