Восстановление убитого кэша Беркли (BerkeleyDB)

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

T_Im
Постигающий Дао
Сообщения: 112
Зарегистрирован: 04 янв 2009, 21:52
Благодарил (а): 14 раз
Поблагодарили: 23 раза

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение T_Im »

Кажется понимаю в чем дело: мы восстанавливали *.bad базу в *.sdb, а версионная база имеет расширение *.sdbv. Соответственно, чтобы все заработало просто переименуйте файлы.
И если восстанавливать версионную базу кнопочкой в TC, то там в кнопке в конце команды тоже необходимо заменить sdb на sdbv.
могу ли я слить данные из новых файлов в старые (восстановленные)?
Откопируйте со структурой папок новые *.sdbv в другое место и через управление кешем скопируйте из той папки в рабочую без замены.
Аватара пользователя
Papazol
Гуру
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 73 раза
Поблагодарили: 647 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение Papazol »

Эх, если бы всё было так просто! Версионность базы я, естественно, учёл, иначе файлы без буквы v не были бы найдены и обработаны. Здесь что-то другое. К сожалению, без знания структуры баз данных невозможно ничего проверить, кроме как визуально в SASPlanet. А, поскольку там я не вижу того, ради чего всё и замучивалось... нужны ли мне такие базы данных? Есть ли в принципе способ определить, что содержит файл БД? Например, создать список jpeg'ов, которые там есть?
T_Im
Постигающий Дао
Сообщения: 112
Зарегистрирован: 04 янв 2009, 21:52
Благодарил (а): 14 раз
Поблагодарили: 23 раза

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение T_Im »

Увидел еще один недочет: в версионном кеше тайлу соответствует более одной пары ключ-значение. :roll: (есть "служебные" пары ключ-значение для всех тайлов)
Утилиту поправил в сообщении на предыдущей странице. Всем просьба еще раз перекачать.
У меня на модельном версионном кеше отработала нормально. Но хорошо бы еще потестить на наличие багов.
Хотя уже вижу, где могут быть неисправимые грабли:
1) для сопряженной с тайлом служебной пары ключ-значение никак не проверяется валидность значения (парсинг таких возможных ошибок в восстановленной базе ложится на плечи САС, и я не знаю, как она к ним относится)
2) также никак не проверяется наличие служебной пары ключ-значение для каждой тайловой пары ключ-значение и наоборот. Т.е. потенциально может импортироваться балластный мусор. Возможно, часть такого мусора можно "дочистить", реэкспортировав восстновленную базу САС-ом.
Но в любом случае, после аварийного восстановления клинером убирается часть мусора, который иначе удалить просто не возможно.
Аватара пользователя
Papazol
Гуру
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 73 раза
Поблагодарили: 647 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение Papazol »

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

UPD Закончился процесс, всё получилось!

Обрамить бы это в нормальный GUI, а то, сами понимаете...
T_Im
Постигающий Дао
Сообщения: 112
Зарегистрирован: 04 янв 2009, 21:52
Благодарил (а): 14 раз
Поблагодарили: 23 раза

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение T_Im »

Papazol писал(а):Обрамить бы это в нормальный GUI, а то, сами понимаете...
Пока есть временный вариант в виде кнопочки для TC (да, для версионной и неверсионной баз нужны 2 разные кнопочки или переименовывать восстановленный файл вручную, хотя нет, достаточно одной, забыл, что .bad дописывается к расширению, а не заменяет его! :) ).
Но правильно было бы включить db_cleaner в качестве дефолтного варианта восстановления sdb_util (еще при этом желательно пофиксить обнаруженные там недочеты). Можно попробовать сделать это самим, благо исходники открыты, но все же лучше, если это сделает сам автор (если он еще не забросил утилиту).
Ответить

Вернуться в «SAS.Планета»