2016-11-12 2 views
0

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

Я использую nodejs и база данных MongoDB или firebase.

Сценарий описывается, как показано ниже:

  • SYSTEMA с дБА
  • SYSTEMB с DBB

Выполните следующие действия:

  1. SYSTEMA посылает запрос (POST или PUT any) в systemB, body выглядит следующим образом:

     
    { 
        ..... 
        fieldA1: valueA1, 
        fieldA2: valueA2 
        ..... 
    } 
    
  2. затем SYSTEMB необходимо обновить несколько полей (fieldB1, fieldB2) в DBB по данным SYSTEMA, как это:

     
    fieldB1: valueA1 
    
     
    fieldB2: valueA2 
    
  3. после ОБАfieldB1 и fieldB2 являются обновлено успешно, затем выполните больше логики

Я использую async для управления асинхронным процессом. Мой код для реализации этих 3 шага:

async.waterfall([ 
    function (callback) { 
    //get valueA1 of fieldA1 and valueA2 of fieldA2 
    }, 

    async.parallel([ 
    function (callback) { 
     //set valueA1 to fieldB1 
    }, 

    function (callback) { 
     //set valueA2 to fieldB2 
    } 
    ], function (err, result) { 
     //more logic here 
    }) 
], function (err, result) { 
    //more logic here 
}) 

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

Однако async.parallel не может гарантировать, что отказ в обновлении будет откатом или не позволит другим пользователям обновить право? Есть ли способ идеально поддерживать постоянство данных BOTH при обновлении fieldB1 и fieldB2?

ответ

0

Мне сложно сопоставить ваш код с API Firebase. Но то, что вы описываете, звучит как его достижимое, используя transactions или multi-location updates.

Я покрывал эти типы обновлений в углубленном в прошлом в: How to write denormalized data in Firebase

+0

Спасибо так много Франка! ваша часть обновления нескольких местоположений кажется похожей на то, с чем я встречался, и я действительно получаю от этого помощь. –

Смежные вопросы