SASGIS

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

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

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

Модератор: Tolik

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

Сообщение svp » 17 дек 2008, 18:16

Прошу прощения за создавшуюся неразбериху. Я просто отделил от этой темы ветку
HTTP-сервер-обменник для тайлового кеша
Теперь здесь обсуждаем беркли, а там сервер.
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

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

Сообщение rokki » 21 дек 2008, 16:18

Сделайте привязку к mysql (могу дать вам компоненты для Дельфи) и храните в базе индекс кеша, а сам кеш на фтп который будет на том же хосте. А хост - мордой в интернет.

В Mysql кроме индекса кеша можно хранить и иметь ОБЩИЙ ДОСТУП К:

1. Настройкам на карты
2. Точкам
3. Трекам
4. Текущему положению GPS координат пользователя по его желанию при включенном приемнике. (Реализация на подобие session таблицы )
5. ...
6. ...
7. ...

Кроме того, хостер этой базы и фтп может прикрутить эту базу к сайту, на котором можно отражать сию информацию тоже)))

[!} MODERATED:OFFTOPIC
rokki
Соображающий
 
Сообщения: 68
Зарегистрирован: 28 ноя 2008, 21:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение vdemidov » 21 дек 2008, 19:28

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

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

Сообщение rokki » 21 дек 2008, 20:18

vdemidov писал(а):Прошу прощения,rokki но обратите внимания, что единственный автор программы feya, а остальные к ней имеют весьма опосредованное отношение. То что вы предлагаете нужно реализовывать самому автору. Причем это довольно сложный кусок работы. А то что обсуждали остальные можно прикрутить с минимальным вмешательством в саму программу.


Уважаемый vdemidov, насколько я понял этот форум предназначен для обсуждения именно функционала программы а не стороннего софта который можно к ней прикрутить ...
rokki
Соображающий
 
Сообщения: 68
Зарегистрирован: 28 ноя 2008, 21:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Parasite » 21 дек 2008, 20:23

rokki писал(а):
vdemidov писал(а):Прошу прощения,rokki но обратите внимания, что единственный автор программы feya, а остальные к ней имеют весьма опосредованное отношение. То что вы предлагаете нужно реализовывать самому автору. Причем это довольно сложный кусок работы. А то что обсуждали остальные можно прикрутить с минимальным вмешательством в саму программу.

Уважаемый vdemidov, насколько я понял этот форум предназначен для обсуждения именно функционала программы а не стороннего софта который можно к ней прикрутить ...

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

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

Сообщение rokki » 21 дек 2008, 20:48

Беркли можно, но оно нужно только для локального кеша.... да и то вряд ли.. Объединение беркли баз займет столько же времени как просто копирование локального кеша или не существенно быстрее....
Смысл ? Делать обмен кешем на беркли - вообще бред. Документации нет, интерфейса нет, возможностей где то еще использовать нет, ничего нет... Ну если только для того чтобы кодеру жизнь медом не казалась... Смысл кодить поддержку формату который узко используется?

[!] MODERATED:OFFTOPIC
rokki
Соображающий
 
Сообщения: 68
Зарегистрирован: 28 ноя 2008, 21:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение zed » 11 янв 2009, 23:23

Поставил эксперемент с 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, а то эксперемент и сравнить-то не с чем...
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 525 раз.

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

Сообщение Vasya » 12 янв 2009, 12:41

полная операция получения тайла (соединение с базой, поиск и передача данных в браузер) длилась от 0.017 до 0.047 сек.

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

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

Сообщение svp » 12 янв 2009, 13:38

zed писал(а):Надо разобраться с Беркли + php, глянуть какое там будет быстродействие.

Беркли будет быстрее. Её используют даже для реализации самих методов хранения в базе MySQL. Насколько я понял из описания беркли.

Выгрузи в скрипт базу без данных, пожалуйста. Я затяну туда свои 25 гигов кеша и попробую покрутить их дельфей (без скриптов) на реальных выборках.
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

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

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

