[[главная|Главная страница]] ====== Тайловый версионный кэш ====== Здесь пока ничего не написано... ====== Версионный кэш Беркли ====== Сочетает в себе преимущества хранения относительно небольшого количества файлов и возможности работы с версиями снимков. ====Создание версионного кэша "с нуля"==== Если мы хотим создать новый версионный кэш, который будем наполнять путём скачивания, нужно всего лишь указать в zmp параметры **CacheType=61** и **Version=//Название версии по умолчанию//**. Для хранения версионного кэша Беркли в программе предусмотрена папка cache_dbv, поэтому по умолчанию новый кэш будет создан в этой папке. Однако нет проблем поместить этот кэш и в основную папку cache, нужно лишь указать соответствующий путь в настройках программы. Перед скачиванием снимков нужно указать название версии, в которую будут помещаться тайлы. Это можно сделать в окне "Параметры карты". Обычно название версии представляет собой её номер в соответствии с нумерацией картсервиса. Скачав снимки указанной версии, мы будем иметь возможность в дальнейшем проверять идентичность скачиваемых тайлов тайлам, уже имеющимся в кэше, и в случае их совпадения не сохранять дублирующиеся тайлы. ====Работа с версионным кэшем Беркли==== При выборе из списка карты с версионным кэшем Беркли будет автоматически установлена версия по умолчанию, указанная в zmp. В дальнейшем можно будет изменить "рабочую" версию, введя её название в поле **Версия** окна **Параметры карты**. В "рабочую" версию сохраняются скачиваемые тайлы, поэтому будьте внимательны и проверяйте URL перед тем, как начать скачивание. Для "рабочей" версии строится карта заполнения. При наличии в кэше нескольких версий снимков можно выбирать, тайлы какой из версий будут отображаться на экране. Для этого вызываем контекстное меню и выбираем пункт **Версия**. Если для данного места экрана существует несколько версий тайлов, их список будет виден в меню. Установив галку на нужной версии, мы будем видеть только тайлы этой версии. Чтобы видеть тайлы всех возможных версий для данного места, следует установить галку на опции **Отображать предыдущие версии**. Однако следует учитывать, что в данном случае карта заполнения будет строиться для всех доступных версий кэша. Если кликнуть на опции **Сбросить**, то ни одна из версий не будет "рабочей". При скачивании каждый тайл проверяется на идентичность существующему, причём проверяются все доступные версии. Если тайла, идентичного скачанному, не существует, то скачанный тайл сохраняется, в противном случае - пропускается. Поэтому версия, скачанная первой, будет иметь наибольшее количество тайлов, а последующие версии - гораздо меньше (для одной и той же выделенной области, конечно). ====Создание версионного кэша из ранее скачанного==== Целью данной операции является возможность дополнять имеющийся кэш новыми версиями. Для этого необходимо воспользоваться функцией **Управления кэшем**. Напомню, что данная функция обрабатывает весь кэш (или всю версию) целиком, в отличие от **Копирования**, при котором обрабатывается содержимое выделенной области. Возможны следующие варианты: ==== Исходный кэш неверсионный (Беркли или любой другой) ==== Заполняем опции **Управления кэшем**, указывая в верхней части окна параметры исходного кэша, опцию **Process only tiles with version:** (Обрабатывать только тайлы версии:) и поле с названием версии оставляем пустыми, так как наш исходный кэш неверсионный. В нижней части окна указываем параметры целевого кэша, формат выбираем **BerkeleyDB (версионный)**, ставим галку на опции **Set same version for all processed tiles:** (Установить единую версию для всех обрабатываемых тайлов:) и записываем в соответствующее поле название версии. Папка целевого кэша должна быть создана заранее. Нажимаем "Начать" и ждём окончания процесса. Для нового кэша необходимо создать zmp, в котором должна быть запись **CacheType=61**. ==== Исходный кэш версионный Беркли "старого образца" ==== Здесь процесс несколько сложнее. Версионный кэш "старого образца", как правило, содержит неверсионную часть, которая была скачана до появления возможности сохранять версии, и скачанные позднее версионные части. В зависимости от размеров каждой из частей наши действия могут быть разными. ====Неверсионная часть кэша велика, а версионная часть мала либо её вообще нет==== В этом случае проще и быстрее будет перенести все части по очереди в новое версионное хранилище. При этом для неверсионной части опцию **Process only tiles with version:** и поле с названием версии оставляем пустыми, а в целевом кэше, наоборот, включаем опцию **Set same version for all processed tiles:** и вписываем название версии. Для версионных частей требуется указать как версию источника, так и версию назначения. Для нового версионного кэша необходимо создать zmp. ====Версионная часть кэша велика==== В этом случае быстрее будет её не переносить в новое хранилище, а оставить в старом, преобразовав его в версионное нового образца. При этом неверсионную часть необходимо сначала переместить в другое хранилище, а затем из другого хранилища переместить в версионное, задав название версии. Операция состоит из следующих этапов: ===== Выделение неверсионной части кэша в отдельный кэш ===== Нам нужно извлечь неверсионную часть кэша и сохранить её на время. Удобнее воспользоваться целевым форматом SAS.Планета. Важно, чтобы тайлы **перемещались**, а не копировались, иначе невозможно будет вставить ранее неверсионную часть обратно. ===== Обработка оставшегося версионного кэша ===== Далее нам понадобятся утилиты для работы с Беркли. Запускаем **sdb_util.exe**, указываем наш исходный кэш и проводим над ним две операции: **Recover environment** и **Prepare cache for backup (reset LSN)**. Затем перемещаем кэш в папку cache_dbv (если необходимо) и меняем расширения всех файлов *.sdb на *.sdbv, а всех файлов *.tne - на *.tnev. ===== Вставляем выделенную неверсионную часть кэша обратно, но уже с обозначенной версией ===== Это сделать просто, см. **Исходный кэш неверсионный (Беркли или любой другой)**. ====Копирование в версионный кэш Беркли==== Усовершенствованная операция копирования позволяет указывать название версии, в которую будут скопированы или перемещены тайлы. Кроме того, опция **Make subfolder with map path name** (Создать вложенную папку с названием карты) может быть отключена, что позволяет копировать в один и тот же кэш отдельные снимки под одной (если они не накладываются друг на друга) или под разными версиями. ===Внимание!=== Нельзя применять операцию **перемещения** данных из одной версии кэша в другую версию **этого же** кэша. Это ведёт к невозвратимой потере данных, так как каждый перемещаемый тайл проверяется на идентичность существующему, то есть самому себе. Так как идентичность налицо, "вновь прибывший" тайл не сохраняется, а старый удаляется, потому что задано перемещение. В случае, когда задано копирование, кэш никак не изменится, но будет впустую потеряно время. Чтобы переместить часть информации в другую версию того же кэша, следует сначала переместить её в отдельный кэш, а уже из него вернуть в первоначальный под другой версией.