Версии тайлов

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: vdemidov, Tolik

Версии тайлов

Сообщение vasketsov » 29 янв 2012, 17:11

Вопрос касается проектирования структуры БД.
Хватит 2 байта под версию тайла?
Это равносильно существованию 65535 различных версий для одной карты (плюс 0 для "без версии").
vasketsov
Специалист
 
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 193 раз.

Re: Версии тайлов

Сообщение zed » 29 янв 2012, 20:27

Смотря для какой карты. В общем случае, версия - строковый параметр. К примеру, у Яндекса это что-то вроде "1.32.0" и в 2 байта это втиснуть будет проблематично.
Хитрости GoogleEarth - то, чего вы не знаете о гугле
Аватара пользователя
zed
Гуру
 
Сообщения: 2888
ICQ: 357167611
Зарегистрирован: 16 авг 2008, 20:21
Откуда: Беларусь, Могилёв
Благодарил (а): 89 раз.
Поблагодарили: 525 раз.

Re: Версии тайлов

Сообщение vasketsov » 29 янв 2012, 21:29

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

Впрочем продолжим. Имеет смысл делать поле crc32 int null для тайлов, чтобы не сохранять более новые версии, если тайл такой же (соответственно идентичность определять по crc32)? И если да - как обеспечить сохранность тайла, если из старой версии его захочется удалить?
Или достаточно уметь просто безо всяких сравнений тайлов возвращать предыдущую версию, если запрошенной нет?
vasketsov
Специалист
 
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 193 раз.

Re: Версии тайлов

Сообщение Parasite » 30 янв 2012, 08:21

vasketsov писал(а):Просто в первичный ключ пихать почти произвольную строку религия не позволяет. Поэтому и приходится городить ссылку на версии в таблице с тайлами. Ну и в любом случае по строкам не получится в общем случае быстро и просто сравнить версии, какая новее.

Ну вообще-то PRIMARY KEY нормально строиться на текстовые поля, если поле ограничено в длине (как минимум в мускуле - строится). То есть, "TileVer text|char primary key" - будет еррор, а "TileVer text|char(10) primary key" - таки сработает.
Понятно что не очень изящно, но работать - будет, и без доп.костылей...
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5613
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 119 раз.
Поблагодарили: 439 раз.

Re: Версии тайлов

Сообщение vasketsov » 30 янв 2012, 14:05

Parasite писал(а):Ну вообще-то PRIMARY KEY нормально строиться на текстовые поля, если поле ограничено в длине (как минимум в мускуле - строится)

Оно везде строится. Вопрос в излишнем размере и некорректной сортировке. Так как с необходимостью этот первичный ключ станет кластерным.
Да и в любом случае придётся делать отдельный "справочник" версий для карты, ибо если версии будут только в таблице с тайлами, задача "вернуть тайл предыдущей версии" поставит раком весь сервер.

Parasite писал(а):и без доп.костылей...

С каких это пор суррогатный ключ и ссылка на него из таблиц с тайлами - костыль?
vasketsov
Специалист
 
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 193 раз.

Re: Версии тайлов

Сообщение Parasite » 30 янв 2012, 16:48

vasketsov писал(а):
Parasite писал(а):Ну вообще-то PRIMARY KEY нормально строиться на текстовые поля, если поле ограничено в длине (как минимум в мускуле - строится)

Оно везде строится. Вопрос в излишнем размере и некорректной сортировке. Так как с необходимостью этот первичный ключ станет кластерным.
Да и в любом случае придётся делать отдельный "справочник" версий для карты, ибо если версии будут только в таблице с тайлами, задача "вернуть тайл предыдущей версии" поставит раком весь сервер.

Угу. Особенно при текстовом поле и полнотекстовом индексе (кой часто и получается больше самого поля раза эдак в два с половиной). Проходили-сс... Но для нужд обычного среднестатистического юзверя = сработает, у него как правило далеко не 100500 сотен тайлов, да и сервера-то как такового нет...А нуждам продвинутого - все равно никогда на 100% не угодишь. Имхо.
Впрочем - согласен, решение корявое.
PS: Но работоспособное до поры до времени.

vasketsov писал(а):
Parasite писал(а):и без доп.костылей...

С каких это пор суррогатный ключ и ссылка на него из таблиц с тайлами - костыль?

"костыль " = "религия не позволяет. Поэтому и приходится городить ссылку на версии в таблице с тайлами"©
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5613
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 119 раз.
Поблагодарили: 439 раз.


Вернуться в Раздел для разработчиков программы SAS.Планета

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

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