Parasite писал(а):У меня дежавю...
Да. Вопрос поднимался и поднимался в правильном направлении.
Однако в этом случае, если не хранить локальный кеш тайлов, мы проигрываем в быстродействии локальной отрисовки тайлов. Думаю это тоже не нравится автору в варианте с сервером и удалённой БД.
Вариант здесь такой:
- 1. Беркли надо прикручивать и локально и на сервере (на сервере можно по приведённой выше схеме).
2. Сервер должен быть необязательным.
3. В локальной базе тайлы должны метиться (индексированием) признаком IsSotred.
Если этот флаг стоит, значит тайл либо был загружен из местного хранилища, либо в него только что сохранён.
У закачанных из интернета тайлов этот флаг должен быть сброшен.
4. При наличии подключённого местного хранилища в разных потоках с настраиваемыми приоритетами должно происходить:
- 4.1. Загрузка тайлов из местного хранилища в локальный кеш по спирали от текущей точки просмотра (естественно с флагом Stored). Спираль должна расширяться и за пределы экрана.
4.2. Отправка в хранилище тайлов, не найденных в местном хранилище и загруженных из интернета (те, что без флага). После отправки им тоже ставится флаг Stored.
4.3. Давно неиспользованные тайлы с флагом Stored из местного кеша должны удаляться.
- 1. Не теряем всю полноту функционала локального кеша. Естественно, если хранилище не подключено, то ничего из локального кеша удаляться и высылаться не будет. В этом случае работа полностью аналогична тому, что есть сейчас.
2. Не теряется быстрота извлечения местных тайлов (тех, что около текущей точки просмотра в текущем и ближайших зумах).
3. Имеем распределённое по местной сети (или даже в интернет) альтернативное хранилище с отсутствием необходимости хранить и синхронизировать огромные кеши локально и вручную.
4. После длительной автономной работы, набравшийся не сохранённый локальный кеш будет автоматом вливаться в хранилище при наличии к оному подключения.
5. Так как на стороне хранилища есть Перловая или PHP прослойка, несложно создать механизм, который будет распределять входящие тайлы по некоторым правилам между несколькими базами хранилища. Например, детальные кеши городов с окрестностями можно хранить в отдельных базах (и, естественно, копировать, если надо, на локальный комп единым файлом, например. перед поездкой в этот город).
Этот или похожий механизм рано или поздно всё равно будет реализовываться, ибо одна из сфер применения Планеты -- это использование её всякого рода путешественниками для планирования и анализа маршрутов, например. А значит нужна не только склейка, но и большой автономный быстрый мобильный и легко синхронизируемый кеш.
Посему прошу заинтересованных участников форума поучаствовать в обсуждении этого механизма, внести свои поправки или дополнения.