SASGIS

Веб-картография и навигация

Sas cache 2 SQLite

Обсуждение различной информации связанной с картографией в САСе, а также сторонние программные продукты для связки с САСом

Модератор: Tolik

Sas cache 2 SQLite

Сообщение Vasya » 17 мар 2009, 20:10

Для постановки разных эксперементов забабахал утилитку.
Сразу оговорюсь - однопоточная, так что во время работы интефейс подвисает.
Написана под .NET Framework 2.0 http://ru.wikipedia.org/wiki/.NET_Frame ... mework_2.0
Вложения
CacheToSQLite.rar
Экзешник
(9.15 KiB) Скачиваний: 312
Аватара пользователя
Vasya
Советчик
 
Сообщения: 266
ICQ: 137791
Зарегистрирован: 14 июл 2008, 13:06
Откуда: Одесса
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.

Re: Sas cache 2 SQLite

Сообщение SergeyKa » 18 мар 2009, 15:06

А поподробнее? Формат хранения? ЧТо храним?
SergeyKa
Постигающий Дао
 
Сообщения: 108
ICQ: 7417559
Зарегистрирован: 04 мар 2009, 01:03
Откуда: Москва
Благодарил (а): 110 раз.
Поблагодарили: 21 раз.

Re: Sas cache 2 SQLite

Сообщение Vasya » 18 мар 2009, 17:26

Берём кеш и создаём примерно такую же структуру расположения папок, как и в SAS.Планета:
Код: Выделить всё
CREATE TABLE [tiles] (
                    [id] integer PRIMARY KEY AUTOINCREMENT NOT NULL,
                    [mapName] text NOT NULL,
                    [zoom] text NOT NULL,
                    [z1] integer NOT NULL,
                    [z2] text NOT NULL,
                    [z3] integer NOT NULL,
                    [fileName] text NOT NULL,
                    [file] BLOB NOT NULL,
                    [datetime] DATETIME,
                    [size] big NOT NULL                   
                );
CREATE UNIQUE INDEX i1 ON tiles (""mapName"",""zoom"",""z1"",""z2"",""z3"",""fileName"");";


Формат хранения SQlite
Предназначение - нагрузочные тесты, проверка на повреждение и т.д.

Пока такая стуктура. В дальнейшем добавлю указание о том, что тайла нет.
Аватара пользователя
Vasya
Советчик
 
Сообщения: 266
ICQ: 137791
Зарегистрирован: 14 июл 2008, 13:06
Откуда: Одесса
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.

Re: Sas cache 2 SQLite

Сообщение SergeyKa » 18 мар 2009, 18:57

Угу..
+ тайла нет
+ время тайла

Базы лучше разбросать по картам, те на каждую карту свой файл... ИМХО..
Индекс такой будет на эффективен. Spatial Index насколько я помню не так тривиален при боьшом кол-ве объектов.
SergeyKa
Постигающий Дао
 
Сообщения: 108
ICQ: 7417559
Зарегистрирован: 04 мар 2009, 01:03
Откуда: Москва
Благодарил (а): 110 раз.
Поблагодарили: 21 раз.

Re: Sas cache 2 SQLite

Сообщение Vasya » 18 мар 2009, 19:03

SergeyKa писал(а):Угу..
+ тайла нет
+ время тайла

это будет после того, как доделаю многопоточность
Да и как заполнять "присутствие тайла", если я не тяну его с нета ?
могу только поле сделать для этого.

SergeyKa писал(а):Spatial Index

Что именно ? я не понял.
Аватара пользователя
Vasya
Советчик
 
Сообщения: 266
ICQ: 137791
Зарегистрирован: 14 июл 2008, 13:06
Откуда: Одесса
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.

Re: Sas cache 2 SQLite

Сообщение SergeyKa » 19 мар 2009, 11:30

И еще вопрос: какая цель создания базы? те ну хорошо положили всю инфу в базу а для чего?

Spatial Index
http://en.wikipedia.org/wiki/Spatial_index
SergeyKa
Постигающий Дао
 
Сообщения: 108
ICQ: 7417559
Зарегистрирован: 04 мар 2009, 01:03
Откуда: Москва
Благодарил (а): 110 раз.
Поблагодарили: 21 раз.

