powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / По сорсу FB3, прошу подтвердить
25 сообщений из 34, страница 1 из 2
По сорсу FB3, прошу подтвердить
    #39074094
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильно я понимаю, что ....?
1) проект burp дает статическая библиотка, которая используется gbak?
2) Основную работу в burp выполняю ф-ии BACKUP_backup и RESTORE_restore, работают они на уровне логических записей. Соответственно, восстанавливая через gbak мы имеем перестроенную структуру записей, например записи меняют свой RecordNumber.
3) поэтому gbak умный, много чего может, но тормоз

4) А nackup наоборот тупой, но быстрый и очень простой, потому что тупо пишет целые страницы из файла БД в файл бекапа . Соответственно логическая структура записей остается совершенно нетронутой.


Если неправильно понял - не чморите сильно.... и объясните пожалста, gbak же - это типа отдельная утилита? А как и через что она понимает, какую версию записи писать?
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074096
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Izya,

Каждая логическая запись имеет свой заголовок. Начни отсюда http://www.firebirdsql.org/manual/fb-internals.html
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074119
Izyaвосстанавливая через gbak мы имеем перестроенную структуру записей, например записи меняют свой RecordNumber.rdb$db_key меняется при ресторе. А еще - физическое "расстояние" между строками документа и его заголовком, так что select h.*, d.* from header h join detail d using(doc_id) будет после рестора выполняться дольше (в файле базы записи из 'd' будут уже гораздо дальше от соотв-щей заголовочной строки 'h').

Izyanackup наоборот тупой, но быстрый и очень простой, потому что тупо пишет целые страницы из файла БД в файл бекапа . Соответственно логическая структура записей остается совершенно нетронутой.Быстрым он стал только в 3.0, которая пока RC1. А до 2.5 включительно он шарашит по всему файлу базы, даже если поменялось 10 страниц.

Izyagbak же - это типа отдельная утилита? А как и через что она понимает, какую версию записи писать?Она транзакцию стартует, snapshot. И видит только те версии, которые должна видеть эта транзакция.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074123
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

Спасибо за совет и наводку. Вообще, файл мне полезный будет.

Но я, если честно, совсем не понял как он к моему конкретному вопросу относится. Единственно, что к нему имеет отношение - флаг
Код: plaintext
Pag_scn
в
Код: plaintext
struct pag
, который в nbackup может использоваться, что бы инкрементальных бэкап делать, но это и в коде видно.

Исходный вопрос сформулирован как простой, в смысле допускает ответы да/нет (понимаю правильно/ошибаюсь). Вам не сложно дать такой ответ?
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074127
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваня Сусанин ... так что select h.*, d.* from header h join detail d using(doc_id) будет после рестора выполняться дольше (в файле базы записи из 'd' будут уже гораздо дальше от соотв-щей заголовочной строки 'h').
ну хоть капельку сомнения добавил-бы
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074131
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваня Сусанин,

Спасибо, буду разбираться, что Вы имели в виду.

Объясню, я пытаюсь понять с точки зрения выполняемого кода, в частности меня RecordNumber интересует, в т.ч. 1) время его неизменной жизни, 2) моменты, когда он может меняться.

SP Ваш ник безотносительно навевает сомнения :)
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074134
IzyaВаш ник безотносительно навевает сомнения :)Это хорошо. Потому что надо всё самому проверять. Никому не верьте на слово! :-)
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074143
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Izyaправильно я понимаю, что ....?
1) проект burp дает статическая библиотка, которая используется gbak?
2) Основную работу в burp выполняю ф-ии BACKUP_backup и RESTORE_restore, работают они на уровне логических записей. Соответственно, восстанавливая через gbak мы имеем перестроенную структуру записей, например записи меняют свой RecordNumber.
3) поэтому gbak умный, много чего может, но тормоз

4) А nackup наоборот тупой, но быстрый и очень простой, потому что тупо пишет целые страницы из файла БД в файл бекапа . Соответственно логическая структура записей остается совершенно нетронутой.
в целом, правильно. gbak это обычное клиентское приложение, работающее с базой через API. Поэтому ничего знать про физическую структуру базы оно не может в принципе.

