Использование в Sas.Планета кеша в формате Berkeley

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

Модератор: Tolik

kefi
Соображающий
Сообщения: 78
Зарегистрирован: 26 ноя 2011, 15:53
Благодарил (а): 1 раз
Поблагодарили: 10 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение kefi »

zed писал(а):Да это нормально. Очистить базу от удаленных файлов можно при помощи консольных утилит db_dump и db_load через создание дампа с последующим его восстановлением для каждого *.sdb файла в отдельности.
Так - а где инструкции по их использованию, и как, например, понять в каком SDB находятся интересующие меня тайлы ?

DJ VK » Я как раз не хотел бы иметь несколько вариантов одного и того же, хотелось бы нормальной работы с одним кешем , причем, чтобы не было миллиона фалов в нем.
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение zed »

kefi писал(а):Так - а где инструкции по их использованию
http://sasgis.org/forum/viewtopic.php?f ... =60#p34545
kefi писал(а):и как, например, понять в каком SDB находятся интересующие меня тайлы
Псевдокод:

Код: Выделить всё

'z' + (zoom) + '/' + (x shr 10) + '/' + (y shr 10) + '/' + (x shr 8) + '.' + (y shr 8) + '.sdb'
Операция сдвига вправо (shr) на 10 эквивалентна целочисленному делению на 1024, а сдвиг на 8 - деление на 256. Ну и можно посмотреть в строку состояния в SAS - там выводится полный путь до тайла.
kefi писал(а):причем, чтобы не было миллиона фалов в нем
В одном sdb файле может быть не более 65k тайлов (квадрат 256*256 тайлов). Естественно, это если речь про неверсионный кэш. В версионном будет по 65k тайлов на каждую версию (при полном заполнении квадрата).
Аватара пользователя
DJ VK
Гуру
Сообщения: 1468
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 80 раз
Поблагодарили: 314 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение DJ VK »

kefi писал(а): как, например, понять в каком SDB находятся интересующие меня тайлы ?
"Отображать границы изображений" включаем для интересующего масштаба минус 8 ;) - вот и границы отдельных sdb файлов, (и даже номера x= y= позволяющие найти их по имени в кэше).
kefi писал(а): Я как раз не хотел бы иметь несколько вариантов одного и того же, хотелось бы нормальной работы с одним кешем , причем, чтобы не было миллиона фалов в нем.

кэш на определенном этапе (имхо - когда алгоритм скачивания обучен пропускать ненужные тайлы) переводится в sdb целиком, дублирования не будет.
далее все остальное докачивается уже в sdb. отдельно скачивается лишь обновление, и опять же перемещается в основной беркли после обработки, но и хранить его временно можно в чем угодно...

еще в тему - как почистить беркли от удаленных тайлов:
http://sasgis.org/forum/viewtopic.php?f ... =60#p34543 и далее
Аватара пользователя
Papazol
Гуру
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 73 раза
Поблагодарили: 647 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение Papazol »

В версии 140303 есть набор утилит для Беркли. Он состоит как минимум из 5 файлов. А у меня кое-где хранятся утилиты, которые были раньше, и их гораздо больше. Так вот вопрос: имеет ли смысл держать все эти старые утилиты, или их снести, потому что они нерабочие?
И второй вопрос: нельзя ли положить всё, что относится к утилитам sdb, в отдельную папку, и чтобы сохранилась работоспособность?
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение zed »

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

Код: Выделить всё

libdb51.dll
msvcm90.dll
msvcp90.dll
msvcr90.dll
db_archive.exe
db_checkpoint.exe
db_deadlock.exe
db_dump.exe
db_hotbackup.exe
db_load.exe
db_log_verify.exe
db_printlog.exe
db_recover.exe
db_replicate.exe
db_stat.exe
db_upgrade.exe
db_verify.exe
sdb_util.exe
Те 4 db утилиты, что есть в релизе, используются в sdb_util.exe, а остальные можно использовать только через консоль и для обычного пользователя они не нужны (дополнительные утилиты могут пригодиться для отладки, поиска багов или изучения того, как на низком уровне работает кэш Беркли).
Аватара пользователя
Papazol
Гуру
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 73 раза
Поблагодарили: 647 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение Papazol »

В процессе работы с кэшем Беркли возникли следующие вопросы:
1. Каков порядок отображения тайлов при установке галки "Отображать предыдущие версии"? Почему такой вопрос возник? Если мы смотрим самую свежую версию, то все остальные по отношению к ней - предыдущие. То есть, все должны показываться. А если мы смотрим самую старую версию, то предыдущих для неё нет, но показывается самая свежая (по крайней мере).
2. Есть ли возможность сделать так, чтобы можно было указывать отображение нескольких (не всех) версий? То есть, для каждой версии отдельная галка? Если да, то создам хотелку.
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение zed »

Papazol писал(а):Каков порядок отображения тайлов при установке галки "Отображать предыдущие версии"?
Если не найдена текущая версия, то отображается самая старшая/свежая/бОльшая версия.
Papazol писал(а):2. Есть ли возможность сделать так, чтобы можно было указывать отображение нескольких (не всех) версий? То есть, для каждой версии отдельная галка? Если да, то создам хотелку.
Открывайте хотелку, если там чего-то невозможно или нецелесообразно, то там и получите ответ от vdemidov-а.

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

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение Papazol »

zed писал(а):Если не найдена текущая версия, то отображается самая старшая/свежая/бОльшая версия.
А если брать общий случай, то есть название версии не число, а строка?
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение vdemidov »

Papazol писал(а):
zed писал(а):Если не найдена текущая версия, то отображается самая старшая/свежая/бОльшая версия.
А если брать общий случай, то есть название версии не число, а строка?
Так оно именно строки и сравнивает. Поэтому не удивляемся, если получится 1 > 10
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
Papazol
Гуру
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 73 раза
Поблагодарили: 647 раз

Re: Использование в Sas.Планета кеша в формате Berkeley

Сообщение Papazol »

Сегодня получилось следующее: тестируя zmp, забыл поменять GUID, соответственно, получил при загрузке программы сообщение и тут же закрыл программу крестиком в углу окна. После чего при старте получаю сообщение о такой ошибке:
14-07-2014 11:50:17.218 EBerkeleyDBExeption: BerkeleyDB Env: unable to join the environment [root path: q:\sasplanet\cache\yandex_map_db\]
Данная карта была открыта в программе последней. Теперь карта не открывается. Что нужно сделать?

UPD
Нужно применить к этому кэшу утилиту sdb_util с действием "prepare cache to backup (reset LSN)". При последующем старте SASПланеты environment создастся автоматически, и всё заработает.
Ответить

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