Bagaimana menangani Data Waktu Nyata dari perspektif basis data?

14

Saya punya ide dalam pikiran, tetapi masih membingungkan saya area database .

Bayangkan saya ingin menunjukkan data waktu nyata , dan menggunakan salah satu teknologi browser terbaru ( soket web - bahkan menggunakan browser lama ), sangat mudah untuk menunjukkan kepada semua yang dapat diamati (browser pengguna) apa yang dilakukan semua orang.

Remy Sharp memiliki contoh tentang kesederhanaan tentang ini.

Tapi saya masih belum mendapatkan bagian basis data, bagaimana saya memberi makan , mari bayangkan (menggunakan Remy game Tron) bahwa saya ingin menyimpan jalur untuk setiap pengguna yang terhubung dalam database dan jika klien ingin melihat apa yang terjadi dengan a delay 5 detik , ia akan melihat bahwa, tidak hanya 5 detik sampai saat itu tetapi kelanjutan dalam waktu ...

bagaimana saya bisa meminta DB seperti itu?

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

bukan jalan yang disarankan kan?

dan menarik x ini dalam waktu x ... ini bukan feed data nyata yang benar?

Jika seseorang dapat membantu saya memahami sudut pandang Database, saya akan sangat menghargai.

balexandre
sumber

Jawaban:

7

Database relasional dioptimalkan untuk hubungan. Database Time Series dioptimalkan untuk menyimpan dan bekerja dengan serangkaian nilai yang berubah waktu. Di dunia industri, mereka menyebutnya "Sejarawan". Mungkin yang paling terkenal adalah OSI's PI .

Anda dapat melakukan kueri di set sinyal untuk suatu titik waktu tertentu, bahkan jika itu tidak menyimpan nilai untuk titik tertentu (itu dapat menginterpolasi antara titik-titik yang diketahui).

Namun, setiap kueri hanya memberi Anda satu titik waktu. Anda masih harus polling.

Melanjutkan pada tema basis data deret waktu, periksa openPDC ( Phasor Data Concentrator khusus untuk jaringan listrik, tetapi ini adalah sejarawan deret waktu). Secara khusus, kutipan ini:

utilitas pemutaran streaming yang dapat digunakan untuk memutar ulang acara dari arsip sejarawan lokal dan mengekstrak dataset besar

Itu benar-benar yang Anda inginkan ... semacam mekanisme pemutaran.

Saya tidak berpikir Anda benar-benar menginginkan database. Anda ingin banyak FIFO.

Scott Whitlock
sumber
7

Real Time dan Database tidak ada hubungannya satu sama lain.

Ketika saya membuat radar (dan pompa panas dan sistem kontrol kapal) saya belajar bahwa data real time hidup sepenuhnya dalam buffer dan memori bersama.

Data juga dapat dikirim ke database untuk analisis dan pengambilan selanjutnya. Volume harus kecil, jadi itu ringkasan atau intisari atau sampel data pergi ke penyimpanan persisten.

Namun, data real-time aktual mengalir melalui jaringan melalui antrian pesan untuk keandalan atau paket UDP untuk pemberitahuan instan (tetapi mungkin rapuh).

S.Lott
sumber
4

Tersandung pada pertanyaan ini saya pikir Anda memikirkan hal ini salah, dan jawaban lain tidak terlalu menyoroti masalah.

Memalu database Anda sebenarnya bukan ide yang bagus. Meskipun saya cukup yakin Anda menyadari hal ini, orang lain mungkin tidak. Saya ingat seorang teman saya mencoba menggunakan skrip php dan fungsi Javascript AJAX dalam satu lingkaran untuk permainan waktu semi-real. Dia dengan cepat menyadari bahwa kinerja menurun ketika lebih banyak orang bergabung, hanya karena dia mengeksekusi satu ton pertanyaan per detik yang memalu database.

Cara saya melihatnya, perlu ada aplikasi yang berjalan lama yang berada di antara pengguna dan database. Pengguna terhubung langsung ke aplikasi ini dan meneruskan semua informasinya ke aplikasi. Aplikasi ini mereka segera menyalin informasi kepada semua orang yang terhubung dengannya. Ini dimuat ke aplikasi yang sangat ringan, lalu lintas kecil, dan waktu yang sangat nyata.

Jika Anda harus menggunakan database, aplikasi kemudian harus menangani ini dalam antrian latar belakang pembaruan. Jelas Anda harus memilih dan memilih apa yang Anda simpan karena Anda tidak ingin memalu basis data dengan dinding informasi kecil (seperti posisi pengguna saat ini dalam permainan), yang membawa Anda kembali ke masalah yang sama dengan yang Anda mulai. dengan. Alih-alih posisi, jarak toko menempuh lebih dari 5 detik atau informasi lain yang lebih bermakna

TheLQ
sumber
1

Situs ini memiliki beberapa fitur "waktu nyata". Anda akan menemukan bahwa banyak situs dengan lalu lintas tinggi memiliki banyak mainan antara server web dan database. Redis adalah sesuatu yang dapat Anda gunakan untuk menyimpan data dalam memori. Saya yakin ada yang lain untuk berbagai tumpukan.

Saya pikir Firebase.com adalah layanan data real-time yang hebat (Tidak yakin apa yang mereka lakukan untuk database backend yang sebenarnya, tetapi karena mereka menyajikannya, saya tidak yakin saya benar-benar peduli dengan keingintahuan.).

JeffO
sumber