Izyaчастности меня RecordNumber интересует, в т.ч. 1) время его неизменной жизни, 2) моменты, когда он может меняться
RecordNumber это внутреннее название RDB$DBKEY. На физическом уровне он неизменен до тех пор, пока жива хоть одна версия записи. Т.е. никакой update/delete не меняет номер записи. Но как только запись была удалена, транзакция закоммичена, не осталось заинтересованных других транзакций и сборка мусора физически удалила эту запись, то номер записи (по сути это слот на странице) может быть использован хранения для другой записи. Поэтому на прикладном уровне считается, что номер записи стабилен на время выполнения транзакции, прочитавшей запись (ибо она заинтересована и не дает убрать мусор). Можно сколь угодно увеличивать этот интервал, заблокировав сборку мусора (снапшот-транзакцией), со всеми вытекающими.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074263
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

Если честно, не совсем понял. Я думал, что RecordNumber показывает где она физически в страницах лежит. И если мы добавляем поле в таблицу с ALTER TABLE, то последующий UPDATE записи в этой таблице может привести к ее переносу в файле, что означает, что ее RecordNumber меняется, и это видно даже на логическом уровне (например VIO_modify(tdbb, orgRpb, newRpb, transaction) после выполнения в newRpb содержит rpb_number с новым RecordNumbe'ом. ). Ну видна она в какой-то транзакции с новым RecordNumber , да и шут с ним, это же ей не мешает лежать в цепочке версий записи.... или мешает?


А между транзакциям RecordNumber меняться может? В каких случаях( кроме восстановления через gbak)? Хотя бы приблизительно.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074297
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IzyaЯ думал, что RecordNumber показывает где она физически в страницах лежит.
он показывает, где физически на страницах лежит самая свежая версия в цепочке

IzyaИ если мы добавляем поле в таблицу с ALTER TABLE, то последующий UPDATE записи в этой таблице может привести к ее переносу в файле, что означает, что ее RecordNumber меняется
будет создана новая версия записи, старая будет перемещена, новая займет ее место (с тем же RecordNumber, т.е. он не меняется)

Izyaи это видно даже на логическом уровне (например VIO_modify(tdbb, orgRpb, newRpb, transaction) после выполнения в newRpb содержит rpb_number с новым RecordNumber'ом
не может такого быть

IzyaНу видна она в какой-то транзакции с новым RecordNumber
не надо выдумывать то, чего нет

IzyaА между транзакциями RecordNumber меняться может? В каких случаях( кроме восстановления через gbak)? Хотя бы приблизительно.
я уже написал в предыдущем ответе. У существующей записи (ее цепочки версий) никогда, пока ее не удалят и не соберется мусор. После этого тот же номер будет заюзан под другую запись. Иными словами, нельзя "запомнить" RecordNumber и через пару транзакций надеяться, что там находится все та же запись. Разве что из таблицы гарантированно ничего не удаляется.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074300
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IzyaЯ думал, что RecordNumber показывает где она физически в страницах лежит.
И это правильно.
IzyaИ если мы добавляем поле в таблицу с ALTER TABLE, то последующий UPDATE записи
в этой таблице может привести к ее переносу в файле
А это неправильно. Запись всю свою жизнь лежит в одном месте.

PS: Прежде чем браться за исходники, прочти основы на ibase.ru.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074313
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уточню немного - в некоторых местах ядра rpb_number может указывать и на конкретную версию, но это просто особенность реализации и она никогда не выходит наружу. Например, внутри того же VIO_modify() есть record_param temp, который представляет собой перемещенную старую версию записи, у него rpb_number действительно изменится и будет указывать на новое место. Но он нигде далее не используется и в org/new rpb не попадает, новая версия ссылается на старую только через rpb_b_page / rpb_b_line (которые по сути и есть rpb_number, только в виде прямой адресации). Но снаружи невозможно обратиться к конкретной версии по ее физическому адресу, только по "публичному" rpb_number (адресу самой свежей версии).
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074319
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IzyaВаня Сусанин,
Ваш ник безотносительно навевает сомнения :)
Есть еще люди, которые не узнают Таблоида без грима
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074330
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Спасибо.
на PC - я все сразу.

Читать буду, надеюсь пойму, но это для меня пока выглядит как какое-то непонятное чудо. Если мы добавили ALTER TABLE к таблице 100 новых полей и в UPDATE записали в эти поля значения - как запись может лежать в том же месте, не мешая соседним записям?

Запись всю свою жизнь лежит в одном месте.

То есть получается, что RecordNumber теоретически можно использовать, что бы обращаться к конкретной записи "всю свою жизнь", т.е. от момента её INSERT до момента её DELETE, невзирая невзирая даже на gbak?
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074337
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Izyaкак запись может лежать в том же месте, не мешая соседним записям?
Не может. Она будет мешать, начнётся фрагментация и деградация производительности. Поэтому
за ALTER TABLE на живой БД без последующего backup/restore надо бить по рукам.

Izyaневзирая невзирая даже на gbak?
gbak создаёт совершенно новые записи в совершенно новой базе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074346
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

Спасибо большой.
да и шут с ней, со старой-то версией.

Кстати, а в каком состоянии трешка, я ей увлекся, а вдруг зря, там еще все перелопатят сто раз (тьфу-тьфу) :)
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074355
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Izya,