Vasya писал(а):
полная операция получения тайла (соединение с базой, поиск и передача данных в браузер) длилась от 0.017 до 0.047 сек.

На колько я понимаю, всё это для одного тайла. А одновремено на экране находится более 10 тайлов.
Можно ли узнать время получения, допустим 20-ти тайлов ?

Ну, поскольку для получения 20 тайлов будет сформировано 20 запросов (причём последовательно, т.к. в SAS нет многопоточности)- то время соответственно раз в 20 возрастёт. При многопоточности запросов, возможно, будет немного (или намного?) быстрее, но как это протестировать чисто скриптами я не знаю. Запустить что ли 20 страничек в браузере и поставить на автообновление?

svp писал(а):Выгрузи в скрипт базу без данных, пожалуйста. Я затяну туда свои 25 гигов кеша и попробую покрутить их дельфей (без скриптов) на реальных выборках.

Вот скрипт, которым я загонял данные в базу:
Код: Выделить всё
<?php

/* Переменные для соединения с базой данных */
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "TailBase";

/* Таблица MySQL, в которой хранятся данные */
$userstable = "main";

/* создать соединение */
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");

/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());   

/* чтение тайла в память */
$file_name = "c:/test/kh.google.com/flatfile/Image/19/trtqrqs.jpg";
$data = file_get_contents($file_name);
$data = addslashes($data);

echo "Добавляем 5 000 записей в базу данных.<br>";
 
$time_start = microtime(1);

for ($i=0; $i< 5000; $i++) {

$x=mt_rand(0,16000000);
$y=mt_rand(0,16000000);
$ver=mt_rand(0,255);
$z=mt_rand(0,24);
$mt=mt_rand(0,255);

/* составить запрос для вставки информации о клиенте в таблицу */
$query = "INSERT INTO $userstable (Ver,X,Y,Z,MapT,Data) VALUES ($ver,$x,$y,$z,$mt,'$data')";

/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());         

}

$time_end = microtime(1);
$time = $time_end - $time_start;

echo "Время операции: $time секунд\n";
echo "<br>";

/* Закрыть соединение */
mysql_close();
?>

А этот, для получения (в браузере тайл отображается как текст):
Код: Выделить всё
<?php
$time_start = microtime(1);

/* Переменные для соединения с базой данных */
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "TailBase";

/* Таблица MySQL, в которой хранятся данные */
$userstable = "main";

/* создать соединение */
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");

/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());   


$LookX =0;
$LookY =0;
$LookZ =1;
$LookMapT =1;

echo "Поиск по базе данных: X=$LookX and Y=$LookY and Z=$LookZ and MapT=$LookMapT<BR>"; 

$query = "SELECT * FROM $userstable WHERE X=$LookX and Y=$LookY and Z=$LookZ and MapT=$LookMapT";
/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());

/* Как много нашлось таких */
$number = mysql_num_rows($res);

/* Напечатать всех в красивом виде*/
if ($number == 0) {
  echo "Нет данных в базе<BR>";
} else {
  echo "В базе: $number записи<BR>";

  /* Получать по одной строке из таблицы в массив $row, пока строки не кончатся */ 
  while ($row=mysql_fetch_array($res)) {
    echo "X=".$row[X]."<BR>";
    echo "Y= ".$row[Y]."<BR>";
    echo "Z= ".$row[Y]."<BR>";
    echo "MapT= ".$row[MapT]."<BR>";
    echo "Data= ".$row[Data]."<BR>";   
    echo "<BR><BR>";
  }
  echo "</CENTER>";
}

$time_end = microtime(1);
$time = $time_end - $time_start;

echo "Время запроса: $time секунд\n";

/* Закрыть соединение */
mysql_close();
?>


Пустую базу прикрепил.
Данные для соединения: Имя - TailBase; Таблица - main; Юзер - root; Пароль отсутствует. Все переменные имеют тип int, кроме Data - mediumblob (размер поля до 16МБ).
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 525 раз.

Пред.След.

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

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

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

cron