View Issue Details

IDProjectCategoryView StatusLast Update
0001920SAS.ПланетаХотелка / Feature requestpublic20-06-2016 15:21
Reportervdemidov Assigned Tozed  
PrioritynormalSeverityfeatureReproducibilityN/A
Status resolvedResolutionfixed 
PlatformWindowsOS7OS VersionUltimate
Product Version121010 
Target Version160707Fixed in Version160707 
Summary0001920: Новый тип кэша на основе SQLite3
DescriptionКэш тайлов на основе набора баз SQLite3 по тем же принципам что и кэш на BerkeleyDB.
TagsSQLite, версионный кэш, тайлохранилище

Relationships

related to 0001919 resolvedzed SAS.Планета Новый тип кэша на основе SQLite3 (в формате MBtiles) 
related to 0001376 closedvasketsov SACS.Планета Новый тип кэша на основе SQLite3 (в формате MBtiles и не в формате MBtiles) 
related to 0003078 resolvedzed SAS.Планета Кэш SQLite3: функции Delete и SaveTile могут возвращать неопределённый результат 

Activities

zed

16-06-2016 13:04

manager   ~0017378

Last edited: 20-06-2016 15:21

Портировал реализацию из SACS (детали см. в 0001376). Работает просто замечательно :)

По сравнению с SACS нету:
- поддержки формата MBTiles и всего с ним связанного;
- сжатия тайлов на лету

Всё остальное идентично, так что если в SACS не использовалось сжатие, то кэши будут совместимы.

Тестируйте ночнушку, ищите баги.

zed

16-06-2016 14:57

manager   ~0017379

Меня пока что смущает, что в БД используется кодировка UTF-16. Я склоняюсь к тому, чтобы сделать UTF-8.

Tolik

17-06-2016 05:35

manager   ~0017384

Last edited: 17-06-2016 05:36

А расскажите, в чём преимущества/недостатки по сравнению с Беркли?
Он будет устойчивее к сбоям? Например, при зависании/вырубании компа открытый кэш не будет портиться?
Переносить кэш на др. комп легко (просто копированием папки)?
Read only версия кэша есть?

Tolik

17-06-2016 05:45

manager   ~0017385

Last edited: 17-06-2016 05:49

Ну, работает. Радует, что нет непонятной папки env. Почему sqlite viewer не открывает файл кэша? Файл меток открывает.
http://totalcmd.net/plugring/sqliteviewer.html

Чем можно посмотреть, что там внутри? И чем чинить, если покорраптится?

Tolik

17-06-2016 05:56

manager   ~0017386

Last edited: 17-06-2016 06:04

Конверсия кэша Беркли -> sqlite прошла якобы успешно, файлы сгенерились, но ничего не открывается. Создался sqlite.log (кстати, в UTF-16, но без хедера, так что гляделкой открывается как binary), в нём много таких строк:
2016-06-17 08:51:16.445 (replace) no such column: image ( error code: 1)

P.S. Пардон, всё работает, просто указал не то расширение файла (на фиг оно вообще нужно, когда кэш в БД?!) Лог ошибок теперь не создался.

Tolik

17-06-2016 06:03

manager   ~0017387

Last edited: 17-06-2016 06:09

Карта заполнения строится мгновенно (по сравнению с Беркли).

zed

17-06-2016 06:51

manager   ~0017388

Работает быстрее, переносить на другой комп проще. Что такое SQLite знает любой школьник, а вот про BerkeleyDB мало кто слышал.

Со сбоями должно быть не хуже (а то и лучше), чем в Беркли.

Файл БД теоретически можно открыть только для чтения, но сейчас это у нас не реализовано. В то же время, через настройки карты всегда можно запретить запись в кэш.

Структура файла простая, посмотреть можно практически любой гляделкой (например, SQLiteStudio). Плагину от тотала не нравится расширение файла.

zed

17-06-2016 07:41

manager   ~0017392

А нет, с WAL журналом режим только для чтения не совместим: Write-Ahead Logging and Read-Only mode compatible in SQLite3?

Tolik

17-06-2016 18:14

manager   ~0017402

Всё круто, только надо провести крэш-тесты: запустить на скачку и поубивать процессы. И добавить тулзы для поиска и коррекции ошибок.

zed

