SASGIS

Веб-картография и навигация

Принцип хранения кеша

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

Модератор: Tolik

Re: Принцип хранения кеша

Сообщение zed » 12 мар 2009, 13:35

Cowa писал(а):
zed писал(а):В таком случае, если нет готовых решений, гораздо проще и быстрее сделать свой контейнер изначально не подверженный крушениям.
но все равно найдется несколько байтиков, затерев которые база рухнет

В том то и дело, что нет таких особенных байтиков :) Это типа формата RAW для фоток - затирой хоть 99,9% данных нулями, но оставшиеся 0,1% всегда можно просмотреть, а БД можно сравнить с BMP - у которого таки да, есть критические участки, повредив которые, штатными средствами фотку не просмотреть, нужны утилиты по восстановлению.
Простейший контейнер состоит из маркера + собственно данные. Маркер находится непосредственно перед каждой записью с данными, в котором записана вся необходимая инфа (считай все поля таблицы из БД), в том числе размер и CRC следом идущих данных, а также адрес следующего маркера. Вся избыточность инфы - размер маркера, и обычно, хватает 32 байта на всё это дело. Обратите внимание на кэш GE (я приводил ссылки с его подробным описанием) - вот пример такого контейнера, и заметьте - это не БД, а именно контейнер для хранения данных тайлового типа, и ничего балее. Узкоспециализированное решение, которое даёт надёжность и при этом нет избыточности (суммарный размер всех маркеров не превышает 8-15 Мб на 2Гб данных). А SQLite, выходит, слишком унверсален, потому и ненадёжен... Юмор: "Шальной байт - и гигабайты отдыхают", с SQLite становится правдой жизни.

P.S. С возможностями обеспечения надёжности путём резервного копирования данных я знаком, спасибо. Меня интересует не то, как сохранить данные, а как использовать неповреждённые данные, при частичном повреждении БД. Это несколько разные вопросы и задачи.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Принцип хранения кеша

Сообщение SergeyKa » 12 мар 2009, 15:13

Встряну в разговор...
Мне кажется, что решение должно быть основано на требованиях задачи, которую вы собираетесь решить.
Решения гугла основаны на требованиях экономии трафика при работе с удаленной картоосновой. В случае
локального кэша такое решение может быть неэффективно. Это я к тому, что для локального хранения
имеет смысл хранить укрупненные тайлы, тк оперативки нынче много, а многофайловость - не лучшее
решение. Исходя из этого можно предложить решение: атрибуты скачаных тайлов хранить в базе
а сами тайлы по получению укрупнять и хранить в виде файлов (всю директорию в 1-2-3-4 файл(а) слить).
Как такой вариант?
ЗЫ В случает при потере информации о тайлах мы не теряем сами тайлы. В случае потери тайла - можно
инф в базе обновить.
ЗЫЫ Плюс базы, кстати, еще и в индексировании :) всего ....
ЗЫЫ Про текущую защищенность. Диск под TrueCrypt на внешнем HDD был резко отключен :)
Write Back Cache Error. В резултате погибли два файла... угадайте какие?
SASPlanet.ini maps.ini ...
Вывод: автор не держи открытыми ini файлы :) Сохраняй по необходимости.
SergeyKa
Постигающий Дао
 
Сообщения: 108
ICQ: 7417559
Зарегистрирован: 04 мар 2009, 01:03
Откуда: Москва
Благодарил (а): 110 раз.
Поблагодарили: 21 раз.

Re: Принцип хранения кеша

Сообщение zed » 12 мар 2009, 15:35

SergeyKa писал(а):атрибуты скачаных тайлов хранить в базе
а сами тайлы по получению укрупнять и хранить в виде файлов (всю директорию в 1-2-3-4 файл(а) слить).
Как такой вариант?

Именно так я и собираюсь делать. Укрупнённые файлы - контейнеры содержащие атрибуты + тайлы, и будет индекс в БД, содержащий те же атрибуты и ссылку на контейнер(ы) в котором лежит тайл (ссылка прямая, и поиск по контейнеру выполнять уже не надо). А при потере/повреждении индекса оный легко и быстро восстанавливается из контейнера (путём сканирования и чтения маркеров)

