MiMark
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору relictus Цитата: не согласен насчет "худший кэш" | Беру свои слова назад: сегодня удалось мельком почитать форум по GoogleMV и там поразило - 7 суток шло копирование кеша от него... Лично у меня, возникла навскидку, такая идея: 1. Не использовать никакую стороннюю Single, Simple FileSystem и т.д.; 2. Кеш уровней 1-6, состоит из индексного файла структуры (одна записть): имя тайла, его смещение(адрес) в файле с тайлами, длина тайла. 3. Индексный файл 1-6 уровней считывается в память сразу весь индекс а это 1365 строк длинной не более 20 байт (реально хватит даже 10), т.е займёт в памяти около 30 Кб. 4. Работа с файлом-тайлами (всегда по чтению, так же как и с индексом /для локалки/), и сразу встаём на нужное смещение и считываем тайл длинною, взятой из индекса. 5. Запись в файл-тайлы: считываем его длину, она пойдёт в индекс, как адрес тайла + для индекса запоминаем длину тайла (только запоминаем, пишем в индекс, только после успешного добавления тайла в файл-тайлы), открываем на добавление файл-тайлы и индексный файл (причём пытаемся открыть в цикле n-ное число раз в случае неудачи открытия /для локалки/), пишем в конец сам тайл, закрываем файлы (для возможности работы других пользователей), и добавляем данные в индексный файл в случае успеха записи тайла и тозакрываем индекс. Замечание: даже если выключить комп после записи тайла, то индекс не нарушется, всего лишь возрастёт файл-тайлы, на один не используемый тайл. Теперь главное - структура кеша для остальных уровней: 6. Индексный файл делится на два: настроечный и подчинённые. 7. Настроечный содержит 1024 строк (по количеству тайлов 6-го уровня) 8. Структура настроечного (одной строки): имя тайла (без начальной части, которая будет сидеть в имени файла), путь к файлу-индексу нижнего уровня и к файлу-тайлам. 9. Настроечный индекс весь закачивается в память. 10. Подчиненные индексные файлы и файлы-тайлы, полностью аналогичны по структуре файлам 1-6 уровней, но хранят, тайлы 7-24 уровней, производные от одной клетки-тайла 6-го уровня. 11. Имена файлов-тайлов и подчиненных индексов сооответствуют именам клеток-тайлов 6-го уровня, только расширения для индекса и файла с тайлами разное. Достоинства: 1. общее количество файлов кеша - 2051, что приемлемо даже, если их хранить в одной папке. Но реально их будет гораздо меньше, например клетки-тайлы 6-го уровня с океанами, антарктидой и др. у многих просто не будет, соответственно для каждой из них не будет и подчиненного индекса и файла-тайлов; 2. Кеш можно раскидать по дискам, любым, в т.ч. CD или DVD и, например, реализовать запрос нужного диска, когда он понадобился, либо создавать по согласию пользователя новый индекс и файл-тайлы; 3. Полностью потдержится работа в сети и несколько пользователей даже писать могут в кеш, в т.ч. одного уровня. 4. В отличи от текущего кеша SatMap не будет такой сильной неравномерности, хотя это утверждение, наверное, - спорно. Теперь о слоях (спутник, гибрид и т.д.) - для каждого слоя свой набор файлов кеша, но можно и совместить. Четко ещё не продумывал. PS: Конечно всё продумано не до конца, но всё равно жду Вашей оценки - стоит или не стоит рассмотрения такой вариант? |