ฉันควรแคชข้อมูลหรือกดฐานข้อมูลหรือไม่


10

ฉันไม่ได้ทำงานกับกลไกการแคชใด ๆ และสงสัยว่าตัวเลือกของฉันคืออะไรในโลก. net สำหรับสถานการณ์ต่อไปนี้

โดยทั่วไปเรามีบริการ REST ซึ่งผู้ใช้ผ่าน ID ของหมวดหมู่ (think folder) และหมวดหมู่นี้อาจมีหมวดหมู่ย่อยมากมายและแต่ละหมวดย่อยอาจมี 1,000 คอนเทนเนอร์สื่อ (คิดว่าวัตถุอ้างอิงไฟล์) ซึ่งมีข้อมูลเกี่ยวกับ ไฟล์ที่อาจอยู่บนเซิร์ฟเวอร์ NAS หรือ SAN (ไฟล์เป็นวิดีโอในกรณีนี้) ความสัมพันธ์ระหว่างหมวดหมู่เหล่านี้ถูกเก็บไว้ในฐานข้อมูลพร้อมกับกฎการอนุญาตและข้อมูลเมตาเกี่ยวกับหมวดย่อย

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

จำนวนผู้ใช้สามารถเติบโตเป็น 1000 และหมวดหมู่ย่อยและวิดีโออาจอยู่ในช่วง 10,000 เมื่อระบบเติบโต

คำถามคือเราควรดำเนินการตามที่มันทำงานอยู่ในขณะที่แต่ละคำขอกระทบฐานข้อมูลหรือเราควรคิดถึงการแคชข้อมูลหรือไม่

เรากำลังใช้ IIS 6/7 และ Asp.net


4
คุณสร้างโปรไฟล์ระบบของคุณภายใต้ภาระงานจริงหรือไม่? สามารถแคชข้อมูลได้หรือไม่ มันจะสมเหตุสมผลหรือไม่

คำตอบ:


13

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

ต่อไปคุณต้องรู้คำตอบสำหรับสิ่งต่อไปนี้:

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

สิ่งที่น่าสนใจคือการใช้ฐานข้อมูลคุณกำลังแคชข้อมูลทางเทคนิคอยู่แล้ว นั่นคือสิ่งที่ฐานข้อมูลทำ R & D จำนวนมากเข้าสู่การสร้างฐานข้อมูลให้เร็วที่สุดในการดึงข้อมูล มันใช้แคชหน่วยความจำของตัวเองสำหรับข้อมูลที่ใช้บ่อยเช่น

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

หากคุณไม่ได้พบกับการชะลอตัวใด ๆ ในปัจจุบันฉันเพียงแค่พูดว่า "ไม่ไม่จำเป็นต้องเปลี่ยน"

มันเป็นหัวข้อใหญ่มาก แคชมีแนวโน้มที่จะทำได้ดีมากเมื่อข้อมูลต้องการการกระจายทางภูมิศาสตร์ แต่มีค่าใช้จ่ายจำนวนมากในแง่ของการจัดการ

ฉันกำลังทำโครงการในขณะที่ฉันตัดสินใจแบบเดียวกันทุกประการ

วิธีแก้ปัญหาของฉันคือการใช้ฐานข้อมูลเท่านั้นและกดมันมากด้วยคำขอการสำรวจจากลูกค้าแต่ละราย ฟังนะที่รัก แต่มันมีขนาด (ในการทดสอบ) มากกว่าที่ฉันต้องการรหัสนั้นง่ายมาก

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


ขอบคุณเอียน ในขั้นตอนนี้เรามีฐานข้อมูล แต่เป็นคำถามทางการศึกษาเกี่ยวกับสิ่งที่ต้องระวัง
JD01

18

มีข้อมูลไม่เพียงพอจริง ๆ ตามความเห็นของThorbjørn

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

ดังนั้นหากไม่มีข้อมูลที่ระบุว่าคุณต้องการแคชจริงๆอย่าแคช

[กฎทั่วไปของการปรับให้เหมาะสม: หากคุณต้องการถามว่าฉันควรทำอะไรคำตอบคือไม่] *
* มันจะเป็นคำสั่งไม่ใช่คำถามในสถานที่ส่วนใหญ่ที่คำตอบคือใช่


รักกฎทั่วไปดีกล่าวว่า :)
เอียน

@ dan-mcgrath เป็นความคิดที่ดีหรือไม่ที่จะแคชรายการถ้าฉันจะเข้าถึงแต่ละรายการอย่างถูกต้อง 2 ครั้งภายในระยะเวลา 5 นาทีและไม่เคยทำหลังจากนั้นหรือไม่?
nishantbhardwaj2002
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.