17-06-2016 18:32

manager   ~0017403

Утилиты есть на сайте производителя: http://www.sqlite.org/2016/sqlite-tools-win32-x86-3130000.zip Принцип восстановления описан, например, вот тут: https://habrahabr.ru/post/160629/

Убиванием процесса базу повредить скорее всего не удастся. Тут надо выдёргивать штепсель из розетки.

Garl

17-06-2016 19:19

manager   ~0017404

а то что при пустой версии становится доступна версия "0" - это здесь писать или другой тикет делать?

zed

17-06-2016 19:45

manager   ~0017405

Так задумано.

zed

18-06-2016 06:45

manager   ~0017406

А хотя, надо пофиксить. Только тогда нельзя будет руками задать версию 0. Это будет зарезервированная версия для обозначения "нет версии".

Garl

18-06-2016 10:34

manager   ~0017409

а "" вместо нуля можно? или банально не отображать версию "0" в списке версий при таком типе кэша...

з.ы.
я пока ни разу не попадал на версию "0"

zed

18-06-2016 10:41

manager   ~0017410

Если пользователь не указал версию, т.е. версия - пустая строка, то в БД записывается 0 (как число), поскольку в БД поле версии обязательно и по нему индекс строится.

А вот то, что при чтении версии из БД, этот 0 не преобразуется обратно в пустую строку, а воспринимается как настоящая версия, надо исправить.

zed

18-06-2016 21:26

manager   ~0017411

Исправил кодировку и отображение нулевой версии.

Issue History

Date Modified Username Field Change
07-05-2013 07:09 vdemidov New Issue
07-05-2013 07:09 vdemidov Issue generated from: 0001919
07-05-2013 07:09 vdemidov Relationship added related to 0001919
07-05-2013 07:09 vdemidov Status new => confirmed
09-10-2015 13:24 vdemidov Tag Attached: тайлохранилище
16-06-2016 06:58 zed Assigned To => zed
16-06-2016 06:58 zed Status confirmed => assigned
16-06-2016 06:59 zed Target Version 42xxxx => 160707
16-06-2016 06:59 zed Summary Новый тип кэша на основе SQLite3 (не в формате MBtiles) => Новый тип кэша на основе SQLite3
16-06-2016 06:59 zed Description Updated
16-06-2016 07:00 zed Tag Attached: SQLite
16-06-2016 07:00 zed Tag Attached: версионный кэш
16-06-2016 07:01 zed Relationship added related to 0001376
16-06-2016 13:04 zed Note Added: 0017378
16-06-2016 14:57 zed Note Added: 0017379
17-06-2016 05:35 Tolik Note Added: 0017384
17-06-2016 05:36 Tolik Note Edited: 0017384
17-06-2016 05:45 Tolik Note Added: 0017385
17-06-2016 05:49 Tolik Note Edited: 0017385
17-06-2016 05:56 Tolik Note Added: 0017386
17-06-2016 05:57 Tolik Note Edited: 0017386
17-06-2016 06:02 Tolik Note Edited: 0017386
17-06-2016 06:03 Tolik Note Added: 0017387
17-06-2016 06:04 Tolik Note Edited: 0017386
17-06-2016 06:06 Tolik Note Edited: 0017387
17-06-2016 06:09 Tolik Note Edited: 0017387
17-06-2016 06:51 zed Note Added: 0017388
17-06-2016 07:41 zed Note Added: 0017392
17-06-2016 18:14 Tolik Note Added: 0017402
17-06-2016 18:32 zed Note Added: 0017403
17-06-2016 19:19 Garl Note Added: 0017404
17-06-2016 19:45 zed Note Added: 0017405
18-06-2016 06:45 zed Note Added: 0017406
18-06-2016 10:34 Garl Note Added: 0017409
18-06-2016 10:41 zed Note Added: 0017410
18-06-2016 21:26 zed Note Added: 0017411
20-06-2016 15:20 zed Status assigned => resolved
20-06-2016 15:20 zed Fixed in Version => 160707
20-06-2016 15:20 zed Resolution open => fixed
20-06-2016 15:21 zed Note Edited: 0017378
20-06-2016 15:21 zed Relationship added related to 0003078
08-08-2025 13:24 zed Category Хотелка => Хотелка / Feature request