Büyük bir kayıt tabanlı matematiksel veritabanı için hangi platform?


11

Merhaba Ben programlama deneyimi olan bir inşaat mühendisiyim ama bugün mevcut çok çeşitli seçeneklere aşina değilim. Umarım ilerlemek için en iyi yolu bana gösterebilirsin.

Bir ızgara formatında zemin seviyesi anket ölçümleri bir veritabanı yapmak ve sorgulamak istiyorum. Hafriyat işi boyunca çeşitli zamanlarda her bir ızgara konumu için birçok ölçüm olacaktır, böylece zamanın 4. boyutu vardır.

Gözlemler büyük olasılıkla bir metin dosyasından okunacaktır. Her kayıtta (2 x tamsayı) bir ızgara konumu (satır ve sütun) a (kayan nokta) zemin seviyesi ve çeşitli dize bilgi kodları (toplamda en fazla 30 karakter) olacaktır.

Izgaralar yaklaşık 10000 satır x 10000 sütun olabilir. Şebekedeki her yerin her bir ankette bir kaydı olmayacak, ancak tipik olarak yüz kayıtları olacaktır. Izgara konumlarının çoğunda hiç kayıt olmazdı (site tam olarak dikdörtgen olmayacaktır).

Kayıtları aramak, verileri ayıklamak ve her bir ızgara konumu için en düşük veya en yüksek zemin seviyesini hesaplamak gibi hesaplamalar yapmak istiyorum. Dizileri kullanarak FORTRAN, BASIC veya C gibi bir dilde programlama yapabileceğimden oldukça eminim. Dizi öğelerinin birçoğu olsa boş olurdu ve bunun olsa doğru bir yol olmadığını tahmin ediyorum ve bunun gibi büyük veritabanlarının nasıl kullanılacağını öğrenmek zorunda kalacak özel araçlara ihtiyacı var.

Platform için olası seçenekleri düşünüyorum -

  1. Bir veritabanı programı kullanın. Bunların ne kadar güçlü olabileceğine aşina değilim ama GUI ile çok fazla yükleri olacağını hayal ediyorum.

  2. SQL mi kullanıyorsunuz? Bu hakkında çok şey bilmiyorum ama veritabanlarının dili gibi görünüyor. Her zaman bildirici yerine zorunlu dilleri kullandım ve wikipedia'dan SQL'in bildirici olduğunu anladığım için değişiklikten biraz gerginim. Kullanma sürecini tam olarak anlamıyorum. Konsol programları yapan bir derleyici var mı? Veritabanı diskte depolanıyor mu? Böyle aptalca sorular için özür dilerim.

  3. C-treeACE gibi bir API mi kullanıyorsunuz? Sanırım bu bana "bunu yap, sonra yap" dilini tanıma yolunun bir yolu olabilir (maalesef bu benim mühendis olarak düşündüğüm yol!) Ancak, API tarafından sunulan sahne arkası bellek ve işleme yönetiminin büyük dizilerle elde edebileceğimden daha üstün olacağını umuyorum.

  4. Ya da nesne yönelimli bir dille yapabilir ve bilgisayarın depolama gereksinimleri hakkında endişelenmesine izin verebilir miyim. Eğer kayıtları her bir kayıttan ihtiyacım olan sonuçları almama yardımcı olacak yöntem ve özelliklere sahip nesneler olarak saklarsam, 3'e kıyasla büyük şişirilmiş bir program olurdu)

Yüz milyonlarca kayıt olması muhtemeldir ve bunları pencereleri çalıştıran modern bir bilgisayarda saat değil (tercihen saniye!) Değil dakikalar içinde sorgulamak ve işlemek istiyorum. Daha spesifik olmak gerekirse, Windows 7 64 bit çalıştıran 6Gb ram ve 120Gb SSD'li bir i7 işlemcidir.

Birinin bir acemi ile birkaç bilgelik kelimesini paylaşmak için zamanı olduğunu umuyoruz.


Öğleden sonra 1 ile 5 arasında çevrimiçi olabilirseniz (veya daha sonra harika olurdu), size bu konuda yardımcı olmak için sohbet etmenizi isteriz. chat.stackexchange.com/rooms/179/the-heap (elbette o zamandan önce bazı arkadaşlıklar olabilir). Coğrafi Bilgi Sistemleri gibi bazı özel düşüncelerim yardımcı olabilir.
jcolebrand

Yanıtlar:


9

