У меня есть приведенный ниже код, в котором я получаю результаты задания массового запроса APi, количество записей которого огромно (от 60 000 до 80 000). Я конвертирую его в JSON и буду вставлять в базу данных. Может ли кто-нибудь предложить лучший способ обработки огромного количества данных и их обработки по частям.
request.get( options, function ( error, response, body ) {
if ( error )
{
} else
{
csvJson()
.fromString( response.body )
.then( ( jsonObj ) => {
var a = JSON.stringify( jsonObj );
} )
}
} );
Какой тип генератора вы рекомендуете?
Я не знаю, о каком языке или фреймворке вы говорите, но собственный API REST Salesforce может отображать до 2 КБ записей по запросу, что означает, что для 80 КБ вам нужно сделать 40 запросов, в каждом запросе вы получите следующий идентификатор результата запроса, например разбиение на страницы. Кстати, Salesforce не предназначена для того, чтобы делать много запросов, по крайней мере, бесплатно, они продают 10 000 запросов за 25 долларов в месяц, и даже в профессиональной версии вы получаете только 100 000 запросов / 24 часа. Это означает, что вы должны сделать какой-то контроль кеша на своей стороне в зависимости от того, что вы хотите сделать.
async function* readApi() {
let page = 1;
while (page != null) {
const r = await fetch(`http://target-api.com/stuff?page=${page}`)
const d = await r.json()
page = yield d
}
}
const it = readApi()
it.next() // Init fn with first next call it will get the first page
it.next(2) // Gets the second page, process the data and go to next call
// ..
// ..
it.next(null) // When you are done with getting data call with null
Большие данные, фрагменты — вот ключевые слова, намекающие на использование генераторов. Вы обязательно должны использовать генератор. Но перед этим API должен поддерживать и разбиение на страницы, иначе генераторы тоже могут оказаться бесполезными.