Страница 1 из 1
					
				Стоит ли хранить растры?
				Добавлено: 15 апр 2015, 20:02
				 tsatsara
				Здравствуйте! Размышляю, стоит ли хранить растры в той же базе, где лежат наши вектора. 
Было бы очень удобно, с одной стороны, с другой стороны, не совсем понятно, как именно их хранить. 
сейчас просто для теста загрузила etopo, он довольно медленно отображается в связке qgis+postgis,
без всяких настроек и без создания пирамид. К тому же стилистику не хранит. 
итак, вопрос следующий: стоит ли хранить и если стоит, то как правильно?
Где почитать на эту тему?
сейчас весь растр в виде одной строки таблицы. Меня это немного испугало.
			 
			
					
				Re: Стоит ли хранить растры?
				Добавлено: 15 апр 2015, 20:38
				 SergeyRyzhkov
				У нас в проекте (ах) если пирамида (и/или тайлы), то однозначно в базе. Иначе на диске
			 
			
					
				Re: Стоит ли хранить растры?
				Добавлено: 15 апр 2015, 20:51
				 tsatsara
				SergeyRyzhkov писал(а):У нас в проекте (ах) если пирамида (и/или тайлы), то однозначно в базе. Иначе на диске
Спасибо!
а как правильно в базе?
сейчас у растр тестовый - етопо - просто лежит в одной ячейке таблицы, это мне не нравится.
Даже большие полигоны вроде осм границ областей медленно обрабатываются, что говорить о растре.
как-то пирамиды построить, поделить его? или это нормально, что он так лежит? 
и если у нас будет покрытие в высоком разрешении на целую территорию?
может быть, правильнее что-то вроде базы данных изображений - они лежат на сервере, а в базе хранятся только ссылки на них, может, метаданные?
 
			
					
				Re: Стоит ли хранить растры?
				Добавлено: 15 апр 2015, 21:00
				 ericsson
				Взять и засунуть растр в поле таблицы - дело совершенно лишенное смысла и никак не совершенствующее производительность. Единственное исключение - когда это делается ради разграничения прав доступа к данным, потому что средствами БД это сделать на уровне отдельного приложения проще, чем городить разрешения в файловой системе, которые для другого приложения могут оказаться строго противоположными.
Хранение растров в базе имеет "физический" смысл тогда, когда данные разложены на масштабные слои (пирамида) и/или нарезаны на тайлы. В этом случае, правильно организованное хранение в базе дает выигрыш при выборке нужных фрагментов (организации произвольного доступа, то есть), т.к. часть работы можно переложить на саму БД, а не выполнять ее всю внутри приложения с тем, чтобы потом только дернуть файловую систему.
			 
			
					
				Re: Стоит ли хранить растры?
				Добавлено: 15 апр 2015, 21:17
				 tsatsara
				Спасибо, буду делить понемногу тогда.
На пирамиды и тайлы
			 
			
					
				Re: Стоит ли хранить растры?
				Добавлено: 15 апр 2015, 21:51
				 SergeyRyzhkov
				Это тоже зло. Так что все зависит от задач! Не стоит из СУБД делать панацею. Она тоже живёт на диске 
 [ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ] 
			
					
				Re: Стоит ли хранить растры?
				Добавлено: 16 апр 2015, 11:23
				 SergeyRyzhkov
				tsatsara писал(а):Спасибо, буду делить понемногу тогда.
На пирамиды и тайлы
Посмотрите в сторону каталога растров
http://www.postgis.org/documentation/ma ... _Output_CS
Если решите делать на файловой системе, то не просто ссылки желательно хранить, а использовать pg_largeobject
 
			
					
				Re: Стоит ли хранить растры?
				Добавлено: 27 апр 2015, 16:14
				 vital_zerg
				Я бы посоветовал Вам поэксперементировать с функциями  lo_import/lo_export. Они оптимизированы под хранение больших файлов и привязки их к БД
Например 
Код: Выделить всё
CREATE TABLE image (
    name            text,
    raster          oid
);
INSERT INTO image (name, raster)
    VALUES ('beautiful image', lo_import('/etc/motd'));
SELECT lo_export(image.raster, '/tmp/motd') from image
    WHERE name = 'beautiful image';