Birkaç seçenek var ve lütfen burada cevabımla sınırlı kalmayın. Özellikle yardımcı olabilecek dizi-yerel veritabanlarını bulabilirsiniz. Cevabım özellikle SQL tabanlı veritabanlarıyla ilgili sorularınız olacak.

Bana öyle geliyor ki, bu bir jeo-uzaysal bilgi sorunu. SQL tabanlı veritabanları aslında bu alanlarda oldukça iyi kullanılmaktadır, ancak bu aynı zamanda veritabanları içinde uzman bir alandır.

Bu alandaki SQL veritabanları arasında PostgreSQL, PostGIS eklentisi ile birlikte en iyilerden biri olarak kabul edilir. Ben senin yerinde olsaydım, buradan başlardım. SQL'in birincil avantajı, henüz aklınıza gelmeyen kullanımlar için verilerinizin yeniden kullanılmasıyla ilgili esnekliği korumasıdır. Bunu iyi bir jeo-uzamsal destek ile yapmak, küresel trijenin özellikleri hakkında endişelenmeden geniş bir alandaki mesafeyi hesaplayabileceğiniz anlamına gelir.

Tabii ki bu sadece çok büyük ızgaraları olan bir faktör haline geliyor. Dünyanın eğriliğinin göz ardı edilebileceği daha küçük ızgaralar için, PostgreSQL ayrıca kullanılabilen bir koordinat sistemindeki noktaları içeren bir dizi geometrik türe sahiptir. Bundan bahsediyorum çünkü bir alanın ne kadar büyük bir alanın araştırıldığı ve bir kişinin düzlem geometrisi alıp alamayacağı belli değildir.

Buna rağmen PostGIS, 3 ve 4 boyutlu geometrik koordinat sistemleri üzerinde temsillere ve hesaplamalara izin vererek işleri basitleştirebilir.

Ayrıca, sitelerinizin mutlaka kare olmadığını söylediğinizi de unutmayın. PostgreSQL'de yapabileceğiniz bir şey (geometrik türleri veya PostGIS'i kullanarak) her siteye dikdörtgen olmayan bir sınır tanımlamaktır, böylece ölçümü kaydetmeden önce bir noktanın sitenin sınırları içinde olduğundan emin olun.

Bildirici Dil Etkileri

Sanırım bu endişe abartılı. İnsanlar SQL sorgularını, aradıkları programın zorunlu dilinin bir parçasıymış gibi yazabilir ve yazabilirler. Sorgularınızın çoğu için önemli değil.

İnsanların bildirici bir dil ile kastettiği, bir sorgu içinde, yapının veritabanına nasıl elde edeceğinizi değil, hangi bilgileri istediğinizi söylemesi. Bu, veritabanından karmaşık bilgiler istediğinizde önemlidir, çünkü temel olarak doğru soruyu sorabiliyorsanız (ve verileriniz geçerliyse) doğru cevabı alacaksınız demektir.

Ancak, ortaya çıkan en büyük fark, uzun SQL sorgularının hata ayıklama işleminin uzun zorunlu alt yordamlardan daha kolay olmasıdır.

Bu nasıl çalışır?

Bu rotaya giderseniz, tercih ettiğiniz dilde yazılmış bir veritabanı ve bir programınız olabilir. Program veritabanına sorgular gönderir ve cevapları geri alır. Ayrıca (PostgreSQL ve diğer birçok ilişkisel DB'de) sorgularınızı daha sonra uygulama tarafından çağrılabilen fonksiyonların içine koyabilir ve daha fazla zorunlu veya işlevsel bir arayüz sağlar. Veriler diskte depolanır ve programınızdan ayrı bir yazılım parçasından erişilir. Ayrıca başka bir programla (MS Access'ten pgAdmin'e) bağlanabilir ve sorgu çalıştırabilir veya raporlar oluşturabilirsiniz.

Temelde RDBMS'yi verilerinizi yöneten bir "matematik motoru" olarak düşünebilirsiniz ve programınız ihtiyaç duyduğunuz şeyi yapmak için onunla etkileşime girer.


1
geç cevap için üzgünüm çok meşgul oldum. Sucg ayrıntılı tavsiye verdiğiniz için gerçekten minnettarım. SQL ile başlıyorum, O'Reilly kitabı ile öğreniyorum ve kitabın önerdiği şekilde mySQl'yi indirdim. PostgreSQL GIS uzantısının kullanımını ve belki de daha sonraki bir tarihte SQL'den C # 'a erişeceğim. Tekrar teşekkürler, geri olacak!
user19109
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.