Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Mekansal Veritabanlarında Hızlı Sorgulama

Benzer bir sunumlar


... konulu sunumlar: "Mekansal Veritabanlarında Hızlı Sorgulama"— Sunum transkripti:

1 Mekansal Veritabanlarında Hızlı Sorgulama
Arzu KÜTÜKCÜ Osman ABUL TOBB Ekonomi ve Teknoloji Üniversitesi

2 Giriş Çalışmanın Tanımı ve Amacı
Coğrafi Veriler İçin Kullanılan Teknolojiler Oracle Spatial Teknoloji Çalışmada Kullanılan Veriler ve İzlenen Metodoloji Performans Değerlendirilmesinde Kullanılan Araçlar Veritabanı Performans Testleri Sonuçlar

3 Çalışmanın Tanımı ve Amacı
Hazırlanan coğrafi veri katmanları (havza, akarsu, Agi, göl vb…) kullanılacak ara yazılımlar ile Oracle veritabanına aktarılarak, kullanıcı tarafından herhangi bir program yüklenilmesine gerek kalmadan internet tarayıcısı üzerinden çalışacak bir uygulama yazılımı hazırlanmıştır. Hazırlanan uygulama yazılımı ile, veritabanına aktarılan coğrafi veriler kullanılarak değişik coğrafi sorguların geliştirilmesine ve bu sorgular üzerinde çeşitli performans değerlendirilmesi yapılarak iyileştirme, optimizasyon çalışmalarının yapılması amaçlanmıştır.

4 Coğrafi Veriler İçin Kullanılan Teknolojiler
Spatial Veritabanı Avantajları Dezavantajları ArcSDE Lider CBS sağlayıcı tarafından oluşturulmuş (ESRI) En iyi CBS işlevselliği Fiyatları (tüm sistem için fiyatı ABD $’na kadar çıkabilmektedir.) Oracle Spatial Şirketlerin ihtiyaçları için yeterli Tam olarak aradığımız şey Önde gelen veritabanı sağlayıcısı Yeterli destek alınabilir Fiyatlar (tüm sistem için fiyatı ABD $’na kadar çıkabilmektedir.) Microsoft SQL Server 2008 Spatial Vector veriler için gelişmiş özellikler Kolay Anlaşılır Geocoding Network Data Model Topology Network

5 Coğrafi Veriler İçin Kullanılan Teknolojiler
IBM DB2 Spatial Extender Şirketlerin ihtiyaçları için yeterli Tam olarak aradığımız şey Önde gelen veritabanı sağlayıcısı Yeterli destek alınabilir ArcExplorer’la çalışır Fiyatları (free with $30,000 purchase of IBM DB2) ($20,000 < ArcSDE sistem $10,000 < Oracle sistem) ArcSDE ile karşılaştırıldığında kısıtlı CBS yetenekleri PostGIS Ücretsiz Kolaylıkla Download Edilebilir Ödenilen Kadar alınır Son derece küçük bir pazar Az bilgi sahibi kişiler Sınırlı Mali Destek Uzun ömürlü olması risk altında

6 Spatial Teknoloji Oracle Spatial, Spatial olarak da adlandırılan konumsal verilerin sorgulanması, güncellenmesi ve depolanmasına yardımcı olan SQL şema ve fonksiyonları içeren teknolojidir. Spatial teknoloji; 1. MDSYS Şeması, 2. Spatial index mekanizması, 3. Spatial analiz işlemleri için fonksiyonlar, prosedürler ve operatörler, 4. Tuning işlemleri için operatörler, 5. Topoloji veri modeli, 6. Network data model oluşturulması, 7. GeoRaster veriler üzerinde analizlerin yapılabilmesi, gibi özellikleri içerir.

