SASGIS

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

Использование в Sas.Планета кеша в формате Berkeley

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение svp » 12 янв 2009, 22:46

zed писал(а):Вот скрипт, которым я загонял данные в базу:

zed писал(а):Пустую базу прикрепил.

Да я вообще-то просил тебя выгрузить в скрипт метаданные базы. Хотя сойдёт и так.
Пасиб.
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение zed » 12 янв 2009, 22:56

svp писал(а):Да я вообще-то просил тебя выгрузить в скрипт метаданные базы

А, во оно как :)
Тогда, видимо это?
Код: Выделить всё
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Янв 12 2009 г., 20:54
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- БД: `TailBase`
--

-- --------------------------------------------------------

--
-- Структура таблицы `main`
--

CREATE TABLE `main` (
  `Ver` int(11) NOT NULL,
  `X` int(11) NOT NULL,
  `Y` int(11) NOT NULL,
  `Z` int(11) NOT NULL,
  `MapT` int(11) NOT NULL,
  `Data` mediumblob,
  KEY `X` (`X`),
  KEY `Y` (`Y`),
  KEY `Z` (`Z`),
  KEY `Ver` (`Ver`),
  KEY `MapT` (`MapT`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Дамп данных таблицы `main`
--
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение Vasya » 13 янв 2009, 00:55

zed писал(а):Запустить что ли 20 страничек в браузере и поставить на автообновление?


да можно и банально
Код: Выделить всё
<table>
<tr>
<td><img src="SELECT такая то картинка FROM от_сюда WHERE координата_Х="Хз" AND  координата_Y="Ху""></td>
<td><img src="SELECT такая то картинка FROM от_сюда WHERE координата_Х="Хз+1" AND  координата_Y="Ху""></td>
<td><img src="SELECT такая то картинка FROM от_сюда WHERE координата_Х="Хз+2" AND  координата_Y="Ху""></td>
<td><img src="SELECT такая то картинка FROM от_сюда WHERE координата_Х="Хз+3" AND  координата_Y="Ху""></td>
<td><img src="SELECT такая то картинка FROM от_сюда WHERE координата_Х="Хз+4" AND  координата_Y="Ху""></td>
</tr>
и в цикле менять "координата_Y"

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

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение zed » 14 янв 2009, 01:46

А как правильно время подсчитать? Вот этот код даёт время ~0 хотя визуально - несколько сек. грузится
Код: Выделить всё
<body>
<?php $start = microtime(1);
      $t_start = date("m.d.Y, H:i:s");
      echo "Start time: ".$t_start."<br>";?>

<table width="1280" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td height="256"><img src="http://localhost/get.php?x=10&y=0&z=10" alt="img" width="256" height="256" /></td>
    <td height="256"><img src="http://localhost/get.php?x=1&y=0&z=10" alt="img" width="256" height="256" /></td>
    <td height="256"><img src="http://localhost/get.php?x=2&y=0&z=10" alt="img" width="256" height="256" /></td>
    <td height="256"><img src="http://localhost/get.php?x=3&y=0&z=10" alt="img" width="256" height="256" /></td>
    <td height="256"><img src="http://localhost/get.php?x=4&y=0&z=10" alt="img" width="256" height="256" /></td>
    ...
  </tr>
</table>
<br>
<?php $end = microtime(1);
      $time=$end-$start;
      $t_end = date("m.d.Y, H:i:s");
      echo "Total time: ".$time."<br>";
      echo "Start time: ".$t_start."<br>";
      echo "End time: ".$t_end."<br>";?>
</body>
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение vdemidov » 14 янв 2009, 01:58

Ты получаешь время генерации html, а оно действительно почти ноль. Замерять нужно в браузере джаваскриптом.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение zed » 14 янв 2009, 02:01

vdemidov писал(а):Замерять нужно в браузере джаваскриптом.

Мда... я без понятие как это сделать.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение vdemidov » 14 янв 2009, 02:04

Ну как вариант сгенерить список урлов и скормить менеджеру закачек. Посмотреть сколько будет скачиваться пару тысяч картинок :)
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение zed » 14 янв 2009, 02:10

Разобрался с явой. Результат одновременной загрузки 20 тайлов для 5 гиговой базы: от 0.4 до 1.5 сек. (в зависимости от размеров тайлов). Т.е. это время загрузки html страницы с 20-ю тайлами. Картинки грузятся в 4-5 потока. Если те же файлы загружать с диска - то тут стабильно ~ 0.4 сек.
Заполняю базу дальше...
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение rokki » 14 янв 2009, 16:08

zed писал(а):Поставил эксперемент с MySQL:
- создал базу с индексами по x, y, zoom, MapType, TileVer (индексы отдельные, без primary ключа);
- заполнил базу тайлом 21,5 kB. Тайл сохранял в поле MediumBlob, а x, y, zoom, MapType, TileVer для каждой записи генерировал случайным образом (для каждой переменной было созадано ограничение на max значение: для zoom, MapType, TileVer - 0..24; для x, y - 0..16 000 000);
Получил базу в ~155 тыс. записей, размером 3.18ГБ, с индексом 9МБ. Скорость заполнения базы составила 300-350 тайлов/сек (тайл загружался в память перед началом записи).
Вот. А потом выполнил запрос на тайл по x, y, zoom, MapType, TileVer - время запроса составило: 0.0018 сек. (если тайл небыл найден в базе) или 0.0033 сек. (если тайл находился в базе). А полная операция получения тайла (соединение с базой, поиск и передача данных в браузер) длилась от 0.017 до 0.047 сек.
Всё это делал через php и MySQL из пакета Denver. (Если всё делать из проги, а не из скриптов/браузеров и проч. наверное должно быть быстрее?)
Результат, по-моему, не плохой. Будет время, попробую наполнить базу гигов до 40-60, посмотреть что выйдет :)
Надо разобраться с Беркли + php, глянуть какое там будет быстродействие. Если у кого есть скрипты, поделИтесь?

