ODBC는 Microsoft 주도로 개발된 범용 데이터베이스 접속 API 표준으로, C 기반의 API 집합을 제공하여 애플리케이션이 다양한 관계형 데이터베이스(RDBMS)와 독립적으로 통신할 수 있도록 한다. ODBC는 데이터 소스의 물리적 구조나 벤더의 특수성으로부터 애플리케이션을 추상화하며, ANSI SQL을 기반으로 통합된 데이터 접근 방식을 제공한다.
ODBC는 추상화 계층과 드라이버 계층의 분리된 구조를 통해 데이터 접근의 일관성과 확장성을 보장한다.
구성 요소 | 설명 |
---|---|
ODBC API | 애플리케이션이 사용하는 표준 함수 집합 (예: SQLConnect , SQLExecDirect ) |
ODBC Driver Manager | 애플리케이션과 드라이버 사이에서 중개자 역할 수행. 다중 드라이버 지원, 로딩 및 에러 처리 |
ODBC Driver | 특정 DBMS에 대한 실제 연결을 수행. DBMS에 맞는 프로토콜 변환, SQL 해석 |
Data Source (DSN) | 데이터베이스 연결 정보 저장. 사용자 DSN, 시스템 DSN 등으로 분류됨 |
[Application]
|
[ODBC API]
|
[ODBC Driver Manager]
|
[ODBC Driver (vendor-specific)]
|
[Database]
ODBC는 SQL 수준에서 벤더 종속성을 제거함으로써, 애플리케이션의 이식성과 유지보수성을 높인다. 동일 API를 통해 Oracle, SQL Server, MySQL 등 다양한 DBMS에 접근 가능.
ANSI SQL을 기반으로 하며, 쿼리 처리 과정에서 문법 호환성 변환을 수행해 다양한 DBMS 간 이질성을 해소한다.
초기에는 Windows 중심이었으나 UNIX/Linux 등에도 포팅되었으며, iODBC, unixODBC 등의 오픈소스 구현을 통해 이식성 확보.
항목 | ODBC | JDBC |
---|---|---|
언어 기반 | C/C++ 중심 | Java 기반 |
플랫폼 종속성 | Windows 중심 (iODBC로 확장) | 완전한 플랫폼 독립 |
드라이버 관리 | Driver Manager 필요 | DriverManager API로 간결화 |
성능 | 중간 계층 존재로 다소 저하 | Type 4 JDBC는 Native 수준 |
사용 분야 | 레거시 시스템, C/C++ 기반 앱 | Java 기반 현대 웹/모바일 앱 |
※ Java에서는
JDBC-ODBC Bridge
가 있었으나, Java 8 이후 공식 제거됨 (Type 1 JDBC 드라이버)
ODBC 3.x부터는 Connection Pool 기능이 도입되어 재사용 가능한 연결 객체를 제공함으로써 응답속도 개선
글로벌화를 위한 Unicode 및 Wide-character API (SQLWCHAR
) 지원
ODBC는 점차 REST API, OData, GraphQL 등으로 대체되지만, BI 도구 (Excel, Power BI, Tableau) 및 ETL 툴에서 여전히 핵심 기술로 사용됨
ODBC는 벤더 독립성과 플랫폼 추상화를 바탕으로 한 범용 데이터베이스 접속 기술의 기초 인프라로, 그 구조적 단순성과 범용성 덕분에 수십 년간 다양한 시스템 통합에 사용되어 왔다. 현대 애플리케이션 아키텍처에서는 직접 사용 빈도는 감소하고 있지만, 데이터 통합, ETL, BI 분석 영역에서는 여전히 전략적으로 중요한 기술로 간주되며, 특히 레거시 시스템 현대화 또는 이기종 연동 환경에서는 중요한 선택지 중 하나다.