Hızlı okuma sorgusu performansı gerektiren büyük bir coğrafi veri kümesi için yeni bir sistem tasarlama sürecindeyim. Bu nedenle, herkesin aşağıdaki durumda gerekli performansı elde etmek için uygun DBMS'ler, veri yapısı veya alternatif yöntemler hakkında mümkün / uygun olduğunu düşünüp düşünmediğini görmek istiyorum:
Veriler, küresel kapsama sahip olacak olan işlenmiş uydu radar verilerinden sürekli olarak üretilecektir. Dünyanın uydu çözünürlüğü ve arazi kapsamına dayanarak, dünyadaki 75 milyar ayrı yerde değer üretmek için tüm veri setini tahmin ediyorum. Tek bir uydunun ömrü boyunca, çıkış bu konumların her birinde 300'e kadar değer üretecektir (bu nedenle toplam veri kümesi> 22 trilyon değer). Bu bir uydu içindir ve yörüngede bir saniye vardır, yeni iki yılda başka bir iki planlanmıştır. Yani çok fazla veri olacak! Tek bir veri öğesi çok basittir ve yalnızca (boylam, enlem, değer) oluşur, ancak öğe sayısı nedeniyle 100 TB'a kadar üretecek tek bir uydu tahmin ediyorum.
Yazılı verilerin asla güncellenmesi gerekmemelidir, çünkü yalnızca yeni uydu alımları işlendikçe büyüyecektir. Yazma performansı önemli değildir, ancak okuma performansı çok önemlidir. Bu projenin amacı, her bir noktanın ortalama, gradyan veya zaman içindeki bazı işlevlerine göre renkli bir değere sahip olduğu google haritaları üzerinde bir katman gibi basit bir arayüz aracılığıyla verileri görselleştirmektir. (gönderinin sonunda demo).
Bu gereksinimlerden, veritabanının ölçeklenebilir olması gerekir ve muhtemelen bulut çözümlerine bakacağız. Sistem, "yakın (lat, lon)" ve "(kutu) içindeki noktalar" gibi coğrafi uzamsal sorgularla başa çıkabilmeli ve tek bir noktayı bulmak için <1'lerin okuma performansına ve en fazla 50.000 puan (200.000 puana kadar tercih edilebilir).
Şimdiye kadar 111 milyon yerde ~ 750 milyon veri öğesi test veri setim var. Tamam olan bir postgres / postGIS örneğini denedim, ancak parçalanma olasılığı olmadan bu veri büyüdükçe başa çıkabilecektir. ve parçalama ile veri hacmi ile ölçeklendirme yeterli olabilir. Kısa bir süre önce elasticsearch hakkında biraz bilgi edindim, bu yüzden bu konuda herhangi bir yorum benim için yeni olduğu için yararlı olacaktır.
İşte tam veri seti ile elde etmek istediğimiz şeyin hızlı bir animasyonu:
Bu gif (postgres denememden), her biri ~ 200.000 puan içeren ve her birini oluşturmak için ~ 17s alan önceden hesaplanmış raster döşemelerine (6x3) hizmet ediyor. Bir noktayı tıklatarak, grafik tüm tarihi değerleri <1'lerde en yakın konumda çekerek yapılır.
Uzun yazı için özür dileriz, tüm yorum / tavsiye bekliyoruz.