ЗЫЫ Про текущую защищенность. Диск под TrueCrypt на внешнем HDD был резко отключен
Write Back Cache Error. В резултате погибли два файла...

Вам крупно повезло, а мог погибнуть весь контейнер...
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Принцип хранения кеша

Сообщение SergeyKa » 12 мар 2009, 16:49

zed писал(а):Именно так я и собираюсь делать. Укрупнённые файлы - контейнеры содержащие атрибуты + тайлы, и будет индекс в БД, содержащий те же атрибуты и ссылку на контейнер(ы) в котором лежит тайл (ссылка прямая, и поиск по контейнеру выполнять уже не надо). А при потере/повреждении индекса оный легко и быстро восстанавливается из контейнера (путём сканирования и чтения маркеров)

Отлично. Но и тут не все так просто... А в каком виде контейнер будет?
zed писал(а):Вам крупно повезло, а мог погибнуть весь контейнер...

Ну не первый год живем - копия нас спасет:)
Еще одна проблемка вырисовалась. Метки и merge копий.
Есть три пользователя со своим инетом и своими копиями кэша. Есть свои файлы меток.
В случае использования БД вопрос с объединением версий может быть решен достаточно просто.
Запрос на поиск новых тайлов - прост, но в случае укрупненных тайлов merge тайлов с "дырками"
будет продолжительней по времени...

Кстати, а еще один вопрос.. а был бы удобен режим когда показывается удачный тайл наибольшего разрешения из набора слоев.
Те указаны три/четыре слоя карты. На 19 уровне по центру только в одном из слоев есть удачный снимок и сейчас чтобы его показать
необходимо подряд пересмотреть 4 слоя. "Режим лупы" в центральном тайле какой-то... :)

ЗЫ И мне непонятно почему в текущей версии Автор ушел от понятия слоя и стандартного его отображения :)
Выбор слоя из меню несколько напрягает и горячих клавиш там невидно :(
SergeyKa
Постигающий Дао
 
Сообщения: 108
ICQ: 7417559
Зарегистрирован: 04 мар 2009, 01:03
Откуда: Москва
Благодарил (а): 110 раз.
Поблагодарили: 21 раз.

Re: Принцип хранения кеша

Сообщение zed » 12 мар 2009, 17:09

А в каком виде контейнер будет?

Практически один в один, как и кэш GE. Только лимитов на размер кэша пока не предвидется :)
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Принцип хранения кеша

Сообщение Alexander » 13 мар 2009, 15:36

Вы дейстствительно думаете что есть резон хранить резервную копию например 0,5Тб данных, когда есть альтернатива просто восстанавливать не повреждённые данные? Я эксперементируя над кэшем MaPro решил слить каждый тип в один файл и не жалею об этом. При больших объёмах на индексную структуру и разделители тайлов тратиться порядка 0,2% для jpg и порядка 1% для png, это вполне приемлемая цифра. При повреждении файла, простым сканированием восстанавливается индексная структура для целых тайлов. Сканирование медленное (~250Гб/сутки) но повреждение случается редко, особенно если UPS стоит (не такая уж дорогая вещь).
Alexander
Соображающий
 
Сообщения: 78
Зарегистрирован: 14 июл 2008, 09:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Принцип хранения кеша

Сообщение zed » 13 мар 2009, 16:50

Alexander писал(а):Сканирование медленное (~250Гб/сутки) но повреждение случается редко, особенно если UPS стоит (не такая уж дорогая вещь).

У меня 1Гиг ~ за 2 минуты индексируется (130 тыс. тайлов с расчётом CRC, причём тайлы - все файлы из GE кэша, размером от ~40 байт). Т.е. выходит 720 Гиг/сутки, хе в 3 раза быстрее :)
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Принцип хранения кеша

Сообщение saius » 13 апр 2009, 10:24

Если кто еще не видел - запатентованная схемка карт гугла:
http://www.google.com/patents?id=Y5h-AA ... 1#PPA14,M1
стр.5-8 - структура сайта с принципом работы с БД
со страницы 33 - текст про то же

Я правда сан не много понял, но может кого натолкнет на правильные мысли
saius
Новичок
 
Сообщения: 6
Зарегистрирован: 01 апр 2009, 12:06
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Пред.

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9