View Issue Details

IDProjectCategoryView StatusLast Update
0002757SAS.ПланетаХотелка / Feature requestpublic27-03-2019 07:50
Reportervasketsov Assigned Tovdemidov  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionwon't fix 
PlatformWindowsOS7OS VersionUltimate
Summary0002757: Реализация тайлового кэша в памяти на основе SQLite или Беркли
DescriptionТайловый кэш в памяти по сути используется почти как Key-Value хранилище (в смысле, нет "диапазонных" запросов, так что целочисленный R*tree-индекс не нужен), кроме того, от него не требуется persistance, а про автоматическое восстановление после сбоев и думать нет необходимости.

Соответственно, возможно что получится ускорить его работу и сделать его по-настоящему версионным, если сделать его на основе SQLite или Беркли.

У SQLite есть возможность открыть базу :memory:, раскрутив по максимуму все локи, убрав синхронизации внутри движка (пока идёт SELECT, выполнение DELETE в любом случае не нарушит согласованности данных, а там вся задача-то - блоб дернуть) и т.п.
Родной INTEGER там Int64 - так что x и y можно смело паковать вместе в одно поле id. Останется версия тайла + возможно некий идентификатор собственно карты или хранилища (который не меняется, пока программа работает, хоть даже Pointer, а при смерти интерфейса можно вычищать кэш в памяти). С идентификатором хранилища - кэш в памяти можно вообще сделать один на все хранилища, и чистить его по таймеру надо будет ровно также, только легче. Без - значит у каждого свой, как и сейчас.

У Беркли наверняка есть аналогичные возможности, только надо будет настоящий Key соорудить (м.б. для приватного кэша в памяти для каждого хранилища отдельно даже будет быстрее всего работать).

Это всё к тому, что есть подозрение, что вменяемый индекс по Key позволит выполнять операции над кэшем в памяти быстрее, чем сейчас, когда фактически Key строковый.
TagsNo tags attached.

Activities

vdemidov

30-07-2015 08:53

manager   ~0016244

Ну, то что строковый индекс нужно менять тут сомнений нет. Но вот стоит ли для этих целей палить из пушки по воробьям у меня есть сомнения. Ограничения на общий расход памяти на процесс это не снимет, а только добавит накладных расходов. ИМХО просто пора переделать кэш в памяти на хэш таблицу.

Issue History

Date Modified Username Field Change
24-06-2015 13:57 vasketsov New Issue
30-07-2015 08:53 vdemidov Note Added: 0016244
27-03-2019 07:50 vdemidov Status new => resolved
27-03-2019 07:50 vdemidov Resolution open => won't fix
27-03-2019 07:50 vdemidov Assigned To => vdemidov
27-03-2019 07:50 vdemidov Status resolved => closed
08-08-2025 13:24 zed Category Хотелка => Хотелка / Feature request