일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스마트컨트렉트프록시
- nest.js설명
- chainlink 설명
- ambiguous function description
- 체인의정석
- rust 기초
- 스마트컨트렉트 함수이름 중복 호출
- 컨트렉트 배포 자동화
- 스마트 컨트렉트 함수이름 중복
- 러스트 기초 학습
- 컨트렉트 동일한 함수이름 호출
- 러스트 기초
- ethers
- SBT표준
- 티스토리챌린지
- ethers type
- multicall
- 스마트컨트렉트 예약어 함수이름 중복
- ethers typescript
- 러스트기초
- ethers v6
- git rebase
- ethers websocket
- 프록시배포구조
- vue기초
- Vue
- 머신러닝기초
- 오블완
- Vue.js
- 스마트컨트렉트테스트
Archives
- Today
- Total
체인의정석
블록체인 데이터 이전 시키기, Mysql 데이터 다른 파일이름에 따른 반복문 쿼리와 시간 측정 본문
728x90
반응형
이더리움 노드에 있는 데이터를 S3에서 DB로 이전 시키기 위하여 시험삼아 몇개의 데이터 파일을 옮기고 걸린 시간도 측정하는 업무를 받았다.
다음과 같이 S3에 있는 파일이 0000000000001 , 0000000000002 라고 되어 있을 때
padStart를 사용하여 숫자를 0으로 채워줘서 파일이름을 만들어 주고 반복문을 돌려서 각 데이터베이스 쿼리에 로드를 시켜줄 수 있다.
또한 performace.now()를 아래와 같이 사용하여 각 실행별로 시간이 얼마나 걸리는지도 측정할 수 있다.
async loadFromS3(_idx: string) {
const sql = `쿼리문 ${_idx}`
var t0 = performance.now()
await this.database.query(sql,null);
var t1 = performance.now()
console.log(`LoadFromS3 took ${t1 - t0} milliseconds for ${_idx}`);
}
async run (initIndex : number , endIndex : number) {
while (initIndex < endIndex) {
const fileIndex: string = String(initIndex).padStart(12, '0');
await this.loadFromS3(fileIndex)
initIndex++;
}
}
그 결과 milliseconds 단위로 실행 시간이 나오게 되었다.
생각보다 시간이 많이 걸리게 되었는데 여러개의 노드를 띄우고 실행을 해도 DB가 병목이기 때문에 더 빨라지진 않을 것이라고 한다.
해당 클라우드에 데이터가 구글 빅쿼리로 검색할 수 있어도 쿼리를 돌리면 그게 다 돈이 나오기 때문에 결국 자체적인 DB로 옮겨서 사용하게 된다. 이렇게 자체 DB를 구축해서 머신러닝을 돌려야 하는 상황에서는 데이터를 적재 시켜놓는게 프로젝트의 큰 병목인것 같다.
728x90
반응형
'개발 > database' 카테고리의 다른 글
Mysql) 테스트를 위한 mysql 데이터베이스 초기화 (0) | 2021.09.09 |
---|---|
Oracle & Oracle DB client 설치 문제 해결 (0) | 2021.08.25 |
ORA-65096: invalid common user or role name (0) | 2021.08.23 |
Oracle DB 테이블 구조와 DBeaver 연결 (0) | 2021.08.20 |
Database Error: DPI-1047: Cannot locate a 64-bit Oracle Client library 오류 해결기 , MAC / Node 환경 (0) | 2021.08.20 |
Comments