본문 바로가기
기타

[Database] JDBC / ODBC ?

by 개복취 2024. 2. 16.

 

  1. 배경
  2. JDBC? ODBC? 공통점
  3. 차이점

배경

AWS Redshift 커넥터

df_user_session_channel = spark.read \
	.format("jdbc") \
	.option("driver", "com.amazon.redshift.jdbc42.Driver") \
	.option("url", "jdbc:redshift://HOST:PORT/DB?user=ID&password=PASSWORD") \ 
	.option("dbtable", "raw_data.user_session_channel") \
	.load()

 

 

세션채널 읽어오는 과정중 Redshift를 JDBC드라이버로 연결하면서 의문이 생겼었다.

 

그리고, SparkSQL 을 사용하면서 파일로 저장하는 것보다 Spark 테이블로 처리하는 것의 장점으로 JDBC/ODBC등으로 Spark을 연결해서 접근할 수 있고 Tableau, PowerBI등을 함께 사용할 수 있다고 해서 알아보게 되었다.

 

JDBC? ODBC? (Java / Open Database Connectivity)

둘 다 애플리케이션을 데이터베이스에 연결하는 데 사용되는 API 표준이다. 

ODBC는 일반적인 API 표준이므로 다양한 프로그래밍 언어에서 사용할 수 있지만 JDBC는 Java 전용이며 데이터베이스 액세스를 위한 Java 기반 인터페이스를 제공한다.

 

 

차이점

차이점을 표로 나타내보면 아래와 같다.

ODBC JDBC
ODBC는 개방형 데이터베이스 연결을 의미함. JDBC는 Java 데이터베이스 연결을 나타냄.
1992년 마이크로소프트에서 소개됨. 1997년 SUN Micro Systems에서 출시됨.
C , C++ , Java 등과 같은 모든 언어에 ODBC를 사용할 수 있다. JDBC는 Java 언어에만 사용할 수 있음.
Windows 플랫폼에서만 ODBC를 사용할 수 있다. 모든 플랫폼에서 JDBC를 사용할 수 있음.
대부분 ODBC 드라이버는 C, C++ 등의 기본 언어로 개발된다. JDBC는 Java 데이터베이스 연결을 나타냄.
Java 애플리케이션의 경우 내부 변환으로 인해 성능이 저하되고 애플리케이션이 플랫폼에 종속되므로 ODBC를 사용하지 않는 것이 좋다. Java 애플리케이션의 경우 성능 및 플랫폼 종속 문제가 없으므로 JDBC를 사용하는 것이 좋음.
ODBC는 절차적임. JDBC는 객체 지향적임.

 

 

ODBC는 JDBC에 비해 다루기가 쉽지않고 복잡하고 보안적인 측면에서도 JDBC는 유저가 시스템에 직접 시스템 설정에 닿을 수 없기 때문에 ODBC에 비해 안전하다고 한다. 

 

또한, ODBC는 커뮤니티와 사용자에 대한 지원에 대해 (JDBC에 비해 비용이 많이 들지만) 더 넓은 범위의 커뮤니티와 유료 지원을 제공한다. 일반적으로 모든 ODBC 버전은 장기적인 고객 지원을 제공하는 데 사용된다고 한다.

 


https://www.geeksforgeeks.org/difference-odbc-jdbc/

https://medium.com/@suffyan.asad1/spark-parallelization-of-reading-data-from-jdbc-sources-e8b35e94cb82

https://www.educba.com/jdbc-vs-odbc/

https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html