У нас есть база данных Azure Cosmos со следующими характеристиками:
О 2М документах.
Каждый документ около 30 КБ.
Когда мы запрашиваем базу данных cosmos с использованием Java mongo API (org.mongodb:mongodb-driver-sync:3.9.1
)
Извлечение 4000 документов с использованием ключа шарда (должно быть самым быстрым, насколько я понимаю) занимает более 2минут.
Это общее?
Должен ли я ожидать получить это время от API?
Пример кода:
collection = <... init the collection>
final Bson filters = Filters.or(Filters.eq("shardKey", "key1"), Filters.eq("shardKey", "key2"));
long pre = System.currentTimeMillis();
logger.info("filter {}", filters);
List<Document> documents = new ArrayList<>();
FindIterable<Document> iterator = collection.find(filters);
try (MongoCursor<Document> cursor = iterator.iterator()) {
while (cursor.hasNext()) {
Document e = cursor.next();
documents.add(e);
}
}
logger.info("Got {}, time: {}", documents.size(), (System.currentTimeMillis() - pre));
Похоже, что клиент извлекает документы партиями из примерно 100 элементов.Есть ли способ увеличить размер пакета?
При использовании портала Azure интерфейс портала разбивает вызов на страницы и извлекает только первые 100 документов, а затем необходимо нажать «принести больше», чтобы получить большедокументы.Похоже, что для интерфейса Azure также требуется около 2 секунд для извлечения каждой партии
Какие у меня есть варианты, чтобы она работала быстрее?Спасибо