Geohash, mekansal özellikleri, özellikle nokta özelliklerini endekslemenin çok basit ve etkili bir yoludur. Çizgi ve çokgen özelliklerinin dizine eklenmesi biraz daha zordur, ancak yapılabilir. Geohash, dünya yüzeyinin üstüne bindirilmiş statik hiyerarşik sabit boyutlu bir ızgaradır. Aynı hiyerarşik düzeydeki ızgara hücreleri çakışmaz. R-Tree, indeksledikleri özelliklere bağlı olarak hücre konumunu ve boyutunu değiştiren dinamik bir ızgaradır. R-Tree dizinleri özellikleri her eklediğinizde ve güncellediğinizde sınırlayıcı kutuları ve hücreleri değiştirir. Geohash çoğunlukla nokta özelliklerini indekslemek için kullanılır ve hücreler her veri ekleme ve güncelleme işleminde değişmez. Geohash hücreleri R-ağacı gibi özelliklere sahip değildir.
Geohash'ın (r-ağacına kıyasla) avantajlarından bazıları şunlar olabilir:
- kolay uygulama
- artan sayıda özellik ile performans kaybı yok
- yakınlık aramaları (kısmen doğru)
Geohash'ın (r-ağacına kıyasla) dezavantajlarından bazıları şunlar olabilir:
- şebekenin keyfi hassasiyeti
- çizgi ve çokgen özelliklerini dizine eklemek (ve sorgulamak) daha zor
- dizinin boyutu, bazı çizgi ve çokgen dizine ekleme yöntemleriyle büyük olabilir
- spesifikasyonlara göre, aynı yöntem diğer koordinat sistemlerine de uygulanabilmesine rağmen, yalnızca boylam / enlem koordinat sistemi ile kullanılabilir.
Bahsettiğiniz bu ürünler (veritabanları) geohash kullanır, çünkü geohash esas olarak noktaları indekslemek için kullanılır ve böyle bir özelliğe ihtiyaç duyan birçok uygulama vardır. Çizgiler ve çokgenler sıklıkla kullanılmaz (elbette CBS uygulamaları hariç), neden bununla uğraşıyorsunuz? Diğer sebep, elbette, uygulama kolaylığıdır. Geohash iki boyutlu koordinatı tek boyutlu değere dönüştürür. Buna boyutsal azalma denir. Tek boyutlu değerin, çoğunlukla bu ürünlerde kullanılan standart b-ağacı ile indekslenmesi kolaydır.
Geohash'a benzer algoritmalar olduğunu belirtmeliyim, ancak çoğu tescilli ve lisans gerektiriyor. Geohash kamu malıdır. Son yıllarda bu kadar büyük bir kullanımın nedeni de bu olabilir.
Muhtemelen başka avantajlar ve dezavantajlar da vardır, ancak bunlar aklıma ilk gelenler. Umarım açıklamam biraz yardımcı olur.