วิธีจัดการกับข้อมูลเรียลไทม์จากมุมมองฐานข้อมูล


14

ฉันมีความคิดในใจ แต่ก็ยังคงสร้างความสับสนให้ฉันพื้นที่ฐานข้อมูล

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

Remy Sharpมีตัวอย่างเกี่ยวกับความเรียบง่ายเกี่ยวกับเรื่องนี้

แต่ฉันยังไม่ได้รับส่วนฐานข้อมูลฉันจะเลี้ยงอย่างไรลองนึกภาพ (ใช้ Remy game Tron) ที่ฉันต้องการบันทึกเส้นทางสำหรับผู้ใช้ที่เชื่อมต่อแต่ละรายในฐานข้อมูลและหากลูกค้าต้องการดูว่าเกิดอะไรขึ้นกับล่าช้า 5 วินาทีเขาจะเห็นว่าไม่เพียง 5 วินาทีจนถึงขณะนั้น แต่ความต่อเนื่องในเวลาที่ ...

ฉันจะค้นหา DB เช่นนี้ได้อย่างไร

SELECT x, y FROM run WHERE time >= DATEADD(second, -5, rundate);

เส้นทางที่แนะนำไม่ถูกต้องใช่ไหม

และดึง x นี้ในเวลา x ... นี่ไม่ใช่ฟีดข้อมูลจริงที่ถูกต้อง?

หากใครสามารถช่วยฉันเข้าใจมุมมองฐานข้อมูลฉันจะขอบคุณมาก

คำตอบ:


7

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

คุณสามารถสอบถามข้ามชุดสัญญาณสำหรับจุดที่กำหนดในเวลาแม้ว่าจะไม่ได้เก็บค่าสำหรับจุดนั้น (มันสามารถสอดแทรกระหว่างจุดที่รู้จัก)

อย่างไรก็ตามแต่ละแบบสอบถามจะให้เวลาคุณเพียงจุดเดียว คุณยังต้องสำรวจความคิดเห็น

ดำเนินการต่อในธีมฐานข้อมูลอนุกรมเวลาให้ตรวจสอบopenPDC (ตัวรวบรวมข้อมูลPhasorเป็นข้อมูลเฉพาะของกริดไฟฟ้า แต่เป็นประวัติศาสตร์อนุกรมเวลา) โดยเฉพาะข้อความนี้:

ยูทิลิตี้การเล่นสตรีมมิ่งที่สามารถใช้ในการเล่นซ้ำเหตุการณ์จากการเก็บถาวรประวัติศาสตร์ท้องถิ่นและแยกชุดข้อมูลขนาดใหญ่

นั่นคือสิ่งที่คุณต้องการ ... กลไกการเล่นบางประเภท

ฉันไม่คิดว่าคุณต้องการฐานข้อมูลจริงๆ คุณต้องการพวงของ FIFO


7

เรียลไทม์และฐานข้อมูลไม่มีอะไรเกี่ยวข้องกัน

เมื่อฉันสร้าง radars (และปั๊มความร้อนและระบบควบคุมการจัดส่ง) ฉันได้เรียนรู้ว่าข้อมูลเรียลไทม์อาศัยอยู่ในบัฟเฟอร์และหน่วยความจำที่แชร์

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

แม้ว่าข้อมูลตามเวลาจริงจะไหลผ่านเครือข่ายผ่านทางคิวข้อความเพื่อความน่าเชื่อถือหรือแพ็กเก็ต UDP สำหรับการแจ้งเตือนทันที (แต่อาจเปราะบาง)


4

สะดุดกับคำถามนี้ฉันคิดว่าคุณกำลังคิดเกี่ยวกับความผิดนี้และคำตอบอื่น ๆ ไม่ได้เน้นปัญหา

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

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

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


1

ไซต์นี้มีคุณสมบัติ "เรียลไทม์" คุณจะพบว่าไซต์ที่มีอัตราการเข้าชมสูงมีของเล่นมากมายระหว่างเว็บเซิร์ฟเวอร์และฐานข้อมูล Redis เป็นสิ่งที่คุณสามารถใช้เพื่อเก็บข้อมูลในหน่วยความจำ ฉันแน่ใจว่ามีคนอื่นสำหรับกองต่าง ๆ

ฉันคิดว่า Firebase.com เป็นบริการข้อมูลเรียลไทม์ที่ยอดเยี่ยม (ไม่แน่ใจว่าสิ่งที่พวกเขาทำกับแบ็กเอนด์ฐานข้อมูลจริง แต่เนื่องจากพวกเขาให้บริการฉันไม่แน่ใจว่าฉันสนใจเกินกว่าความอยากรู้อยากเห็น)

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