crawler_table
Last updated
Last updated
'crawler_table'은 크롤러가 실행될 때 가장 먼저 찾게되는 테이블입니다. 크롤러가 블록체인 정보를 수집할 시점을 정의하고 현재 상태를 기록합니다.
컬럼명 | 설명 |
---|---|
크롤러 내부에서 정보를 수집할 네트워크를 미리 정의한 후(config.js) 크롤러를 실행하면, 해당 네트워크의 엔드포인트 노드에 연결합니다. 연결이 성공적으로 완료되면 크롤러는 가장 처음 'state' 컬럼을 찾아 0(off)이었던 값을 1(on)으로 변경합니다. 이는 크롤러가 엔드포인트 노드와 성공적으로 연결을 마쳤으며 해당 노드를 통해 이후의 본격적인 데이터 수집 로직을 가동하고 있음을 뜻합니다.
크롤러는 'last_crawled' 컬럼의 값을 시작으로 'end' 컬럼의 값에 도달할 때까지 데이터 수집을 진행합니다. 크롤러는 'last_crawled' 컬럼의 값을 무사히 가져오면, 그 즉시 해당 컬럼의 값을 1만큼 증가시키고, 그 값에 해당하는 블록에 대한 데이터 정보를 수집하기 시작합니다. 이는 수십개의 크롤러 프로세스가 같은 블록을 동시에 수집하는 리소스 낭비를 방지하기 위함입니다.즉 '해당 블록넘버까지는 수집이 완료되었다'라기 보다는, 크롤러에게 데이터 수집할 블록넘버를 전달해줄 일종의 길잡이 역할을 하는 컬럼이라고 볼 수 있습니다.실행중인 크롤러를 임의로 정지 > 재실행 했을 때, 미처 수집하지 못한 블록이 있을 경우 해당 컬럼의 숫자를 롤백시킴으로써 수집하지 못하고 지나치는 블록이 없도록 설계되어 있습니다.
'end'는 항상 'last_crawled'보다 높아야 하며, 특정 블록이 아닌 네트워크의 최신 블록까지 쌓기를 원할 경우 해당 컬럼의 값을 '-1'로 설정하면 됩니다.
network
크롤러가 지원하는 4개의 메인넷을 의미합니다. [ethereum, klaytn, polygon, bnb]
crawled_block_number
크롤러가 마지막으로 수집한 블록의 넘버를 의미합니다.
block_endnumber
크롤러가 수집할 블록의 범위 중 가장 마지막 블록을 의미합니다.
network_state
크롤러의 현재 상태를 의미합니다. (0=off, 1=on)