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

14

У меня есть идея, но она все еще смущает меня область базы данных .

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

У Реми Шарпа есть пример такой простоты.

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

как я могу запросить БД, как это?

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

не рекомендуемый путь, верно?

и потянув это х в х время ... это не реальный поток данных правильно?

Если кто-то может помочь мне понять точку зрения базы данных, я был бы очень признателен.

balexandre
источник

Ответы:

7

Реляционные базы данных оптимизированы для отношений. Базы данных временных рядов оптимизированы для хранения и работы с сериями значений, которые изменяются во времени. В индустриальном мире их называют «историками». Вероятно, самым известным является PI OSI .

Вы можете запрашивать набор сигналов для заданного момента времени, даже если он не сохранял значение для этой конкретной точки (он может интерполировать между известными точками).

Однако каждый запрос дает вам только один момент времени. Вы все еще должны опросить.

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

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

Это действительно то, что вы хотите ... какой-то механизм воспроизведения.

Я не думаю, что вы действительно хотите базу данных. Вы хотите кучу FIFO.

Скотт Уитлок
источник
7

Реальное время и база данных не имеют ничего общего друг с другом.

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

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

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

С. Лотт
источник
4

Наткнувшись на этот вопрос, я думаю, что вы думаете об этом неправильно, а другие ответы не особо подчеркивают проблему.

Удар по вашей базе данных не очень хорошая идея. Хотя я почти уверен, что вы поняли это, другие могут этого не делать. Я помню, как мой друг пытался использовать php-скрипт и функцию Javascript AJAX в цикле для игры в режиме реального времени. Он очень быстро осознал, что производительность снижается по мере того, как к ней присоединяется все больше людей, просто потому, что он выполняет тонну запросов в секунду, что забивает базу данных.

На мой взгляд, между пользователем и базой данных должно быть долго работающее приложение. Пользователи подключаются напрямую к этому приложению и передают всю его информацию в приложение. Это приложение им сразу копирует информацию всем, кто к ней подключен. Это загружает очень легкое приложение, мало трафика и в режиме реального времени.

Если вам необходимо использовать базу данных, приложение должно обработать это в фоновой очереди обновлений. Очевидно, вам нужно выбрать то, что вы сохраняете, так как вы не хотите забивать базу данных стеной небольших кусочков информации (например, текущее положение пользователя в игре), что возвращает вас к той же проблеме, с которой вы начали с. Вместо позиции сохраняйте пройденное расстояние за 5 секунд или другие более значимые биты информации

TheLQ
источник
1

Этот сайт имеет некоторые функции в режиме реального времени. Вы обнаружите, что многие сайты с большим трафиком имеют много игрушек между веб-сервером и базой данных. Redis - это то, что вы можете использовать для хранения данных в памяти. Я уверен, что есть другие для различных стеков.

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

JeffO
источник