Re: Sas cache 2 SQLite

Сообщение Vasya » 19 мар 2009, 14:41

Цель - дождатся момента перехода кеша на sql и быстрого переброса "трудящихся" на новую версию.

Эх мечты,мечты.....
Аватара пользователя
Vasya
Советчик
 
Сообщения: 266
ICQ: 137791
Зарегистрирован: 14 июл 2008, 13:06
Откуда: Одесса
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.

Re: Sas cache 2 SQLite

Сообщение webdev2 » 20 мар 2009, 15:45

Держать карты в sqlite - это для рукастых не проблема.
Скинуть все карты в базу, поставить apache c php и поддержкой sqlitе. Скриптик для отдачи карт наваять.
Там с десяток строк будет. И все, настройки САС только поменять.
Как пример, можно взять карты Генштаба. Только сайт заменить на localhost.

Но это все временное решение. Лучше конечно прямая поддержка Сас-Планетой sqlite.
Не каждый себе апач поставит, php настроит, поддержку sqlite сделает, по умолчанию ее нету в php.


Канеш, дот нет поставить проще, но какая-ж это тормозяяяяяяяятина (могу говорить так, поскольку года 2 делал на нем коммерческий проект)
webdev2
Новичок
 
Сообщения: 32
Зарегистрирован: 20 мар 2009, 15:36
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Sas cache 2 SQLite

Сообщение Parasite » 23 мар 2009, 08:05

Vasya писал(а):Цель - дождатся момента перехода кеша на sql и быстрого переброса "трудящихся" на новую версию

Главное - не делать это безусловным и единственным вариантом (по аналогии с SatMap, от юзания которой я отказался после недели проб, граблей и матов - когда единственный глюк в базе ложил ее ВСЮ и намертво, со всем уже наработанным кэшем унутре). Текущий кэш САСа хоть и несовершенен в плане хранения - зато весьма "бронебоен" в плане отказоустойчивости, и потеря N тайлов абсолютно никак не сказывается на работоспособности остальных. Так что отказываться от текущего варианта тоже не резон.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: Sas cache 2 SQLite

Сообщение webdev2 » 08 май 2009, 14:47

Наконец дошли руки сделать кэш на Sqlite.

Задумал сделать доступными себе в офлайне карты москвы, области и некоторых других областей. Хотелось бы все это хозяйство сделать мобильным - рабочий комп, домашний комп, дорожный ноут. Чтобы не тысячами файлов-тайлов синхронизировать, и не архивами, которые надо распаковывать.

Вот только-только сделал, сижу радуюсь.
В общем на каждую область - один файл, одна база Sqlite. В базе несколько таблиц по количеству карт.
Вот таких:
CREATE TABLE map (
id varchar(30), kx int, ky int, kz int, map blob,
PRIMARY KEY (id) )

Ну и Москва от 17 левела и выше через один - то есть 17,15,13,11,9 (лично мне достаточно через один) в двух картах - спутник и карта с улицами, домами заняла около 300Мб. В одном файле. Лепота. :roll:

Данные из базы забираю при помощи локального apache и php.

В настройках карты url примерно такой
http://localhost/map.php?base=map_msk&tbl=sat
или если png
http://localhost/map.php?base=map_msk&tbl=map&mode=png

А скрипт вывода тайла прост до неприличия.
Код: Выделить всё
<?php
// Коннект
$base="data/".$base.".dat";
$db = new PDO("sqlite:".$base);

// Достаем тайл
foreach (@$db->query("select map from $tbl where id='".$z."_".$x."_".$y."'") as $r) $row=$r;

// Если не нашли, отдаем ошибку 404
if (!$row) { header("HTTP/1.0 404 Not Found"); die(); }

// Определяем, jpg или png
$header="Content-type: image/jpeg";
if ($mode=="png") $header="Content-type: image/png";

// Отдаем тайл
header($header);
echo $row["map"];
?>
webdev2
Новичок
 
Сообщения: 32
Зарегистрирован: 20 мар 2009, 15:36
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.


Вернуться в Другие программы

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

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