7 R-tree Index Spatial Teknoloji
R-tree indexler B-tree index yapısından türetilmiş, spatial veriler için yapılan performans testlerinde büyük oranda başarılı olmuş, en yaygın kullanılan algoritmadır. Spatial veriler için K-D-B ve Quad Tree algoritmalarının pek de verimli olmadığı gözlenmiş, K-D-B Tree algoritmasının daha çok Point veriler için daha uygun olduğu görülmüştür.

8 Spatial Teknoloji R-tree Index
CREATE INDEX agi_spatial_idx ON AGI(GEOM) INDEXTYPE IS MDSYS.SPATIAL_INDEX;

9 Spatial Teknoloji R-tree Index

10 Spatial Teknoloji Q-Tree Index Quadtree Ayrıştırma ve Morton Kodlaması
Küçük ve Büyük boyutlu Tile ile Geometri Gösterimi

11 Spatial Teknoloji Q-tree Index Görünümü
CREATE INDEX HAVZALAR_Q_SIDX ON HAVZALAR_Q(GEOM) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS('geodetic=FALSE SDO_LEVEL=8');

12 Spatial index sorgu değerlendirme mekanizması

13 Spatial indeks sorgu değerlendirme mekanizması
SELECT distinct(C.objectid) FROM akarsu R, iller C WHERE R.Akarsu_ad='Çoruh N.' AND SDO_WITHIN_DISTANCE(C.geom, R.geom, 'querytype=FILTER DISTANCE=100 UNIT=KM')='TRUE' ;

14 Yaygın Saptial Operatörler
sdo_within_distance sdo_filter sdo_nn Sdo_filter mbr’ler ile(spatial index) değerlendirme yapar ve yaklaşık sonuçlar verir.

15 Kullanılan Veriler ve Özellikleri
Tablo Adı Satır Sayısı SGO_GEOMETRY veri tipi Havzalar 28 (Bir havza alt katmanları olması sebebiyle) Polygon AGI 2495 Point Akarsu (Nehir, Dere, Çay…)- Bir Akarsu yaklaşık 140 Line Segmentten oluşmaktadır. LineString İller 81 Göller 132 Baraj 1289 Nehirler 1902 Linestring Nehir_Link 118 Nehir_Node 121

16 Çalışmada kullanılan Stored Prosedürler

17 Sistemin Genel Yapısı

18 Coğrafi Veri Altyapısı Mimarisi

19 Halihazırda Kullanılan Harita WEB Servisleri
Google Earth Google Maps Virtual Earth Yahoo Maps

20 Google Maps API Google Maps JavaScript API, web sayfalarına Google Maps’in gömülmesini sağlar. API kullanmak için, ilk olarak “ signup.html” adresinden kayıt olmak suretiyle bir API anahtarı edinmek gerekir. Bir API anahtarı alındığında harita uygulaması geliştirebilinir. Google maps üzerinden haritalara açık bir şekilde ulaşmak mümkün olsa da, Api açık kaynak kodlu değildir.

21 Openlayers API OpenLayers API herhangi bir web sayfasına kolaylıkla dinamik bir harita koyma imkanı sağlar. OpenLayers, dünya çapında birçok organizasyon tarafından geliştirilmiş ve desteklenmiştir. Web tarayıcılarında harita verisi görüntülemek için kullanılan tamamen açık kaynak kodlu bir JavaScript kütüphanesidir. OpenLayers coğrafi veri erişimi için OpenGIS Consortium standartlarından Web Mapping Service (WMS) and Web Feature Service (WFS) protokollerini destekler. Openlayers Api’si kullanarak Google maps haritalarını görüntülemek mümkün olmaktadır.

22 Çalışma Kapsamında Kullanılan Sorgu Çeşitleri
Akarsulara Yakın AGI’lerin Bulunması Havzalar, Havza İçinde Kalan Agi’ler ve Nehirlerin Bulunması İller içinde kalan Agi’ler ve Havzalar İçinde Kalan İller Göl içinde kalan Agi’ler ve Havzalar İçinde Kalan Göller Barajlar içinde kalan Agi’ler ve Havzalar İçinde Kalan Barajlar

