Как записывать в Highload блоки огромное количество записей за раз?
Есть стороннее апи, по которому приходят логи транзакций за последние 3 месяца. Количество строк порядка 50 000 строк. Каждый день необходимо по крону получать эти данные и записывать в highload блоки. У элемента прилетающих данных есть уникальный ID. Можно ли как-то сразу записывать элемент как новый или апдейтить старый в highload блоках без того, чтобы выгружать все элементы и сравнивать циклами? Можно ли задать вручную ID при создании элемента highload блока, чтобы они были одинаковыми (у апи и у highload блока)? И потом легко по этому айдишнику апдейтить
В Битриксе в последних версиях в классе DataManager (через который работают хайлоады) появились методы addMulti и updateMulti. Я сам ими не пользовался, только видел в исходниках, и не уверен что это именно то, что вам надо (поэтому и не пишу в ответы). Попробуйте посмотреть их.
smilingcheater, А разве можно обращаться к элементу по этому XML_ID (UF_XML_ID)? Скажу честно, к битре не подходил лет 5. Но вот встала задача такая. Раньше был гетлист, и к элементам по их ID обращались. Соответственно весь crud был на этих айдишниках.
Дмитрий, конечно можно. XML_ID он потому и придуман, чтобы с ним работать по внешним Id, а не внутренним. С помощью Bitrix d7 (быстрее отработает с меньшими затратами ресурсов) и того же getList() проверяете есть ли запись с таким XML_ID, если нету, создаете, если есть, обновляете. Но при таких кол-вах записей все-равно лучше организовать и обновлять/создавать пакетами, а не сразу 50к записей. Ну или на крайний случай, сразу в базу писать, в обход АПИ Битрикса.