Metin dosyasına veya veritabanına giriş yapmak?


25

Veri kaydı için ne zaman veri tabanı kullanmalı ve ne zaman metin dosyaları kullanmalıyım?
Web sunucularının ve web çerçevelerinin (uygulamanızın dahili olarak kullandığı) genellikle (her zaman?) Günlük isteklerini ve hatalarını metin dosyalarına varsayılan olarak görüyorum. Ancak, uygulamalarını bu sunucular ve çerçeveler etrafında geliştiren kişilerin bazen veritabanına giriş yaptığını görüyorum (uygulamanın ana veri tabanı bile değil).
Ayrıca, hata ayıklama günlükleri ile denetim günlükleri arasında bir fark vardır - bu sınıflandırmayı bu sitede bir yerde okudum.





Hassas bilgileri günlüğe kaydetmemeniz gerekirken, bazı sistemler buna ihtiyaç duyabilir ve bu veritabanına giriş yapmak için iyi bir durumdur. Bazen geliştiriciler yanlışlıkla hassas bilgileri kaydederler. Bu kazaya karşı korunmak için, birçok uygulama geliştiricisi yalnızca bir veritabanına giriş yapar; böylece, günlük iletilerindeki sosyal güvenlik numaraları gibi şeyler, bir metin dosyasında 13 farklı sunucudaki düz metinlerle oturmaz.
Greg Burghardt,

Yanıtlar:


16

Genel anlamda, bir metin dosyasına giriş yapmak bir veritabanına giriş yapmaktan çok daha hızlıdır. Kaydettirmeniz gereken loglamanın ana yönü budur.

Bir DB'ye giriş yapmanın sebebi, sonuçları sorgulamak istediğinizden daha olasıdır - özellikle de günlük girişlerini gruplamak için kullanılabilecek bağlamsal bilgileri kaydettiğinizde, DB'de belirli günlük bilgileri aramak daha kolaydır. Ayrıca, merkezi bir DB'ye erişmek genellikle bir sunucudaki güvenli ve erişilemeyen bir günlük dosyasından daha kolaydır.

İdeal olan, yerel olarak bir dosyaya giriş yapmak ve daha sonra gerekirse inceleme için bu verileri bir DB'ye geçirmek olacaktır.

Şimdi denetim tamamen farklı bir canavar. Kavram olarak günlüğe kaydetmeye benzer olsa da, denetimin genellikle uzun süre saklanması gerekir (hata ayıklama veya hevesle silinen izlemede kullanılan günlük dosyalarının aksine). Denetimler önemli bilgileri göstermek için var. Çok az denetim bilgisi kaydedersiniz ve normal günlüğe kaydetmeden daha az sıklık kullanırsınız, bu nedenle performans kaygı verici değildir. Bu nedenle, bu denetim bilgisini merkezi bir veri tabanına yazmanın avantajları görülmektedir.


1
Gördüğüm bir diğer düzenleme, kayıtların başlangıçta yerel olarak yazılması ve ardından bir tür arka plan işi tarafından DB'ye itilmesidir.
Robbie Dee

@RobbieDee Bu fikri beğendim. Bir tür yinelenen sorum var: sınırlı süreli günlük dosyalarına sahip olmak yaygın mı (ör. Sadece son 30 gün) ancak günlükler veritabanına itildiğinde (örneğin haftalık), ardından tüm günlükler veritabanında saklanır => günlük dosyaları eylemi Sadece bir tampon gibi ve tüm okuma işlemleri veritabanında yapılır? DB'ye yazma geciktiğinden, performans konusunda endişelenmeyin, değil mi?
Al-un

9

Tüm yaklaşıma uyan tek bir boyut yoktur ve esneklik için, bazen birden fazla yaklaşım kullanmak istersiniz. Örnek alarak, hata ayıklama günlüklerini bir dosyada saklamak ve denetim günlüklerini bir DB'de saklamak isteyebilirsiniz.

Uygulama kırıntıları

Artıları: Uygulaması kolay ve hemen kullanıcı tarafından görülebilir

