Як обробляти дані в реальному часі з точки зору бази даних?


14

Я маю на увазі ідею, але вона все ще заплутує мене в області бази даних .

Уявіть, що я хочу показати дані в режимі реального часу , і за допомогою однієї з найновіших технологій браузера ( веб-розетки - навіть за допомогою старих браузерів ) дуже легко показати всім спостерігачам (браузер користувача), що всі роблять.

Ремі Шарп має приклад про простоту цього.

Але я все одно не отримую частину бази даних, як би я годував , давайте уявимо (використовуючи гру Remy Tron), що я хочу зберегти шлях для кожного підключеного користувача у базі даних, і якщо клієнт хоче побачити, що відбувається з затримка 5 сек , то він побачить , що не тільки 5 секунд до того моменту , але продовження під час ...

як я можу запитати подібну БД?

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

чи не рекомендований шлях правильно?

і витягування цього x у x час ... це не справжня подача даних правильна?

Якщо хтось може допомогти мені зрозуміти точку зору Бази даних, я дуже вдячний.

Відповіді:


7

Реляційні бази даних оптимізовані для взаємозв'язків. Бази даних часових рядів оптимізовані для зберігання та роботи з рядом значень, які змінюються в часі. У індустріальному світі вони називають цих "істориками". Напевно, найвідомішим є PI OSI .

Ви можете запитувати набір сигналів для певного моменту часу, навіть якщо він не зберігає значення для конкретної точки (може інтерполювати між відомими точками).

Однак кожен запит дає лише один момент часу. Вам ще доведеться опитуватись.

Продовжуючи тему бази даних часових рядів, перегляньте openPDC (концентратор даних Phasor специфічний для електричної мережі, але це історик часових рядів). Конкретно ця цитата:

утиліта потокового відтворення, яка може використовуватися для відтворення подій з архіву краєзнавців та вилучення великих наборів даних

Це дійсно те, що ви хочете ... якийсь механізм відтворення.

Я не думаю, що ти дуже хочеш базу даних. Ви хочете купу FIFO.


7

Реальний час та база даних не мають нічого спільного.

Коли я робив радари (і теплові насоси, і системи контролю суден), я дізнався, що дані в реальному часі живуть повністю в буферах і спільній пам'яті.

Дані також можуть надсилатися до бази даних для подальшого аналізу та пошуку. Обсяг повинен бути невеликим, тому підсумки або дайджести або зразки даних надходять у постійне сховище.

Фактичні дані в реальному часі проте проходять через мережу через черги повідомлень щодо надійності або UDP-пакети для миттєвого (але, можливо, неміцного) повідомлення.


4

Натрапляючи на це питання, я думаю, що ви думаєте про це неправильно, а інші відповіді насправді не висвітлюють проблему.

Забивання вашої бази даних насправді не є хорошою ідеєю. Хоча я впевнений, що ти це зрозумів, інших, можливо, не було. Пам’ятаю, мій друг намагався використовувати скрипт для php та функцію Javascript AJAX у циклі для напівреального часу. Він дуже швидко зрозумів, що продуктивність погіршується, оскільки приєднується більше людей, просто тому, що він виконував тону запитів в секунду, що забиває базу даних.

Як я це бачу, потрібен тривалий додаток, який сидить між користувачем та базою даних. Користувачі підключаються безпосередньо до цього додатку і передають всю його інформацію додатку. Ця програма їм негайно копіює інформацію для всіх, хто до неї підключився. Це завантажує дуже легкий додаток, мало трафіку та в реальному часі.

Якщо вам потрібно використовувати базу даних, програма повинна потім обробляти це у фоновій черзі оновлень. Очевидно, що вам потрібно вибрати і вибрати те, що ви зберігаєте, оскільки ви не хочете забивати базу даних стінкою з невеликих шматочків інформації (наприклад, поточна позиція користувача в грі), що повертає вас до тієї самої проблеми, яку ви почали з. Замість позиції зберігайте відстань у магазині за 5 секунд або інші більш значущі біти інформації


1

Цей сайт має деякі функції в режимі реального часу. Ви побачите, що на багатьох веб-сайтах з високим трафіком є ​​багато іграшок між веб-сервером та базою даних. Redis - це те, що ви можете використовувати для зберігання даних у пам'яті. Я впевнений, що є інші для різних стеків.

Я думаю, що Firebase.com - це чудовий сервіс даних у режимі реального часу (не впевнений, що вони роблять для фактичного резервного копіювання бази даних, але оскільки вони їх обслуговують, я не впевнений, що мені справді цікаво, окрім цікавості.).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.