เข้าสู่ระบบไฟล์ข้อความหรือฐานข้อมูล?


25

ฉันควรใช้ฐานข้อมูลสำหรับการบันทึกและเมื่อใดที่ไฟล์ข้อความ?
ฉันเห็นว่าเว็บเซิร์ฟเวอร์และเว็บเฟรมเวิร์ก (ที่แอปของคุณใช้ภายใน) โดยปกติ (เสมอ?) บันทึกคำขอและข้อผิดพลาดลงในไฟล์ข้อความโดยค่าเริ่มต้น แต่ฉันเห็นว่าคนที่พัฒนาแอปของพวกเขารอบ ๆ เซิร์ฟเวอร์และเฟรมเวิร์กบางครั้งก็ล็อกอินเข้าสู่ฐานข้อมูล (แม้แต่ฐานข้อมูลหลักของแอพ
อาจมีความแตกต่างระหว่างบันทึกการดีบักและบันทึกการตรวจสอบ - ฉันได้อ่านการจัดหมวดหมู่นี้บางแห่งในเว็บไซต์นี้



สิ่งนี้อาจช่วยstackoverflow.com/questions/3458813/
Muhammad Raja

2
เป็นไปได้ที่ซ้ำกันของล็อกไฟล์หรือตารางฐานข้อมูล?
ริ้น

แม้ว่าคุณไม่ควรบันทึกข้อมูลที่ละเอียดอ่อน แต่บางระบบอาจจำเป็นต้องใช้และนี่เป็นกรณีที่ดีสำหรับการเข้าสู่ระบบฐานข้อมูล บางครั้งนักพัฒนาเข้าสู่ระบบข้อมูลที่สำคัญ เพื่อป้องกันอุบัติเหตุนี้นักพัฒนาแอปพลิเคชันจำนวนมากจะเข้าสู่ฐานข้อมูลเท่านั้นดังนั้นสิ่งต่าง ๆ เช่นหมายเลขประกันสังคมในข้อความบันทึกไม่ได้นั่งอยู่ในไฟล์ข้อความเป็นข้อความธรรมดาในเซิร์ฟเวอร์ 13 เครื่อง
Greg Burghardt

คำตอบ:


16

โดยทั่วไปแล้วการบันทึกไฟล์ข้อความนั้นเร็วกว่าการบันทึกไปยังฐานข้อมูล นั่นคือประเด็นหลักของการบันทึกที่คุณต้องพิจารณา

เหตุผลที่คุณเข้าสู่ฐานข้อมูลมักจะเป็นเพราะคุณต้องการสืบค้นผลลัพธ์ - การค้นหาข้อมูลบันทึกเฉพาะนั้นง่ายกว่าในฐานข้อมูลโดยเฉพาะอย่างยิ่งถ้าคุณบันทึกข้อมูลเชิงบริบทที่สามารถใช้เพื่อจัดกลุ่มรายการบันทึกร่วมกัน นอกจากนี้ยังเข้าถึงฐานข้อมูลส่วนกลางได้ง่ายกว่าล็อกไฟล์บนเซิร์ฟเวอร์ซึ่งอาจปลอดภัยและไม่สามารถเข้าถึงได้

อุดมคติคือเข้าสู่ระบบในเครื่องไปยังไฟล์จากนั้นย้ายข้อมูลนี้ไปยังฐานข้อมูลเพื่อตรวจสอบหากจำเป็นหลังจากนั้น

ตอนนี้การตรวจสอบเป็นสัตว์ที่แตกต่างกันโดยสิ้นเชิง ในขณะที่มันคล้ายกับแนวคิดในการเข้าสู่ระบบการตรวจสอบมักจะต้องเก็บไว้เป็นเวลานาน (ซึ่งแตกต่างจากไฟล์บันทึกที่ใช้สำหรับการแก้จุดบกพร่องหรือการติดตามที่อาจถูกลบในเวลา) มีการตรวจสอบเพื่อแสดงข้อมูลที่สำคัญ คุณบันทึกข้อมูลการตรวจสอบน้อยกว่าและน้อยกว่าการบันทึกปกติดังนั้นประสิทธิภาพจึงไม่เป็นข้อกังวล ด้วยเหตุนี้จึงเห็นข้อดีของการเขียนข้อมูลการตรวจสอบนี้ไปยังฐานข้อมูลกลาง


1
การจัดเรียงอื่นที่ฉันเคยเห็นคือการเขียนบันทึกในเครื่องก่อนแล้วจึงผลักไปยังฐานข้อมูลโดยงานแบ็คกราวนด์บางอย่าง
Robbie Dee

@ RobbieDee ฉันชอบความคิดนี้ ฉันมีคำถามที่ซ้ำกัน: มันเป็นเรื่องธรรมดาที่จะมีไฟล์บันทึกระยะเวลาที่ จำกัด (เช่น 30 วันที่ผ่านมาเท่านั้น) แต่เมื่อมีการส่งบันทึกลงในฐานข้อมูล (เช่นทุกสัปดาห์) จากนั้นบันทึกทั้งหมดจะถูกเก็บไว้ในฐานข้อมูล => เช่นเดียวกับบัฟเฟอร์เท่านั้นและการดำเนินการอ่านทั้งหมดจะทำในฐานข้อมูลหรือไม่ เนื่องจากการเขียนใน DB ล่าช้าไม่ต้องกังวลกับประสิทธิภาพ
Al-un

9

ไม่มีขนาดเดียวที่เหมาะกับวิธีการทั้งหมดและเพื่อความยืดหยุ่นในบางครั้งคุณต้องการใช้หลายวิธี จากตัวอย่างของคุณคุณอาจต้องการเก็บบันทึกการดีบั๊กในไฟล์และเก็บบันทึกการตรวจสอบไว้ในฐานข้อมูล

แอปพลิเคชัน breadcrumbs

จุดเด่น: ง่ายต่อการติดตั้งและมองเห็นได้โดยผู้ใช้ทันที

ข้อด้อย: ข้อมูลจะยังคงมีอยู่ในขณะที่แอปพลิเคชันหยุดทำงาน

ไฟล์ข้อความ

จุดเด่น: ใช้งานง่าย

ข้อด้อย: ต้องให้แน่ใจว่าการล็อคไฟล์จะไม่เกิดขึ้น จะทำอย่างไรเมื่อพื้นที่ดิสก์หมดบนไดรฟ์บันทึก

บันทึกเหตุการณ์

จุดเด่น: ใช้งานง่าย

ข้อด้อย: บันทึกเหตุการณ์อาจเต็มถ้าไม่ตั้งค่าอย่างถูกต้องหรือบันทึกเก่าอาจหายไปเนื่องจากนโยบายการเก็บรักษา / การลบออก

ฐานข้อมูล

จุดเด่น: ใช้งานง่าย

ข้อด้อย: การรับส่งข้อมูล DB เพิ่มเติม วิธีการบันทึกการสูญเสียของฐานข้อมูลหรือปัญหาฐานข้อมูลอื่น ๆ ?

การส่งข้อความ (MQ)

จุดเด่น: ไฟไหม้และลืม

จุดด้อย: อีกชั้นหนึ่งไปผิด ต้องตั้งค่า


คุณอาจต้องการรวม syslog daemon และปลายทางการบันทึก SNMP
gbjbaanb

@gbjbaanb แน่นอน - ระบบปฏิบัติการบางตัวมีฟังก์ชั่นดังกล่าวในตัว - แน่นอนว่านี่ไม่ใช่รายการที่ครบถ้วนสมบูรณ์ ระบบความพร้อมใช้งานสูงอาจส่ง SMS เมื่อระบบหยุดทำงาน
Robbie Dee

2

บันทึกการตรวจสอบต้องมั่นใจว่าสามารถดำเนินการตรวจสอบย้อนกลับได้เต็มรูปแบบในระยะเวลาที่นานขึ้นเพื่อจุดประสงค์ในการตรวจสอบโดยมีเป้าหมายในการปรับเนื้อหาของฐานข้อมูลของคุณให้สมบูรณ์

ในบางกรณี (เช่นแอปพลิเคชันทางการเงิน) บันทึกเหล่านี้อาจต้องตรวจสอบให้แน่ใจว่าสอดคล้องกับข้อกำหนดทางกฎหมายเช่นการเก็บรักษา (ในบางประเทศเป็นเวลา 10 ปี) หรือไม่มีการเปลี่ยนแปลง เนื่องจากบันทึกเหล่านี้จะต้องปรับเนื้อหาของ db ในระดับแอปพลิเคชันจึงเป็นเรื่องธรรมดาที่จะเก็บไว้ในฐานข้อมูลซึ่งสามารถควบคุมการเข้าถึงเพื่อหลีกเลี่ยงการเปลี่ยนแปลงที่ไม่ได้รับอนุญาต

บันทึกอื่น ๆเช่นบันทึกการตรวจสอบหรือบันทึกความปลอดภัยมักต้องรับมือกับข้อ จำกัด ด้านประสิทธิภาพและปริมาณ โดยทั่วไปสิ่งเหล่านี้เขียนลงไฟล์เพราะเขียนได้เร็วกว่า (ไม่มีค่าใช้จ่ายในการจัดการทรานแซคชัน) ง่ายกว่าในการเก็บถาวรออฟไลน์และรวมเข้ากับเครื่องมือ SIEMการตรวจสอบภายนอกได้ง่ายขึ้น

มันจะถูกตั้งข้อสังเกตว่าในขณะที่บันทึกประเภทนี้สามารถใช้เพื่อแสดงความน่าเชื่อถือของบันทึกการตรวจสอบ (เช่นไม่มีการเข้าถึงที่ไม่ได้รับอนุญาต) แต่โดยทั่วไปจะมีข้อ จำกัด การเก็บรักษาที่สั้นกว่า (เช่นระหว่าง 6 เดือนถึง 2 ปี หากมีข้อ จำกัด ใด ๆ เลย


1

หนึ่งในหลายเหตุผลที่ต้องใช้ db สำหรับการบันทึกการดีบักคือเมื่อคุณไม่มีสิทธิ์เข้าถึงแอปพลิเคชันหรือเว็บเซิร์ฟเวอร์เพื่อดูตัวแสดงเหตุการณ์หรือไฟล์ข้อความ

บันทึกการตรวจสอบจะแตกต่างจากนั้นตรวจแก้จุดบกพร่องบันทึกในบริบทของเว็บแอปพลิเคชันเช่นในบางแอพพลิเคชั่นคุณอาจต้องแสดงให้ผู้ใช้ปลายทางดังนั้นพวกเขาควรจะเข้าไปในฐานข้อมูลเพื่อให้ดึงข้อมูลได้ง่าย

คุณสามารถใช้เครื่องมือ DB สำหรับการกรองและดูได้ง่ายเช่นกัน


การเขียนไปยังไฟล์บันทึกของเซิร์ฟเวอร์ไม่ใช่ตัวเลือกเดียวสำหรับระบบการทำงานพร้อมกันสูง บันทึกเหล่านี้มักจะถูกเขียนไปยังอุปกรณ์ไคลเอนต์จากนั้นผลักให้ผ่านการสนับสนุนในกรณีที่เกิดปัญหา ภาวะพร้อมกันสูงอาจทำให้สิ่งนี้ไม่เหมาะสมสำหรับการเขียนไปยังฐานข้อมูลเดียว
Robbie Dee

@RobbieDee เป็นเช่นนั้นสำหรับเว็บเซิร์ฟเวอร์และเว็บแอพพลิเคชันหรือไม่ นั่นคือสิ่งที่ OP ขอให้ฉันเชื่อ
Muhammad Raja
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.