Как эффективно запрашивать данные в большой коллекции Casandra? - PullRequest
2 голосов
/ 11 марта 2019

У меня есть одна большая коллекция Casandra (1 миллион документов), и я хочу запросить данные всей пользовательской таблицы, около 1 миллиона записей. Когда я запускаю следующий запрос, он возвращает только около 10 тыс. Записей.

Не могли бы вы сообщить мне, каков эффективный метод запроса целых документов из коллекции Casandra

Я использую https://www.npmjs.com/package/cassandra-driver npm в качестве драйвера casandra

 Tried 

  const query = 'select * from users';
  db.users.executeQuery(query)
  .then(function (result2) {

  })
  .catch (function (error) {
    reject(error);
  });

1 Ответ

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

Почему вы не можете получить все данные одновременно, потому что существует ограничение на количество элементов, которые вы можете прочитать одновременно, и это понятно.

Глядя на документацию , вы можете использовать методы stream или eachRow. Которые позволяют обрабатывать записи коллекции в несколько итераций.


client.stream(query, parameters, options)
  .on('readable', function () {
    // readable is emitted as soon a row is received and parsed
    let row;
    while (row = this.read()) {
      // process row
    }
  })
  .on('end', function () {
    // emitted when all rows have been retrieved and read
  });

Или

client.eachRow(query, parameters, { prepare: true, autoPage : true }, function(n, row) {
   // Invoked per each row in all the pages
}, callback);
...