Saya sedang dalam proses merancang sistem baru untuk set data geospasial besar yang akan membutuhkan kinerja permintaan baca cepat. Oleh karena itu saya ingin melihat apakah ada yang berpikir itu mungkin atau memiliki pengalaman / saran tentang DBMS, struktur data, atau metode alternatif yang sesuai untuk mencapai kinerja yang diperlukan dalam situasi berikut:
Data akan terus diproduksi dari data radar satelit yang diproses, yang akan memiliki jangkauan global. Berdasarkan resolusi satelit dan jangkauan lahan dunia, saya memperkirakan set data lengkap untuk menghasilkan nilai di 75 miliar lokasi berbeda di dunia. Selama masa hidup satu satelit, output akan menghasilkan hingga 300 nilai di setiap lokasi ini (sehingga total kumpulan data> 22 triliun nilai). Ini untuk satu satelit, dan sudah ada yang kedua di orbit, dengan dua yang lain direncanakan dalam beberapa tahun baru. Jadi akan ada banyak data! Item data tunggal sangat sederhana dan hanya akan terdiri dari (bujur, lintang, nilai), tetapi karena jumlah item saya memperkirakan satu satelit untuk menghasilkan hingga 100TB.
Data tertulis seharusnya tidak perlu diperbarui, karena hanya akan tumbuh ketika akuisisi satelit baru diproses. Kinerja menulis tidak penting, tetapi kinerja membaca sangat penting. Tujuan dari proyek ini adalah untuk dapat memvisualisasikan data melalui antarmuka sederhana seperti layer over google maps, di mana setiap titik memiliki nilai berwarna berdasarkan rata-rata, gradien, atau beberapa fungsi dari waktu ke waktu. (demo di akhir posting).
Dari persyaratan ini, basis data harus dapat diukur dan kami cenderung melihat ke arah solusi cloud. Sistem harus mampu menangani pertanyaan geospasial seperti "titik dekat (lat, lon)" dan "titik dalam (kotak)", dan telah membaca kinerja <1s untuk menemukan satu titik, dan poligon yang berisi hingga 50.000 poin (meskipun lebih dari 200.000 poin lebih disukai).
Sejauh ini saya memiliki set data uji ~ 750 juta item data di 111 juta lokasi. Saya telah menguji coba contoh postgres / postGIS, yang berfungsi dengan baik, tetapi tanpa kemungkinan sharding saya tidak melakukan ini, ini akan dapat mengatasi data yang bertambah. Saya juga telah mencoba contoh mongoDB, yang lagi-lagi tampak OK jadi jauh, dan dengan sharding mungkin cukup untuk skala dengan volume data. Saya baru-baru ini belajar sedikit tentang elasticsearch, jadi setiap komentar tentang ini akan membantu karena ini baru bagi saya.
Berikut adalah animasi singkat tentang apa yang ingin kami capai dengan kumpulan data lengkap:
Gif ini (dari percobaan postgres saya) adalah melayani (6x3) ubin raster yang sudah dihitung sebelumnya, masing-masing berisi ~ 200.000 poin dan mengambil ~ 17 untuk menghasilkan masing-masing. Dengan mengklik suatu titik, grafik dibuat dengan menarik semua nilai historis di lokasi terdekat dalam <1s.
Permintaan maaf untuk posting lama, semua komentar / saran dipersilakan.