SASGIS

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

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

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

Модератор: Tolik

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

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

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

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

Кусок кеша который вы будете экспортировать для переноски будет занимать ровно столько же времени как экспорт с диска из существующей системы кеширования. База беркли тоже не в воздухе висит а на диске и читается с него с той же скоростью. Использование беркли я вижу исключительно как экспорт фрагмента в один файл для удобства переноски региона карты. Рразницы из чего этот фрагмент будет вычленяться - из файловой системы или из глобальной базы беркли нет практически никакой. С таким же успехом можно экспорт в файл сделать zip-ом.

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

Поставьте PrivateDisk. Там есть динамический контейнер. Работает быстрее. Визуально разницы вы не заметите.

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

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

Это не я решаю. А здравый смысл.

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

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

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

Никто не спорит. что это проблема. И её будем решать.


Это задача на мой взгляд первостепенная ибо решает проблемы с производительностью приложения. Разница будет в десятки если не сотни раз.
Если с переноской кеша можно что то придумать, используя сторонний софт и решить задачу хоть как то, то ТОРМОЗА программы для отображения карт вы никак не обойдете без совершенствования подхода в самой программе. Это условие и ставит сию задачу первостепенной )))
rokki
Соображающий
 
Сообщения: 68
Зарегистрирован: 28 ноя 2008, 21:57
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение svp » 14 янв 2009, 17:24

rokki писал(а):Рразницы из чего этот фрагмент будет вычленяться - из файловой системы или из глобальной базы беркли нет практически никакой. С таким же успехом можно экспорт в файл сделать zip-ом.

Вы ошибаетесь. Есть и большая. Файловая система на порядки медленнее беркли. а зип ещё более медленный.
Кстати, файловая система тоже может полететь.

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

Дело не в скорости доступа к диску, а в скорости доступа к конкретному файлу из кучи лежащих в файловой системе. Если провести аналогию с БД, то у файловой системы для доступа к тайлам слишком избыточен первичный ключ -- то есть путь к файлу кеша. Этот ключ имеет динамическую длину и содержит кучу ненужных и мешающих индексации данных (лишних символов). Сама по себе лперация чтения/записи файла в файловую систему гораздо медленнее аналогичной операции для базы беркли.

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

Есть и большая. Подтверждение тому скорость копирования на медленной машине одного большого файла по сравнению с такой же по объёму кучей маленьких.
В ФС большие накладные расходы на работу со структурой файловой системы.

rokki писал(а):Поставьте PrivateDisk. Там есть динамический контейнер. Работает быстрее. Визуально разницы вы не заметите.

Спасибо, а это бесплатная программа?

rokki писал(а):Это не я решаю. А здравый смысл.

Хватит выдавать свои измышления за здравый смысл=) Найдите сперва единомышленников. не один же Вы "здравомыслящий" человек на свете?=)

rokki писал(а):Это задача на мой взгляд первостепенная

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

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

Сообщение rokki » 14 янв 2009, 17:51

Вы ошибаетесь. Есть и большая. Файловая система на порядки медленнее беркли. а зип ещё более медленный.
Кстати, файловая система тоже может полететь.


Я не ошибаюсь. Файл базы беркли лежит в ФАЙЛОВОЙ СИСТЕМЕ и также читается с диска. О каких порядках вы мечтаете?)))) Вы пробовали упакованный кеш одного файла ГЕ читать из марбилдера? Вот попробуйте )))) Та же хрень. Те же сутки вы будете сидеть и смотреть как оно все индексирует, потом выбирает, потом пишет...


Дело не в скорости доступа к диску, а в скорости доступа к конкретному файлу из кучи лежащих в файловой системе. Если провести аналогию с БД, то у файловой системы для доступа к тайлам слишком избыточен первичный ключ -- то есть путь к файлу кеша. Этот ключ имеет динамическую длину и содержит кучу ненужных и мешающих индексации данных (лишних символов). Сама по себе лперация чтения/записи файла в файловую систему гораздо медленнее аналогичной операции для базы беркли.


Для чтения тайла с диска вам нужен только путь к нему и обход каталога. База - это та же файловая система упакованная в файл где есть индекс - та же file system table/ Так вот физическое хранение тайла в базе - это масло маслянное. Я же предлагал разделить понятия ИНДЕКСА кеша и самого кеша ))) Часть операций в Планете нужно перенести на операции с индексом без чтения самих тайлов. Это увеличит производительность программы.
А носить кеш... тут уже сам юзер должен шевелить мозгами.

Есть и большая. Подтверждение тому скорость копирования на медленной машине одного большого файла по сравнению с такой же по объёму кучей маленьких.
В ФС большие накладные расходы на работу со структурой файловой системы.


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

rokki писал(а):Поставьте PrivateDisk. Там есть динамический контейнер. Работает быстрее. Визуально разницы вы не заметите.

Спасибо, а это бесплатная программа?


Бесплатная программа - это САС Планета. Если вы хотите улучшить себе жизнь в решении исключительно ваших задач, которые к Планете не имеют отношение - купите платную программу, решающую эти задачи. Это нормально. Я так и делаю )))

