Это типичная частота записи Firebase - PullRequest
2 голосов
/ 18 октября 2019

Мы пытаемся использовать firebase для передачи пакетов данных в реальном времени (используя firebase C ++ API). Эти всплески могут создавать 60 узлов в секунду в течение нескольких секунд. Если мы выполняем запись, не дожидаясь завершения, в конечном итоге все замедляется, и запись занимает несколько секунд для появления в БД. Если мы выполняем запись только после завершения предыдущей записи, мы получаем намного меньшую скорость записи, чем хотелось бы. Тестирование с использованием RunTransaction и UpdateChildren дает аналогичные результаты. Каждый узел имеет 5 дочерних элементов с короткими строковыми значениями. Эти цифры выглядят типично, или мы делаем что-то не так?

Existing nodes in BD nodes created/second
-------------------- --------------------
          0               13.0
         10                2.4
         25                0.9
         50                0.5
        100                0.2

Общая версия нашего кода:

firebase::database::DatabaseReference new_node = dbroot_.Child(new_node_key);
firebase::Future<firebase::database::DataSnapshot> future;
future = new_node.RunTransaction([](firebase::database::MutableData* mutableData) {
  std::map<std::string, firebase::Variant> children = {
    {"field1", firebase::Variant("value1")},
    {"field2", firebase::Variant("value2")},
    {"field3", firebase::Variant("value3")},
    {"field4", firebase::Variant("value4")},
    {"field5", firebase::Variant("value5")}
  };
  mutableData->set_value(children);
  return firebase::database::kTransactionResultSuccess;
});
future.OnCompletion(...
  // call completion handler
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...