JDBC와 ODBC. 둘 다 들어보신적이 있으신가요?
저는 Java만 배워서인지 JDBC라는 용어만 들어본 적이 있었답니다.
그래서 JDBC, ODBC란 무엇인지? 와 그 둘의 차이점에 대해서 알아보도록 하겠습니다~
먼저 익숙한 JDBC부터!
1) JDBC (Java Database Connectivity)
Java에서 DB에 접근하여 데이터 조회, 삽입, 수정, 삭제를 가능케하는 것을 말합니다.
다시말해 Java가 Database를 사용할 수 있도록 연결해주는 응용프로그램 인터페이스인 Java API 입니다.
이 응용프로그램 인터페이스는 데이터베이스 관리 시스템에 넘겨질 SQL 형태의 데이터베이스 접근요구 문장을,
각 시스템에 맞도록 바꾸는 역할을 합니다. API는 동적으로 올바른 Java 패키지를 로드하고, JDBC 드라이버 매니저에 등록하기 위한
메커니즘을 제공합니다. 드라이버 매니저가, JDBC connection을 생성하기 위한 connection factory로서 사용됩니다.
JDBC connection는 명령문을 만들고, 실행하는 것을 지원합니다.
명령문은 SQL의 CREATE, INSERT, UPDATE, DELETE와 같은 갱신을 위한 명령문, SELECT와 같은 검색을 위한 명령문 등을 말합니다.
갱신을 위한 명령문은, 명령문에 의해 영향을 받은 데이터베이스 열의 개수를 반환하게 됩니다. 이외에는 반환하지 않습니다.
검색을 위한 명령문은 결과값을 담은 Resultset을 반환하게 됩니다.
2) ODBC (Open DataBase Connectivity)
ODBC는 데이터베이스를 액세스하기 위한 표준 개방형 응용 프로그램 인터페이스를 말합니다.
마이크로소프트사에 의해 만들어진, 데이터베이스에 접근하기 위한 소프트웨어의 표준 규격으로,
프로그램 내에 ODBC 문장을 사용하면 MS-Access, dBase, DB2, Excel, Text 등의 여러 종류의 데이터베이스에 접근할 수 있습니다.
각 데이터베이스의 차이는 ODBC 드라이버에 의해서 흡수되기 때문에 유저는 ODBC에 정해진 순서에 따라서 프로그램을 쓰면
접속처의 데이터베이스가 어떠한 데이터베이스 관리 시스템에 관리되고 있는지 의식할 필요 없이 접근할 수 있다는 것이 특징입니다.
이를 위해서는 ODBC 소프트웨어 외에, 액세스할 각 데이터베이스마다 별도의 모듈이나 드라이버가 필요합니다.
위에서 설명한 내용에 대해서 ODBC의 구조를 도식화한 모습입니다.
ODBC는 Open Group의 표준 SQL Call-Level 인터페이스에 근간을 두고 밀접하게 맞추어져있습니다.
ODBC는 프로그램들이 데이터베이스의 독점적인 인터페이스에 대해 알지 못하더라도, 데이터베이스 액세스를 위한 SQL 요청을
사용할 수 있게 하고, SQL 요청을 받아서 그것을 개개의 데이터베이스 시스템들이 이해할 수 있는 요청으로 변환하는 역할을 합니다.
ODBC는 SQL Acess Group에 의해 만들어졌으며, 1992년 9월에 처음 출시되었습니다.
처음엔 마이크로소프트가 윈도우용 ODBC 제품을 공급했지만, 이제는 유닉스, OS/2 및 매킨토시 등을 위한 다양한 버전이 생겨났다네요.
새로운 분산객체 아키텍처인 CORBA에서, POS(Persistent Object Service)를 지원하는데
이는 Call-Level 인터페이스와 ODBC 둘 모두를 포함하는 수퍼셋입니다.
그렇다면 위에서 설명한 JDBC와 ODBC. 이 둘의 차이점 및 특이한 점은 무엇일까요?
|
ODBC |
JDBC |
사용목적 |
응용프로그램에서 데이터에 접근할 때 |
Java에서 DataBase와 연결하여 작업하기 위해서 |
DBMS 종류에 따라 |
접속처의 데이터베이스가 어떠한 DBMS에 의해 관리되고 있는지 의식할 필요가 없다. |
Java와 연동되는 DBMS에 따라 그에 맞는 JDBC를 설치할 필요가 있다. |
- 자바 언어와 JDBC 응용 프로그램 인터페이스를 이용하여 프로그램을 작성할 때, 데이터베이스들에 대한 접근성이 높은
ODBC로 DB에 접근하기 위해서는, 일종의 브리지 프로그램인 JDBC-ODBC가 포함되어 있는 제품을 이용할 수 있다.
즉, ODBC로 연결하는 중간의 인터페이스 역할을 JDBC가 하게 되는 것입니다.
- JDBC는 COBRA, DJB 또는 다른 서버 개체에서의 직접 조작을 위한 것과 EJB의 지속성을 위해
SQL을 기반으로 한 데이터베이스의 접근을 허용합니다.
정리를 하며 느낀 것이지만, 약어에 담긴 뜻을 안다는 건 언제나 중요하군요.
2011.03 오혜영 작성
'DataBase' 카테고리의 다른 글
[NoSQL] 키-값 데이터베이스 (0) | 2019.04.16 |
---|---|
[NoSQL] 기본 개념 정리 (0) | 2018.11.28 |