P.S. Эх, как-то сразу не сообразил сделать выборку тайла скриптом из существующего кэша SAS, а то эксперемент и сравнить-то не с чем...



Зачем хранить в базе саму картинку? ))))))))))))
В базе надо хранить индекс! Индекс картинок, которые есть на диске в кеше....
И все операции по постороению карт для отображения других уровней производить из индекса а не с диска... а также операции по пополнению кеша, обмена им и тд...
Вам чем мешает кеш в файлах? Что его таскать нельзя на харде чтоли? Вы часто таскаете кеш? )))) Не нужен кеш в одном файле! Нужна возможность быстрого просмотра этого кеша из индекса. А весь кеш можно свалить на фтп и пользоваться им вместе )) Надо область - слил с фтп локально и все дела... Хошь одним файлом - сделай контейнер трукриптом, подключи логический диск и будет тебе щастье ))
Проблема реальная - это чтение тайлов с диска для построения карты тайлов высокого уровня. Вот это тормоз и гимор )
rokki
Соображающий
 
Сообщения: 68
Зарегистрирован: 28 ноя 2008, 21:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Использование в Sas.Планета кеша в формате Berkely

Сообщение svp » 14 янв 2009, 16:37

rokki писал(а):Зачем хранить в базе саму картинку? ))))))))))))
rokki писал(а):Вам чем мешает кеш в файлах? Что его таскать нельзя на харде чтоли? Вы часто таскаете кеш? ))))

Некоторые часто таскают кеш. Некоторым непреемлемо таскать его на винте. Иногда нужна мобильность. Иногда нужно перекинуть кеш на несколько ноутов не находящихся в сети.
На многих ноутах винты небольшие и все 250 гигов не удержат. Там надо иметь только конкретные регионы.
Копировать куски кеша даже по индексу из файловой системы очень долго. Как единый файл копирование будет происходить на порядки быстрее. Плюс облегчается обмен фрагментами кеша.
На харде и таскаю, но заливать на слабенькие ноуты куски кеша через файловую систему -- это дело часов а то и суток.
Трукрипт неудобен, потому как он медленнее из за неизбежного шифрования, медленее из-за файловой системы, не позволяет динамически менять размер хранилища.

rokki писал(а):Не нужен кеш в одном файле!

Не решайте за других. Всё нужно. Чтобы и волки сыты и овцы не жаловались.

rokki писал(а):И все операции по постороению карт для отображения других уровней производить из индекса а не с диска... а также операции по пополнению кеша, обмена им и тд...

А с этим полностью согласен. Индексация это совершенно отдельная задача. И решение её необходимо. Вопрос какими средствами. Я, в общем-то, не имею ничего против mysql, однако если уже по-любому юзать беркли, зачем использовать два движка, когда можно один?

rokki писал(а):Проблема реальная - это чтение тайлов с диска для построения карты тайлов высокого уровня. Вот это тормоз и гимор )

Никто не спорит. что это проблема. И её будем решать.
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

Пред.След.

Вернуться в SAS.Планета

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

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