Мы читаем из локального MongoDB все документы из коллекций, и производительность не очень яркая.
Нам нужно сбросить все данные, не волнуйтесь, почему, просто верьте, что это действительно необходимо, и нет обходного пути.
У нас есть документы 4mio, которые выглядят так:
{
"_id":"4d094f58c96767d7a0099d49",
"exchange":"NASDAQ",
"stock_symbol":"AACC",
"date":"2008-03-07",
"open":8.4,
"high":8.75,
"low":8.08,
"close":8.55,
"volume":275800,
"adj close":8.55
}
И мы теперь используем этот тривиальный код для чтения:
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("localhost");
MongoCollection<Document> collection = database.getCollection("test");
MutableInt count = new MutableInt();
long start = System.currentTimeMillis();
collection.find().forEach((Block<Document>) document -> count.increment() /* actually something more complicated */ );
long start = System.currentTimeMillis();
Мы читаем всю коллекцию за 16 секунд (250 тыс. Строк в секунду), что действительно не впечатляет вообще небольшими документами. Имейте в виду, мы хотим загрузить 800mio строк. Никакой агрегат, сокращение карты или подобное не возможны.
Это так быстро, как MongoDB получает или есть другие способы быстрее загружать документы (другие методы, перемещение Linux, больше ОЗУ, настройки...)?