Nano Hash - криптовалюты, майнинг, программирование

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


  • Firebase почти все это делает, поэтому вопрос в следующем; почему бы вам просто не использовать базу данных Firebase Realtime или FireStore? 29.03.2019
  • Я нашел это сравнение, которое кажется весьма актуальным для моего вопроса: medium.com/@brenda.clark/ 29.03.2019
  • @Jay Меня беспокоит привязка к поставщику, выходящие из-под контроля будущие расходы и так далее. Кроме того, мне не нужна двунаправленная синхронизация, поэтому я чувствую, что должно существовать радикально более простое решение в виде некоторых простых библиотек, построенных на основе веб-сокетов или поддерживающих HTTP-соединений. 29.03.2019
  • Эта статья пуста во многих заявлениях; говоря, что Firebase сложно ориентироваться, дезорганизована, трудно запрашивать и что ваши данные легко удаляются, не очень точно (удаление данных в три клика может произойти с большинством баз данных), поэтому я бы не стал вдаваться в подробности. (ИМО!). Привязка к поставщику будет проблемой для любой серверной базы данных, которая предоставляет API. Parse - хороший пример. Если приложение создано, все данные обертываются вокруг PFObject, вы как бы заперты в что без серьезного переписывания. Итак, изучите немного FB и посмотрите, как он вам понравится. 29.03.2019

Ответы:


1

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

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

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

  3. Это УПРАВЛЯЕМЫЙ. Я не могу не подчеркнуть важность этого. Это не ваша проблема - защищать или поддерживать систему, как если бы вы развернули собственное решение.

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

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

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

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

Ваше здоровье

28.03.2019
  • Firebase не имеет отношения к Parse, и у них совершенно другой подход, но в целом хороший ответ. 29.03.2019
  • лол, правда, я думал, что это предшественник, но рад, что вам понравился мой ответ: P 29.03.2019
  • Спасибо за ответ @SergioFlores. Мою мотивацию задать вопрос можно рассматривать как комментарий к моему первоначальному вопросу. 29.03.2019
  • @NikolaSchou Я прочитал опубликованное вами сравнение. Во-первых, что это за излишество? Нет такого. Это гибкий инструмент, предназначенный для нормально меняющейся динамики запуска на ранней стадии. Привязка к поставщику? Мммм не совсем так, если и когда вам нужно что-то другое, это потому, что у вас есть деньги, чтобы это произошло. 29.03.2019
  • medium.com/@ saft.industries/ 29.03.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..