Haruskah saya membagi MultiPolygons menjadi Polygons?

8

Dalam sistem yang saya implementasikan, saya memiliki tabel T1 dengan geometri yang terkait. Sebagian besar geometri adalah satu set n poligon, dengan 10 <n <100. Saat ini dalam tabel T1 saya memiliki kolom geometri tipe MultiPolygon, memiliki indeks GiST.

Karena tabel T1 akan menjadi besar, saya khawatir akan lebih baik untuk membuat hubungan satu-ke-banyak dengan tabel T2 kedua, memiliki kolom tipe Polygon, dan membagi setiap MultiPolygon menjadi beberapa Poligon.

Tapi saya harus menerapkan pencarian pada tabel T1, oleh karena itu dengan pendekatan kedua kekurangannya adalah bahwa saya memiliki tambahan bergabung untuk menangani. Selain itu akan lebih rumit untuk memasukkan geometri untuk satu catatan tabel T1.

Saya bertanya-tanya apakah ada yang punya pengalaman dengan masalah seperti itu dan apakah orang itu bisa menjelaskan.

pengguna3125
sumber

Jawaban:

1

Saya cenderung mengatakan tidak perlu khawatir tentang ukuran meja T1 Anda; indeks (dan pemicu tentu saja) adalah apa yang mempengaruhi kinerja sebagian besar.

Selain memiliki satu bergabung lebih sedikit, terjemahan WKB ke representasi PostGIS / GEOS internal yang saya bayangkan akan sedikit lebih optimal daripada melakukannya untuk beberapa poligon secara individual.

Satu-satunya kebutuhan untuk memiliki tabel geometri yang terpisah adalah jika satu poligon dikaitkan dengan lebih dari satu rekaman. Multipolygons harus dianggap sebagai entitas tunggal untuk keperluan desain database, dan hanya jika hubungannya lebih kompleks Anda harus mempertimbangkan tabel terpisah. Dan akan ada sedikit penghematan ruang fisik dengan meja lebih sedikit.

Cobalah dengan kedua penyetelan, dan jalankan kueri dalam pgadmin yang memberi Anda timing untuk setiap bagian dari kueri.

MerseyViking
sumber
4
@MerseyViking. Indeks akan membuat pekerjaan yang jauh lebih baik jika multipoligon dipecah menjadi poligon. Dalam kasus multipolygon, indeks dibangun di atas batas total bbox dari multipolygon. Kotak yang lebih kecil dalam indeks indeks yang lebih efektif.
Nicklas Avén
@Nicklas setuju BBOX akan lebih besar dengan multi-poligon. +1
Mapperz
Ok terima kasih. Tapi yang tidak bisa saya mengerti adalah kapan harus menggunakan tipe MultiPolygon jika indeks selalu bekerja lebih baik untuk Polygon.
user3125
2
Keputusan poligon vs multi poligon lebih kompleks dari itu. Ada banyak hal yang perlu dipertimbangkan. Multi poligon dapat memberikan desain basis data yang "lebih baik". Bergantung pada bagaimana poligon dan multi poligon terkait secara spasial dan pemrosesan apa, analisis yang ingin Anda lakukan, keuntungan dalam memecah multi poligon bisa besar atau tidak sama sekali. Multi poligon juga merupakan tipe geometri umum sebagai hasil pemrosesan. Jika Anda misalnya menggunakan ST_Difference pada poligon dan persimpangan Anda akan mendapatkan kembali multi poligon.
Nicklas Avén
1
@MerseyViking, saya mengerti maksud Anda, tetapi karena ia memiliki antara 10 dan 100 poligon di setiap multipolygon, ada peluang besar bahwa membaginya menjadi poligon akan memberikan dorongan besar. Dan bergabung di bidang bilangan terindeks tidak akan dikenakan biaya banyak.
Nicklas Avén