конкретно там уже ничего перелопачивать не будут. Ибо близится RC 1.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074356
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Бить по рукам, наверное, надо.
Вы так эмоционально ответили на мой вопрос, что у меня вдруг закралось сомнение, что RecordNumber"ы после описанных мной манипуляций совсем не поползут.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074380
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IzyaЕсли мы добавили ALTER TABLE к таблице 100 новых полей и в UPDATE записали в эти поля значения - как запись может лежать в том же месте, не мешая соседним записям?
на том же месте будет лежать кусок новой записи, а избыток уйдет в другое место. Это называется фрагментацией.

IzyaТо есть получается, что RecordNumber теоретически можно использовать, что бы обращаться к конкретной записи "всю свою жизнь", т.е. от момента её INSERT до момента её DELETE
да, при условии что ты можешь контролировать эти моменты. Иначе DELETE-GC-INSERT и на том же месте лежит совсем другая запись.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074434
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IzyaТо есть получается, что RecordNumber теоретически можно использовать, что бы обращаться к конкретной записи "всю свою жизнь", т.е. от момента её INSERT до момента её DELETE, невзирая невзирая даже на gbak?
вопросы у вас какие-то подозрительные. особенно такой интерес к физическому номеру записи.

Например каким образом связаны gbak и rdb$db_key ? Да никаким, потому что gbak читает записи оператором select, и все. Номер записи имеет смысл только внутри конкретного файла БД. Он (номер) никуда не "переезжает", в принципе.
А nbackup это копирование страниц, поэтому как данные были на страницах, так и остались.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074875
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
dimitrда, при условии что ты можешь контролировать эти моменты. Иначе DELETE-GC-INSERT и на том же месте лежит совсем другая запись. Это я понимаю.Собственно, мне и нужно что-то типа такого контролера, "который" на каком-то уровне все манипуляции с конкретными записями через себя пропускал бы. Пока получается, его можно к логическому уровню VIO привязать, что очень хорошо.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074919
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Izyaмне и нужно что-то типа такого контролера, "который" на каком-то уровне /все/
манипуляции с конкретными записями через себя пропускал бы.
Конкретнее задачу озвучь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074947
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКонкретнее задачу озвучь.
специальная версия Firebird, которая привязывается к конкретной БД? Или шпионская редакция Firebird? Я так понимаю, этот "контроллер" будет до первого backup/restore работать.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39074998
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Сейчас пока не готов. Надо еще кое что выяснить.
...
Рейтинг: 0 / 0
По сорсу FB3, прошу подтвердить
    #39075000
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЯ так понимаю, этот "контроллер" будет до первого backup/restore работать. Нет, там записи в себе хранят инфу достаточную, что бы "пересоздать" контроллер с новыми recordnumber. Можно это рассматривать как дополнительный шаг restore.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / По сорсу FB3, прошу подтвердить
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]