2013-06-29 2 views
0

Oracle 클라이언트 또는 인스턴트 클라이언트를 설치할 필요가없는 일부 Oracle 도구를 사용 했으므로 경로를 수정하거나 ODBC 데이터 원본 또는 tnsnames를 설정할 필요가 없습니다 .ora 파일.Oracle 클라이언트 또는 인스턴트 클라이언트를 설치하지 않고 Oracle C++ 연결

이 작업이 어떻게 수행되는지 알고 싶습니다. 예를 들어, oracmd (http://www.withdata.com/oracmd.html)는 추가 클라이언트 도구없이 Oracle에 연결합니다. 그래서 우리는 그것이 가능하다는 것을 압니다.

기본적으로 SQL 파일을 읽고 IP 주소, 포트 및 SID/서비스 이름을 인수로 사용하여 데이터를 반환 할 수있는 R 패키지를 만들고 싶습니다. 필요한 유일한 설치는 R 패키지를 설치하는 것입니다. 패키지를 배포하려면 무료/오픈 소스 라이센스를 선호합니다.

클라이언트없이 JDBC를 사용하여이 작업을 수행하는 R 패키지를 빌드 할 수 있었지만 1000 행을 넘는 데이터 세트의 경우 성능이 매우 좋지 않았습니다. 나는 JDBC보다 나은 것을 찾고있다.

+0

이러한 응용 프로그램은 대부분 Oracle DLL과 함께 제공됩니다. –

+0

TNS를 구현해야합니다 :-) –

+0

적어도 Linux/Unix에서는 libclntst.a를 정적으로 연결할 수 있습니다. – ibre5041

답변

3

클라이언트 소프트웨어를 포함 할 필요가 없도록 Oracle 네트워크 프로토콜을 리버스 엔지니어링 한 소수의 회사가 있습니다. 일반적으로 이들은 유선 프로토콜 ODBC 드라이버와 같은 것들을 구현하는 회사입니다. 오라클 네트워크 프로토콜은 문서화되어 있지 않고 릴리스에 따라 변경 될 수 있기 때문에 일반적으로 사소한 약점이 아닙니다. 수 백년이 아니라해도 수십 년 동안 노력하고 있습니다.

사용자가 링크하는 것과 같은 대부분의 응용 프로그램은 백그라운드에서 JDBC를 사용하며 씬 JDBC 드라이버를 포함하거나 설치 프로세스의 일부로 투명하게 Instant Client를 설치합니다. Instant Client의 요점은 응용 프로그램 개발자가 응용 프로그램을 함께 묶어서 응용 프로그램 설치가 Oracle 클라이언트 소프트웨어를 설정할 수 있도록하는 것이 었습니다.

성능 문제로 인해 JDBC를 포기할 필요가 있다는 전제와 C++를 사용하면 성능이 크게 향상 될 수 있다고 생각됩니다. 올바르게 수행되면 JDBC 응용 프로그램은 C++ 응용 프로그램과 마찬가지로 빠르게 데이터를 가져와야합니다. 병목 현상은 쿼리를 실행하는 데이터베이스의 기능과 데이터를 전송하는 네트워크의 기능이되어야합니다. 매우 저조한 퍼포먼스를 만들어내는 순진한 JDBC 코드를 작성하는 것은 가능하지만 API 문제보다 애플리케이션 프로그래밍 문제가 더 중요합니다.

관련 문제