1
การออกแบบฐานข้อมูลสำหรับการจัดการ 1 พันล้านแถวและการนับ
เราได้รับข้อมูล GPS แบบเรียลไทม์ในอัตราประมาณ 5,000 ราคา นาที (จากเซิร์ฟเวอร์ TCP 4 แห่ง) แต่ละเซิร์ฟเวอร์ใช้การเชื่อมต่อเดียวเพื่อแทรกข้อมูลและบัฟเฟอร์ข้อมูลระหว่างแทรก ทุกๆ 15 นาทีหรือมากกว่านั้นบริการจะดึงข้อมูลนี้และประมวลผลไปยังการเดินทาง เมื่อสร้างการเดินทางแล้วข้อมูล GPS ที่แท้จริงมักไม่สำคัญนักหากผู้ใช้ต้องการเห็นเส้นทางบนแผนที่ ปัญหาคือดูเหมือนว่าฐานข้อมูลกำลังดิ้นรนเพื่อให้ทันกับอัตราของข้อมูลที่ถูกแทรก บางครั้งเมื่อโหลดเพิ่มขึ้นเวลาใส่เพิ่มสูงขึ้นอย่างกะทันหัน (> 30 วินาที) ซึ่งจะช่วยให้สามารถบัฟเฟอร์ข้อมูลได้มากขึ้นซึ่งจะส่งผลให้เม็ดมีดมีขนาดใหญ่ขึ้น ฉันหวังว่าจะได้รับความคิดเห็นเกี่ยวกับการออกแบบในปัจจุบันและความคิดบางอย่างที่เราต้องปรับปรุงประสิทธิภาพและคำตอบสำหรับคำถามของเรา - และเคล็ดลับอื่น ๆ ที่ผู้คนอาจมี! การออกแบบในปัจจุบัน ขณะนี้ข้อมูลถูกแยกออกเป็นตารางที่แสดงถึงหนึ่งสัปดาห์และข้อมูลที่เก่ากว่าปีถูกเก็บถาวรลงในฐานข้อมูลรอง สิ่งทั้งหมดถูกรวมเข้าด้วยกันในมุมมองที่แก้ไขได้ซึ่งใช้สำหรับแทรกและอ่าน ออกแบบโต๊ะ รหัส (PK, ตัวระบุที่ไม่ซ้ำ) DeviceId (FK, int) PersonId (FK, int) รหัสยานพาหนะ (FK, int) TokenId (FK, int) UtcTime (PK, datetime2 …