Verileri bir metin dosyasında depolamak için veri tabanı ne zaman tercih edilmelidir?
Wikipedia bize bir veritabanının organize bir veri koleksiyonu olduğunu söyler . O tedbir olarak, metin dosyası olan bir veritabanı. Söylemeye devam ediyor:
Veriler tipik olarak gerçekliğin ilgili yönlerini bu bilgiyi gerektiren süreçleri destekleyecek şekilde modellemek için düzenlenir. Örneğin, otellerde oda müsaitliğinin, boş bir otel bulmayı destekleyecek şekilde modellenmesi.
Bu bölüm sübjektiftir - bize özellikle verilerin nasıl modellenmesi gerektiğini veya hangi işlemlerin optimize edilmesi gerektiğini söylemez. Metin dosyanız her gün bir tane olmak üzere bir dizi ayrı kayıttan oluşur, bu nedenle gerçekliğin bir yönünü sorununuzla ilgili bir şekilde modellenirsiniz.
"Veritabanı" derken muhtemelen bir tür ilişkisel veritabanı yönetim sistemi düşünüyorsunuz, ancak metin dosyanızı veritabanı olarak düşünmenin sorunuzu "ne zaman bir veritabanı kullanmalıyım?" "Ne tür bir veritabanı kullanmalıyım?" Bu ışıkta bir şeyler görmek cevabı görmeyi kolaylaştırır: Sahip olduğunuz veri artık gereksinimlerinizi karşılamadığında daha iyi bir veritabanı kullanın.
Python betiğiniz ve basit metin dosyanız yeterince iyi çalışıyorsa, değiştirmenize gerek yoktur. Günde sadece bir yeni kayıt ve bilgisayarların her yıl daha hızlı hale gelmesiyle, mevcut çözümünüzün uzun süre geçerli olabileceğinden şüpheleniyorum. On yıllık veri, size yalnızca bir kez ayrıştırıldığında 75 kilobayttan daha azını gerektiren 3650 kayıt verecektir.
Günde bir küçük kayıt yerine, CodeReview'da sorulan her soruyu, kimin ne zaman ve ne zaman kaydetmeye karar verdiğinizi düşünün. Ayrıca, tüm yanıtları ve ilgili meta verileri de toplarsınız. Sen olabilir bir metin dosyasına tüm depolamak, ancak bir düz dosya bunu gerektiğinde zor bilgileri bulmak mümkün kılacaktır. Her şeyi belleğe okumak için çok fazla veri olurdu, bu yüzden bir soru veya cevap bulmak istediğinizde, aradığınızı bulana kadar dosyayı taramanız gerekir. Belirli bir kullanıcı tarafından sorulan tüm soruları bulmak istediğinizde, tüm dosyayı taramanız gerekir. Etiket olarak "hata" içeren tüm soruları bulmak isterseniz, dosyayı taramanız gerekir.
Bu çok yavaş olurdu, bu nedenle belirli bir kaydı bulmak için dosyaya nerede bakacağınızı söyleyen bazı dizinler oluşturarak işleri hızlandırmaya karar verebilirsiniz. Sorular için bir endeksiniz, kullanıcılar için bir başkası, cevaplar için bir üçüncü vb. Olabilir. Bir soru bulmak istediğinizde (çok daha küçük) soru dizininde arama yaparsınız, sorunun ana veri dosyasındaki konumunu alır ve hızlı bir şekilde dosyadaki doğru noktaya atlarsınız. Bu büyük bir performans artışı olacaktır. Gerçekten de, bir veritabanı yönetim sistemi budur.
Bu nedenle, ihtiyacınız olan şey olduğunda bir DBMS kullanın. Çok fazla veriniz olduğunda, bu verilere hızlı bir şekilde ve belki de başlangıçta tamamen tahmin edemeyeceğiniz şekillerde erişebilmeniz gerektiğinde kullanın. Birbirine bağlı farklı veri türleriniz - farklı kayıt türleri - varsa , çeşitli kayıtları uygun şekilde ilişkilendirebilmeniz için bir RDBMS kullanın .