Eksileri: Bilgi ancak başvuru sırasında devam

Metin dosyası

Artıları: Uygulaması kolay

Eksileri: dosya kilitleme oluşmadığından emin olmak gerekir. Günlük sürücüsünde disk alanı bittiğinde ne yapılmalı?

Olay günlüğü

Artıları: Uygulaması kolay

Eksileri: Doğru şekilde kurulmazsa olay günlüğü dolu olabilir veya saklama ilkesi / silme nedeniyle eski günlükler kaybolabilir.

Veritabanı

Artıları: Uygulaması kolay

Eksileri: Daha fazla DB trafiği. DB kaybı veya başka bir DB problemi nasıl kaydedilir?

Mesajlaşma (MQ)

Artıları: Ateş ve unut

Eksileri: Yanlış gitmek için başka bir katman. Kurulum gerektirir


Ayrıca syslog arka plan programı ve SNMP günlük hedeflerini dahil etmek isteyebilirsiniz.
gbjbaanb

@gbjbaanb Gerçekten - bazı işletim sistemleri yerleşik olarak böyle bir işleve sahiptir - bu kesinlikle ayrıntılı bir liste değildir. Yüksek kullanılabilirlik sistemleri, düştüklerinde de SMS gönderebilir.
Robbie Dee

2

Denetim günlükleri , veritabanınızın içeriğinin tamamen doğrulanması amacıyla denetim amacıyla işlemlerin daha uzun süre boyunca tam olarak izlenebilmesini sağlamalıdır.

Bazı durumlarda (örneğin finansal uygulamalar) bu kütükler, tutma (10 yıl boyunca bazı ülkelerde) veya değiştirilemezlik gibi yasal gerekliliklere uyumu sağlamak zorunda kalabilir. Bu kayıtlar db'nin içeriğini uygulama düzeyinde doğrulamak zorunda olduğundan, izinsiz değişikliklerden kaçınmak için erişimin kontrol edilebileceği db'de saklamak yaygın bir uygulamadır.

Günlükleri veya güvenlik günlüklerini izlemek gibi diğer günlükler genellikle performans ve hacim kısıtlamalarıyla baş etmek zorunda kalır. Bunlar genellikle bir dosyaya yazılır, çünkü yazmak daha hızlıdır (işlem yönetimi ek yükü yok) çevrimdışı arşivlenmesi daha kolay ve harici izleme SIEM araçlarıyla entegrasyonu daha kolaydır .

Bu tür kütüklerin, denetim kütüklerinin güvenilirliğini göstermek için kullanılabildiği (örneğin yetkisiz erişim yok), genellikle daha kısa tutma kısıtlamalarına sahip oldukları (örneğin telekomünikasyon kütükleri için yasa uygulama amacıyla 6 ay ila 2 yıl arasında) belirtilmelidir. eğer herhangi bir kısıtlama varsa.


1

Hata ayıklama günlüğü için db kullanmanın birçok nedeninden biri, olay görüntüleyicisini veya metin dosyalarını görüntülemek için uygulama veya web sunucusuna erişiminiz olmadığı zaman

Denetim günlükleri farklıdır, daha sonra günlükleri web uygulaması bağlamında hata ayıklayın, bazı uygulamalarda bunları son kullanıcıya göstermeleri gerekebilir, böylece kolay erişim için veritabanına girmeleri gerekir.

Ayrıca, filtreleme ve kolay görüntüleme için DB Araçlarını kullanabilirsiniz.


Sunucu günlük dosyalarına yazma, yüksek eşzamanlılık sistemleri için tek seçenek değildir. Bu günlükler genellikle istemci cihaza yazılır ve ardından bir sorun olması durumunda destek için itilir. Yüksek eşzamanlılık da bunu tek bir veritabanına yazmak için uygun olmayabilir.
Robbie Dee

@RobbieDee Web sunucuları ve web uygulamaları için de geçerli mi? OP'nin istediği şey bu olduğuna inanıyorum
Muhammad Raja
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.