Наиболее подходящая база данных для распределенной платформы с (обычными) временно недоступными первичными (облачными) серверами - PullRequest
0 голосов
/ 16 ноября 2018

В настоящее время я работаю над проектом, который будет иметь два уровня базы данных в своей топологии:

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

  2. Региональные базы данных использования - эта вторичная база данных будет извлекать данные из первичной базы данных.(информация о событии, в первую очередь) и использовать эти данные на локальном сервере, который работает на этом событии.Этот сервер будет использоваться для управления регистрационной информацией (платежи, пользовательские данные и т. Д.), А также для сбора данных в режиме реального времени на этом мероприятии (эти события будут соревновательными событиями, где мы будем собирать данные о времени и оценке).

В большинстве случаев мы должны иметь прямое соединение между локальным сайтом и первичными серверами баз данных и, вероятно, иметь дело с большинством регистрационных данных непосредственно на этом сервере.Однако в некоторых случаях, когда подключение плохое или отсутствует, возможно, нам потребуется извлечь эти данные с основного сервера до начала регистрации события на месте и работы из локальной базы данных.Затем эта локальная база данных будет подключена к локальной сети Wi-Fi, которая может распространять результаты среди участников мероприятия (размер мероприятия варьируется от 50 до 1400 человек - не более 40 человек рассчитываются и рассчитываются на одного человека).После этого события нам нужно будет снова подключиться к основным серверам баз данных для синхронизации с этими данными (передача данных на основные серверы).Система должна быть в состоянии настроить, чтобы данные, извлекаемые с основного сервера, оставались неизменными до тех пор, пока не произойдет повторная синхронизация, поэтому нам не нужно беспокоиться о извлечении каких-либо данных.

Итак.... какую базу данных я использую?

После некоторого поиска кажется, что CouchDB особенно хорош в согласовании многоуровневых систем, подобных этой, и в создании логики для синхронизации баз данных с момента, когда подключение прекращается до перезапуска.Однако, поскольку возможно, что мы будем обновлять данные довольно часто из-за того, как работает наше время и оценка, мне нравится возможность некоторых БД работать с частичной записью документов (Patching, например, в MongoDB).Кажется, что это немного больше проблемы моделирования данных, чтобы убедиться, что данные настроены так, что несколько пользователей могут записывать в соответствующие данные, не разбивая данные (например, обычно два пользователя работают для мониторинга живых данных - один ввод в участникаданные и другой мониторинг этих участников на предмет штрафов).

Я хотел бы использовать что-то, перед чем я могу прикрепить сервер GraphQL, но на данный момент это не является абсолютным требованием.Внешний интерфейс написан на React, а внутренний - Node.js.Я использовал Google Cloud для своей тестовой платформы, но он может перейти на AWS (я еще не посвящен какой-либо конкретной облачной платформе, чтобы выполнять все это).Большинство моих доказательств концептуальных вещей все размещаются через Loopback-сервер, чтобы помочь мне все моделировать.Я тоже смотрел на Neo4j с точки зрения графика и на AWS AppSync (мне нравится, как он выглядит как «состояние на сервере»), но именно этот «локальный» слой дает мне некоторую паузу в отношении окончательного выбора.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...