Какую базу выбрать для real-time web приложения на Node.JS?

Создаю приложение в котором постоянно обновляются данные и их нужно быстро выводить на клиент по websocket.
Для этих целей нужна СУБД отвечающая следующим критериям:
  • Желательно быть реляционной и иметь SQL/SQL-подобный синтаксис
  • База должна стоять на собственном linux - сервере
  • Иметь транзакции
  • Иметь репликации (желательно)
  • Драйвер для Node.JS
  • Вопрос задан
  • 3212 просмотров
Решения вопроса 1
mindtester
@mindtester
http://iczin.su/hexagram_48
а real-time с какой нагрузкой? если high-load это по определению не отдельно стоящий сервер.

если полностью фри, много инфы, и богатый функционал - https://www.postgresql.org/ - энтерпрайз уровень, реально противостоит и мс и ораклу

если все в "одном флаконе" - https://www.arangodb.com/ - интереснее тем что на табличной аналитике обещают перфоманс незначительно уступающий postgre, для документной модели скорость на уровне mongdb, бонусом идут - графовая модель (вынос мозга или счастье аналитика), собственный многопоточный форк node в ядре, ну в смысле прямой доступ к данным, триггеры... да почитайте уже сами ))) SQL-like+ACID+кластеризация - нет проблем

если надо очень быстро (- тогда побежали!.. из анекдота) - https://clickhouse.yandex/ очень быстро для SQL-like, но уже нюансики по синтаксису (кому то более приятные будут ибо функции на js похожи), кластеризация, а вот по ACID как то уже не пишут, ну или я не видел.. )))

во всех вариантах сокет/пушинг головняк самого вебприложения а не БД, напомню только что в Аранге есть готовый https://www.arangodb.com/why-arangodb/foxx/

ну из мира !sql вам наверное стоит все таки взглянуть на https://www.rethinkdb.com/
гугл, вики к вашим услугам.. и даже статья на хабре https://sohabr.net/habr/post/321380/

носкульность/документность это и скорость и простота разработки, а для вашего случая еще автоизвещение клиента "из-коробки"... но разгребать носкульные базы после года, другого успешной работы, то еще занятие - общий тренд в том, что обычно взлетевший проект вынужден переписываться на полноценный скуль, не взирая ни на стоимость разработки, ни на стоимость железа/облака

PS почитал каменты выше...

вообще то фишка rethinkdb уникальна, если вы до него уже добрались, вопрос странен...

3х звенное вебприложение вам писать без вариантов

в качестве основы серверной логики под .net вам пойдет SignalR

в чисто линукс - node и npm к вашим услугам

но вместо "с миру по нитке" все таки покурите ArangoDB
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Любая sql.
Даже mssql теперь работает на линуксах. https://www.microsoft.com/ru-ru/sql-server/sql-ser...
Ответ написан
@BorisKorobkov
Web developer
Мне хотелось бы чтобы при внесения изменений в данных, СУБД отправляло эти изменения подписчикам(в приложении), а те в свою очередь могли допустим отправить актуальные данные на клиент.

Вариант 1: триггером БД при изменении данных записывать в отдельную таблицу, из которой каждые N секунд читать данные с помощью Node.js и уже далее рассылать.

Вариант 2: то, приложение, которое модифицирует БД, после commit дублирует эти данные в rabbitmq и так уже подписчики рассылают.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы