본문 바로가기
카테고리 없음

[QuakePot] 1차 데이터 수집 결과

by 리나그(ReenAG) 2025. 12. 21.
728x90
반응형

 어젠 몸살 기운이 있었지만, 다행히 수집기를 아파지기 전에 완성하고 돌려놓고 있었기 때문에 나름 유의미한 양의 데이터를 수집 했다. 대충 로그를 봐도 이러하다.

 

status = 해당 윈도우의 수집 상황

start_timestamp = 해당 윈도우의 시작 timestamp

end_timestamp = 해당 윈도우의 끝 timestamp

window_millis = window단위(millis, 현재는 20초로 고정)

first_timestamp = 수집된 실제 데이터의 첫 timestamp

last_timestamp = 수집된 실제 데이터의 마지막 timestamp

tx_count = transaction 갯수

 

순서대로,

status, start_timestamp, end_timestamp, window_millis, first_timestamp, last_timestamp, size(blob의 byte크기), tx_count

 약 6일 반정도, 거의 일주일 분량에 달하는 Tron 상의 테더의 움직임을 알 수있는 데이터가 확보 되었다. 저장 형식은 SQLite3, gzip을 이용해서 주요한 데이터는 json에서 압축하여 보관 되어 있다. 인덱싱은 딱히 신경 쓰지 않았다. 어짜피 flattening 코드를 만들어야하는데, 각종 edge-case(예외 상황)에 대응 하려면 이정도의 데이터는 있어야 실전에서 잘 쓸 수 있을 것이다.

 

 현재 수집기는 Single-Thread, async기술 없이 구현되어 있다. 그럼에도 일단 할당된 free-tier의 절반 정도는 소비 가능하긴 하다. 하지만 당연히 반대로 이야기하면 잘만 하면 지금의 2배 속도로, 아니 가능하다면 수집 속도를 자유롭게 늘릴 수 있어야 할 것이다...

 

window의 현재 제일 첫 ts

window의 현재 마지막 ts

일수는 대략 이정도

 

 throughput ~ 4day data per day 정도 일 것이다. 아주 엄밀하진 않겠다만... 일단 그렇다고 하자. 보면 대부분은 잘 수집 되었지만 가끔 1000건에서 막힌 경우도 있다. 이런 경우는 재수집이 필요한데, 중간중간에 로그를 살펴보아서 이런 경우가 어떤 경우에 일어나는지는 알고 있다.

 

지금 로직에서는 end_time = last_time일때 edge-case처리가 되어 있지 않다. 이를 해결해야한다.

 

-- 추가 검증

SELECT status, start_time, end_time, window_millis, first_timestamp, last_timestamp, tx_count  
FROM RawTronGridUsdtTransfer
WHERE status = 'partial' AND end_time != last_timestamp;

 

해당 query의 건수가 0건 임을 판명, 실제로 가설이 맞다는 것으로 보인다. chatgpt의 제안도 있는데, end_time을 exclusive하게 바꾸라는 이야기가 있어서 그렇게 구현을 바꿀 예정이다.

728x90
반응형