23 Havza sınırları içinde kalan AGİ’lerin bulunması
için tasarlanmış web sayfasından görünüm

24 Havza sınırları içinde kalan Baraj’ların bulunması için
tasarlanmış web sayfası görünümü

25 Shp2Sdo.exe Çalıştırılması
shp2sdo.exe agi agi -g geom -d -x (-180,180) -y (-90,90) -t 0.5 -vspatial cmd>sqlldr control=agi.ctl CREATE INDEX agi_sidx ON agi(geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('SDO_LEVEL=8'); INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES ('AGI', 'GEOM', MDSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT('X', , , ), MDSYS.SDO_DIM_ELEMENT('Y', , , ) ), );

26 Veritabanı Performans Değerlendirme

27 SQL Trace and TKPROF SQL trace çalıştırılan SQL’lerin izlenmesini sağlamaktadır. Üretilen trace file’larının daha okunaklı olması içinse, TKPROF hizmetinden yararlanarak trace file’lar anlaşılır bir formatta alınabilmektedir. call count cpu elapsed query current rows Parse Execute Fetch total

28 Belirli Bir mesafe içinde kalan geometrilerin tesbiti
Sorg No. Test edilen SQL cümlesi Açıklama 1. SELECT a.objectid FROM river_node rn,agi_b a WHERE rn.node_id=173 AND SDO_WITHIN_DISTANCE(a.geom, rn.geometry, ‘querytype=FILTER DISTANCE=30 UNIT=KM' )='TRUE' ORDER BY a.OBJECTID; Fırat nehri node’ları üzerinde seçilen bir node’a 30km uzaklıkta bulunan Agi’lerin bulunması 2. SELECT a.objectid FROM river_node rn,agi_b a WHERE rn.node_id=173 AND SDO_WITHIN_DISTANCE (a.geom, rn.geometry, 'DISTANCE=30 UNIT=KM' )='TRUE' ORDER BY a.OBJECTID; 3. SELECT distinct(C.objectid) FROM akarsu R, iller C WHERE R.Akarsu_ad='Çoruh N.' AND SDO_WITHIN_DISTANCE(C.geom, R.geom, 'querytype=FILTER DISTANCE=100 UNIT=KM')='TRUE' ; Çoruh Nehri’ne 100 km. uzaklıkta bulunan illerin tesbiti 4. SELECT distinct(C.objectid) FROM nehirler R ,iller C WHERE R.Akarsu_ad='Çoruh N.' AND SDO_WITHIN_DISTANCE(C.geom, R.geom, 'DISTANCE=100 UNIT=KM')='TRUE' ; Burada Oracle tarafından kullanılan birincil ve ikincil filtreleme kullanılması durumunda performansın nasıl etkilendiği gösterilmeye çalışılmıştır. 1. ve 3. Sorgularda querytype=FILTER parametresi bu sorgu için birincil filtre kullanıldığını göstermektedir. Bu durumda eğer sonuçlar arasında ciddi farklar yoksa, birincil filtre kullanımı tercih edilmelidir.

29 Belirli Bir mesafe içinde kalan geometrilerin tesbiti

30 Akarsulara 200 metre mesafede bulunan Agi’lerin tesbiti
Sorgu No Test edilen SQL cümlesi Açıklama 5. SELECT /*+ ORDERED */ a.objectid FROM akarsu rn, agi a WHERE SDO_WITHIN_DISTANCE (a.geom, rn.geom, 'DISTANCE=200 UNIT=METER ' )='TRUE'; Akarsulara 200 metre mesafede bulunan Agi’lerin tesbiti ordered hint’i kullanımı 6. SELECT a.objectid FROM akarsu rn, agi a WHERE SDO_WITHIN_DISTANCE (a.geom, rn.geom, 'DISTANCE=200 UNIT=METER ' )='TRUE'; Akarsulara 200 metre mesafede bulunan Agi’lerin tesbiti Burada Oracle tarafından sunulan Ordered hint’i test edilmiştir. Optimizer tabloların çok büyük olmadığı durumlarda nested-loop join’i tercih etmektedir. Oracle, nested-loop joinde bir tabloyu outer tablo(driving table) olarak almakta ve driving tablonun her satırı için inner tablonun satırlarını fetch etmektedir. Burada inner tablonun from cümleciğinde en sonda gelen tablo olması gerekmektedir. Eğer SQL cümleciğinde birden fazla tablo kullanılmışsa optimizer spatial indeksi kullanmayabilir ve bu durumda “ORDERED” hint'i yardımı ile Optimizer'ı bilgilendirerek, tanımlı indekslerin her zaman kullanımı tetiklemek gerekir. Bu SQL cümlesi de 5 numaralı sorguda görüldüğü gibi yazılabilmektedir. Grafikte de görüldüğü gibi ORDERED hint’i kullanımı performans artışı sağlamaktadır.

31 Tablolardaki Tüm Geometriler İçin Belirli Bir mesafe içinde kalan geometrilerin tesbiti
Sorgu No Test edilen SQL cümlesi Açıklama 7. SELECT a.objectid FROM akarsular rn, agi a WHERE SDO_WITHIN_DISTANCE(a.geom,rn.geom, 'DISTANCE=200 UNIT=METER ' )='TRUE'; Akarsulara 200 metre mesafede bulunan Agi’lerin tesbiti 8. SELECT a.objectid FROM akarsular aks, agi a , TABLE(SDO_JOIN('agi', ‘geom','akarsular','geom','DISTANCE=200 UNIT=METER')) jn WHERE jn.rowid1 = a.rowid AND jn.rowid2 =aks. rowid; 9. SELECT a.objectid FROM akarsular aks, agi a ,TABLE ( SDO_JOIN ('akarsular','geom','agi','geom', 'DISTANCE=200 UNIT=METER')) jn WHERE aks.AKARSU_AD='Coruh N.' jn.rowid1 = a.rowid jn.rowid2=aks.rowid ; Havzalara 200 metre mesafede bulunan Agi’lerin tesbiti 10. SELECT a.objectid FROM akarsular rn, agi a WHERE rn.AKARSU_AD='Coruh N.' and SDO_WITHIN_DISTANCE(a.geom,rn.geom, 'DISTANCE=200 UNIT=METER ' )='TRUE'; Çoruh Nehrine 200 metre mesafede bulunan Agi’lerin tesbiti “Her bir akarsuya 200 metre uzaklıkta bulunan AGİ noktalarının tespit edilmesi” amacıyla dört adet SQL’den 7 ve 8 numaralı sorgular, eğer where cümleciğinde operatörden başka bir kısıt yoksa SDO_JOIN operatörünün kullanımının daha uygun olduğunu göstermek amacıyla çalıştırılmıştır. Sonuçlar da gösteriyor ki; full table scan gerektiren durumlarda SDO_JOIN kullanımı SDO_WITHIN_DISTANCE operatörüne göre daha iyi performans göstermektedir. 9 ve 10 numaralı sorgular çalıştırılarak where cümleciğinde operatör haricinde bir kısıt kulanılmışsa hangi operatörün kullanımının daha uygun olduğu belirlenmek istenmiştir. Burada “Çoruh Nehrine 200 metre uzaklıkta bulunan AGİ noktalarının tespit edilmesi” sorgusu çalıştırılmıştır.

32 Tablolardaki Tüm Geometriler İçin Belirli Bir mesafe içinde kalan geometrilerin tesbiti
R-tree Q-tree

33 Bir Geometri İçinde Kalan Geometrilerin Tespit Edilmesi
Sorgu No. Test edilen SQL cümlesi Açıklama 11. SELECT C.objectid FROM akarsular C, havzalar P, TABLE(SDO_JOIN('akarsular', 'geom', 'havzalar', 'geom','mask=inside')) T WHERE T.rowid1 = C.rowid AND T.rowid2 = P.rowid ; Havzalar içerisinde kalan akarsularun tesbiti 12. SELECT /*+ ORDERED */ a.objectid FROM havzalar b, akarsular a WHERE b.havzano=21 and SDO_RELATE(a.geom, b.geom,'mask=inside') = 'TRUE'; Seçilen Havza içerisinde kalan akarsularun tesbiti 13. WHERE b.havzano=21 and SDO_INSIDE(a.geom, b.geom) = 'TRUE'; Bu amaçla çeşitli operatör ve fonksiyonlar denenmiştir. Öncelikle “ Tüm havzalar içerisinde kalan akarsuların tespit edilmesi“ sorgusu için başlangıçta SDO_JOIN operatörü kullanımının uygun olduğu düşünülse de, iki tablonun eleman sayısı arasındaki büyük fark bu analiz için SDO_JOIN operatörünün kullanımını engellemiştir. Tablolardaki eleman sayısı karşılaştırılabilir büyüklükte olması durumunda SDO_JOIN operatörü kullanımı daha hızlı sonuç verse de, bu fark büyük olduğu durumda SDO_JOIN operatörü kullanılan 11 numaralı sorgu çok uzun bir süre sonuç döndürmemiştir. Aynı sorgu SDO_INSIDE ya da SDO_RELATE operatörleri ile daha hızlı sonuç üretmiştir. Sorguların çalıştırılması ile elde edilen sonuçlar slayt 34’de görülmektedir. SDO_JOIN operatörü, iki tablo eleman sayısı arasında büyük fark olması durumunda etkin bir çözüm olmamaktadır. Burada Havzalar tablosunun 28, Akarsular tablosunun eleman sayısına sahip olması SDO_RELATE ve SDO_INSIDE operatörlerinin kullanımını zorunlu kılmıştır.

34 Bir Geometri İçinde Kalan Geometrilerin Tespit Edilmesi

35 Seçilen Bir Geometriye En yakın Geometrilerin Bulunması
Sorgu No. Test edilen SQL cümlesi Açıklama 15. SELECT /*+NO_INDEX*/ ct.objectid FROM river_node comp, AGI ct WHERE comp.node_id=173 and ct.havzano=21 AND SDO_NN(ct.geom, comp.geometry)='TRUE' AND ROWNUM<= ORDER BY ct.objectid; Seçilen Bir Geometriye En yakın Geometrilerin Bulunması 16. SELECT ct.objectid FROM river _node comp, AGI ct WHERE comp.node_id=173 and ct.havzano=21 AND SDO_NN(ct.geom, comp.geometry ,'SDO_BATCH_SIZE=100')='TRUE' AND ROWNUM<=5 ORDER BY ct.objectid ; 17. SELECT /*+ FIRST_ROWS*/ a.objectid FROM river_node comp, agi a WHERE comp.node_id=173 and a.havzano=21 AND SDO_NN(a.geom, comp.geometry ,'SDO_BATCH_SIZE=100')='TRUE' AND ROWNUM<=5 ORDER BY a.objectid; Geometriye en yakın noktaların tespit edilmesi amacıyla SDO_NN operatörü kullanılarak “Fırat nehri üzerinde seçilen bir noktaya en yakın Akım Gözlem İstasyonlarının bulunması” sorgusu test edilmiştir. İlk olarak, SDO_NN operatörü ile kullanılan “SDO_BATCH_SIZE” parametresi kullanılarak testler yapılmıştır. Bu amaçla; Fırat nehrine ait vertexlerin tutulduğu “river_node tablosu üzerinde seçilen bir noktanın 21 no’lu havzada yer alan en yakın 5 AGİ noktasını bulmak” amacıyla 15, 16 ve 17 no’lu SQL’ler test edilmiştir. Burada amaç “SDO_BATCH_SIZE” parametresi ve “FIRST_ROWS” hint’lerinin kullanımının test edilmesidir. Test sonuçları slayt 36’da gösterilmiştir.

36 Seçilen Bir Geometriye En yakın Geometrilerin Bulunması

37 Q-tree Index denemeleri
Sorgu No. Test edilen SQL cümlesi Açıklama 1. SELECT distinct C.objectid FROM akarsu_q R, agi_q C WHERE R.Akarsu_ad='Firat N.' AND SDO_WITHIN_DISTANCE(C.geom,R.geom, 'DISTANCE=0.05')='TRUE' order by C.objectid ; Q-tree index kullanılarak Fırat Nehrine seçilen node’a 0.05 birim mesafede bulunan Agi’lerin bulunması 2. SELECT distinct C.objectid FROM akarsu R,agi C WHERE SDO_WITHIN_DISTANCE(C.geom, R.geom, ' DISTANCE=5 UNIT=KM')='TRUE' order by C.objectid ; R-tree index kullanılarak Fırat Nehrine 5 km. mesafede bulunan Agi’lerin bulunması Slayt 40’da da görüldüğü üzere SDO_WITHIN_DISTANCE operatörünün q-tree indeks ile kullanımı performans açısından uygun olmamaktadır.

38 Q-tree Index denemeleri

39 Bir geometriye en yakın geometrilerin tesbiti
Sorgu No. Test edilen SQL cümlesi Açıklama 3. SELECT /*+NO_INDEX*/ ct.objectid FROM akarsu_q comp, AGI_q ct WHERE ct.havza_no='08' and SDO_NN(ct.geom,comp.geom, 'SDO_LEVEL=9')='TRUE' AND ROWNUM<=5 ; Q-tree index kullanılarak 8. havzaya ait nehirlere en yakın 5 Agi noktasının tesbiti 4. SELECT /*+NO_INDEX*/ ct.objectid FROM akarsular comp, AGI ct WHERE ct.havza_no='08' and SDO_NN(ct.geom, comp.geom)='TRUE' AND ROWNUM<=5 ORDER BY ct.objectid; R-tree index kullanılarak 8. havzaya ait nehirlere en yakın 5 Agi noktasının tesbiti Bu sorgu için SDO_NN operatörü kullanılmış olup, 8. havzaya ait nehirlere en yakın 5 AGİ noktasının tesbiti için kullanılan sorgular görülmektedir. Slayt 41’de de görünen sorgular çalıştırılarak elde edilen sonuçlar slayt 42’de gösterilmiştir. Sonuç olarak, R-tree indeks kullanılarak tasarlanan sorguların çalıştırılması ile elde edilen performans sonuçlarının daha iyi olduğu görülmüştür.

40 Bir geometriye en yakın geometrilerin tesbiti

41 Sonuçlar ve Değerlendirme
Çalışmada kullanılan verilerin coğrafi koordinat sisteminde tanımlı olması, 2.İhtiyaç duyulan sorguların gerektirdiği operatörlerin R-tree indeks ile kullanılabilir olması, 3.Q-tree indekslerin tuning işleminin pahalı işlemler olması 4.Q-tree indekslerle tüm yerkürenin modellenememesi gibi sebeplerden dolayı R-tree indeks seçilmiştir.

42 Sonuçlar ve Değerlendirme
5.Mekansal indeks kullanımının performans üzerinde çok olumlu etkileri bulunmaktadır. 6.Yapılacak analize göre İndeks ve operatör seçimi de performans için önem taşımaktadır.

43 Teşekkürler…


"Mekansal Veritabanlarında Hızlı Sorgulama" indir ppt

Benzer bir sunumlar


Google Reklamları