Хватит выдавать свои измышления за здравый смысл=) Найдите сперва единомышленников. не один же Вы "здравомыслящий" человек на свете?=)


Здравый смысл - это идти по более короткому, эффективному и известному пути, нежели плутать в темноте по закоулкам. Вы предлагаете плутать по закоулкам. Можете плутать... ваше право )) Или вы мне сейчас будете доказывать что Mysql и Беркли- это равнозначные по популярности, доле рынка, поддержке и т д программные решения для хранения информации. Не смешите.....

rokki писал(а):Это задача на мой взгляд первостепенная

Ну так ждём от Вас подвижек в сторону её решения.[/quote]

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

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

Сообщение zed » 14 янв 2009, 18:59

Итак, размер базы 39.2Гб, число записей 3 млн. 200 тыс., размер индекса 150Мб:
- время поиска конкретной записи (по определённым значениям x,y,z,ver,mapid) ~ 1.1 сек. (запись существует) и ~0.002 (записи нет);
- загрузка страницы с 20-ю тайлами от 1.5-2 сек. до 7 сек. (все тайлы есть в базе) и ~0.7 сек. (ни одного тайла в базе нет).
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 525 раз.

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

Сообщение Vasya » 14 янв 2009, 19:32

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

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

Сообщение zed » 14 янв 2009, 20:12

База MySQL. (Фиг его знает, как этот Беркли прикрутить к php)
У всех картинок зум =0; тип карты =0; версия тайла =0. Эмулировались случайные регионы по 10 000 файлов на одном уровне зума по всей базе (для каждых 10 000 тайлов начальные значения X и Y генерировались случайным образом, а затем x и y увеличивались на 1 в цикле - и получался регион 100*100 тайлов).
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 525 раз.

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

Сообщение svp » 14 янв 2009, 21:28

rokki писал(а):Я не ошибаюсь. Файл базы беркли лежит в ФАЙЛОВОЙ СИСТЕМЕ и также читается с диска.

Вы путаете понятия доступа к данным уже открытого файла на диске и доступа к файлу по имени. Во втором случае имеют место накладные временные расходы по поиску в файловой системе с неэффективным ключем. Файловая система не оптимизирована для хранения большого количество однотипных данных. А беркли предназначена именно для этого.

rokki писал(а):Для чтения тайла с диска вам нужен только путь к нему и обход каталога.

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

rokki писал(а):База - это та же файловая система упакованная в файл где есть индекс - та же file system table/ Так вот физическое хранение тайла в базе - это масло маслянное.

Вы ошибаетесь в корне. Никакой файловой системы внутри таблицы БД нет. Есть страницы, эффективная индексация и быстрый (молниеносный по сравнению с файловой системой) доступ к записи. Вы не понимаете как работает база данных.

rokki писал(а):Я же предлагал разделить понятия ИНДЕКСА кеша и самого кеша ))) Часть операций в Планете нужно перенести на операции с индексом без чтения самих тайлов. Это увеличит производительность программы.

С этим НИКТО не спорит. Здесь вы правы абсолютно.

rokki писал(а):Копирование кеша - это не задача Планеты. Я вам уже 20 раз об этом написал

Пусть мне об этом напишет feya.=) Ваше ваша точка зрения мне уже ясна.

rokki писал(а):Или вы мне сейчас будете доказывать что Mysql и Беркли- это равнозначные по популярности, доле рынка, поддержке и т д программные решения для хранения информации. Не смешите.....

По доле рынка (в разрезе кол-ва хранимой однотипной информации) беркли переплюнет MySQL. Готов поспорить. И технологии эти совершенно разные и не взаимозаменяемые. База Беркли -- встраиваемый механизм хранения таблицы, состоящей из пар ключ-значение. Технология практически не налагает ограничений на размеры ключа и значения. Одна база -- это одна таблица. Скорость доступа очень высокая, позволяет хранить огромное кол-во данных.

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

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

Сообщение svp » 14 янв 2009, 22:13

Вот документация по работе с базами беркли на c++:
BerkeleyDB-Core-Cxx-GSG.rar
Мануал по бд Беркли
(346.57 KiB) Скачиваний: 243
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

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

Сообщение svp » 14 янв 2009, 22:19

Если надо, могу положить ещё примеры на перле, яве, с++, с.
Всё берётся из стандартной поставки исходников беркли. С официального сайта оракла.
Вот ссылочка для закачки: http://download.oracle.com/berkeley-db/db-4.7.25.NC.zip -- комплект исходников с примерами (17 мегабайт).
Вложения
php_db4.rar
Примеры на PHP
(13.72 KiB) Скачиваний: 254
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.

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

Сообщение Parasite » 14 янв 2009, 23:44

zed писал(а):- загрузка страницы с 20-ю тайлами от 1.5-2 сек. до 7 сек. (все тайлы есть в базе)

Имхо долговато для 20и выборок-то.... :(
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 раз.

Пред.След.

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

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

Сейчас этот форум просматривают: tlg и гости: 83