SASGIS - SAS.Планета | ||||||||||
View Issue Details | ||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | |||||
0002708 | SAS.Планета | [All Projects] Хотелка | public | 01-05-2015 20:38 | 27-03-2019 07:52 | |||||
Reporter | vasketsov | |||||||||
Assigned To | ||||||||||
Priority | normal | Severity | minor | Reproducibility | N/A | |||||
Status | confirmed | Resolution | open | |||||||
Platform | OS | OS Version | ||||||||
Product Version | 181221 | |||||||||
Target Version | 50xxxx | Fixed in Version | ||||||||
Summary | 0002708: Промежуточный кэш для оптимизации записи для медленных тайлохранилищ | |||||||||
Description | В ряде случаев (зависит от типа тайлохранилища) сохранение единичного тайла занимает достаточно много времени и тормозит загрузку тайлов из интернета. Тогда как если сохранять сразу несколько тайлов, то при тех же накладных расходах на осуществление доступа к тайлохранилищу (поиск, открытие и т.п.), блокировку и т.п. (опять же в зависимости от типа тайлохранилища) общее время будет меньше, чем если бы сохраняли тайлы по одиночке. Идея заключается в том, чтобы сохранить скачанный тайл в промежуточный кэш в памяти, и сливать его в хранилище по мере накопления, по событию Sync, при закрытии тайлохранилища, при смене версии и т.п. - в общем, по достаточно редким событиям (кроме разве что накопления, ибо можно просто сделать ограничение сверху на размер этого кэша, скажем 10, и сливаться он будет довольно часто). Поскольку это всё прежде всего зависит от картосервиса (насколько он быстрый), а также от расположения и типа тайлохранилища, делать этот кэш общим на все карты неразумно, логичнее всего его иметь внутри ITileStorage. Наверное, он должен быть технически похож на существующий кэш тайлов в памяти (в общем случае - быть версионным), но соответственно всё сохранение тайлов в хранилище должно идти через него (а уже из него по событию должен осуществляться массовый слив тайлов в нижележащее хранилище). Для того, чтобы убедиться в способности хранилища реально сохранять тайлы, первый тайл должен пролететь успешно мимо этого кэша, как сейчас, хотя это и не обязательно. Возможно, потребуется сделать новый метод в интерфейсе, который бы сливал этот кэш в тайлохранилище, если кэш будет не внутри ITileStorage, а например на уровне карты. Всё это должно работать только при включении параметра в Zmp, как сейчас обстоит дело с MemCache. Как пример, когда это будет мегаполезно: если тайлохранилище состот из нескольких файлов БД, доступ к которым (поиск, открытие, чтение) осуществляется исходя из тайловых координат (x,y,z,v). Алгоритм сливания кэша в хранилище не регламентируется, поскольку зависит от его структуры и природы, но в частности, можно итеративно открывать БД для первого тайла, сливать из кэша в БД всё что туда подходит (а при скачке по выделенной области это будет как раз оптимум), и далее повторять это, пока кэш не опустеет. Возможно даже сделать два таких кэша, чтобы пока один сливается, второй мог заполняться снаружи новыми тайлами. А может быть всё совсем не так, и надо просто немного изменить существующий MemCache, чтобы он заработал и за себя и за того парня, хотя существующие концептуальные проблемы заполнением и поиском внутри MemCache наводят на мысль, что поручать ему это нельзя. | |||||||||
Steps To Reproduce | ||||||||||
Additional Information | ||||||||||
Tags | No tags attached. | |||||||||
Relationships |
| |||||||||
Attached Files | ||||||||||
Issue History | ||||||||||
Date Modified | Username | Field | Change | |||||||
01-05-2015 20:38 | vasketsov | New Issue | ||||||||
03-05-2015 06:50 | vdemidov | Note Added: 0015819 | ||||||||
03-05-2015 08:45 | vasketsov | Note Added: 0015820 | ||||||||
31-07-2015 10:18 | vdemidov | Relationship added | related to 0001200 | |||||||
27-03-2019 07:52 | vdemidov | Status | new => confirmed | |||||||
27-03-2019 07:52 | vdemidov | Product Version | => 181221 | |||||||
27-03-2019 07:52 | vdemidov | Target Version | => 50xxxx | |||||||
13-07-2019 14:30 | RIXXX | Issue cloned: 0003476 |
Notes | |||||
|
|||||
|
|
||||
|
|||||
|
|