끄적거림

[R쓸신잡]DB연결 in R 패키지(RJDBC, RODBC, ROracle) benchmark 본문

R쓸신잡

[R쓸신잡]DB연결 in R 패키지(RJDBC, RODBC, ROracle) benchmark

Signing 2020. 6. 18. 08:00
728x90
반응형

이전 시간들에서 RJDBC, RODBC, ROracle 세 개의 패키지를 다뤄보았다. 그렇다면 왜 굳이 DB를 연결하는 방법이 이렇게나 많은 것일까?

 

내 경험상 pc마다의 환경이 다르므로 각 환경에 최적화된 커넥션 패키지를 만들었다고 생각이 들고, 세 가지의 패키지를 설치해보고 설치가 잘 되는 것을 사용하면 좋을 듯하다.

 

그럼 단적으로 어느 것이 가장 빠르고 좋다고 볼 수 있을까?

 

결론은 알 수 없다.

 

일반적으로 Oracle 환경에서는 ROracle이 가장 빠르다고 알려져 있다. 아래의 URL을 확인해보면 알 수 있듯이 CRUD(Create, Read, Update, Delete) 모든 부분에서 ROracle이 가장 빠르고 파워풀하다고 할 수 있다.

비교 자료: https://www.r-craft.org/r-news/r-to-oracle-database-connectivity-use-roracle-for-both-performance-and-scalability-2018/

 

R to Oracle Database Connectivity: Use ROracle for both Performance and Scalability (2018) – R-Craft

R users have a few choices of how to connect to Oracle Database. The most commonly seen include: RODBC, RJDBC, and ROracle. However, these three packages have significantly different performance and scalability characteristics, which can greatly impact you

www.r-craft.org

하지만, 내가 실제로 세가지 모두를 benchmark해본 결과는 RJDBC가 가장 빠른 것으로 확인되었다.

 

결론적으로, 각 PC 사양에 따라, 그리고 원하는 작업에 따라 각 패키지들의 퍼포먼스는 달라질 수 있으므로 먼저 한 번 실험해보고 사용하는 것을 권장한다.

 

 

또 하나의 팁을 주자면, 각 커넥터가 읽어오는 data type도 다르다는 것이다. DB의 스키마대로 VARCHAR면 VARCHAR, INT면 INT 읽어오는 것은 사실이지만, 그것이 R에서 불러와 R의 데이터 객체로써 존재할 때 변환되는 것으로 생각이 된다.

 가령, 특정 사용자 ID나 코드 같은 경우 자릿수를 맞추기 위해 0을 앞에 붙이는 경우가 많다.("000232" 과 같은 코드를 의미) 이것은 DB에서는 문자형으로 스키마가 지정되어 있을테고 해당 DB 툴에서도 where code = '000232'와 같이 적어줘야 올바르게 인식하고 원하는 결과를 가져올 것이다. 하지만 이를 R에서 불러온다면 경험상 RODBC의 경우 숫자로 인식하고 데이터를 숫자형으로 저장한다.

 

그러므로 여러 패키지에서 원하는 패키지를 고를 때 데이터 정합성과 퍼포먼스 둘 다 고려를 해야한다.

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments