Как я могу реализовать однонаправленную синхронизацию структуры данных с несколькими клиентами через веб и нативные приложения? - PullRequest
2 голосов
/ 28 марта 2019

Нам необходимо использовать общую структуру данных для внутреннего сервера, веб-клиентов, собственных приложений iOS и собственных приложений Android.Внутренний сервер написан на NodeJS и использует базу данных Postgres.

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

Мой вопрос: есть ли альтернатива с открытым исходным кодом, которая будет работать «из коробки» и будет соответствовать нашим требованиям более точно, чем полнофункциональная база данных Firebase в реальном времени, которая предложит множество функций, которые нам не нужны или не нужны,

--- Вот предположения и требования ----

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

  2. Можно предположить, что структура данных представляет собой простой список пар ключ-значение, простой массив объектов или полноценную древовидную структуру, подобную объекту json.Мы можем работать со всеми решениями.

  3. Структура данных будет очень ограниченной по размеру, скажем, менее 100 КБ.

  4. Любое обновление структуры данных на сервере должно распространяться на всех клиентов, подписавшихся на структуру данных, почти в реальном времени.

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

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

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

  8. Мы хотим написать как можно меньше кода и предпочитаем решение, которое имеет серверную библиотеку для NodeJS и клиентские библиотеки для веб, родной iOS и родной Android.

  9. Собственные приложения не могут запрашивать разрешения для push-уведомлений.

  10. Он должен работать в любом современном браузере, поддерживающем веб-сокеты или подобное.

1 Ответ

2 голосов
/ 28 марта 2019

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

  1. Firestore - это новая система БД.База данных в реальном времени будет постепенно сокращена.И пожарный магазин превосходит по характеристикам.

  2. Firebase бесплатна для запуска, и до очень высокого уровня, тогда вполне доступна.

  3. Управляется.Я не могу не подчеркнуть важность этого.Это не ваша проблема, чтобы защитить или поддерживать систему, как если бы вы развернули свое собственное решение.

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

  5. «Функции, которые могут вам не понадобиться», - это ОГРОМНАЯ экономия времени и средств, например, управляемая аутентификация с различными провайдерами, мобильные push-уведомления, аналитика, хранение файлов и другие.

  6. У него есть клиенты для Интернета и мобильных устройств, поэтому вы можете разрабатывать нужные клиенты и использовать один и тот же бэкэнд.

Тем не менее,могу я спросить, почему ты спрашиваешь это?Я очень хорошо знаком с Firebase и, возможно, смогу помочь вам с развертыванием.

Cheers

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