임베디드 SQL
1. 개요
임베디드 SQL은 프로그래밍 언어 내에 SQL 문을 포함시켜 데이터베이스와 상호 작용하는 기술이다. 알티베이스, IBM Db2, IBM Informix, Mimer SQL, 오라클 데이터베이스, PostgreSQL, SAP Sybase 등 다양한 데이터베이스 시스템에서 C, C++, COBOL, Fortran 등의 언어를 위한 임베디드 SQL을 지원한다. MySQL은 임베디드 SQL을 지원하지 않는다. 또한 LINQ-to-SQL, JPA, jOOQ와 같은 도메인 특정 언어를 통해 SQL과 유사한 언어를 .NET, 자바에 포함시키기도 한다.
| 종류 | 데이터베이스 관리 시스템 |
|---|---|
| 용도 | 응용 프로그램에 내장된 SQL문 사용 |
| 관련 표준 | SQL |
| 개념 | 응용 프로그램 소스 코드에 삽입된 SQL문 |
|---|---|
| 사용 언어 | C Java COBOL Pascal 포트란 어셈블리어 |
| 기능 | 응용 프로그램과 데이터베이스 간의 상호 작용 |
| 장점 | 데이터베이스 작업 단순화 및 효율성 향상 |
| 단점 | 호스트 언어와 SQL 간의 의존성 증가 |
| 처리 방법 | 프리컴파일러를 사용하여 SQL문을 호스트 언어 코드로 변환 |
| 변환 과정 | SQL문이 포함된 소스 코드를 컴파일하기 전에 특별한 컴파일러(프리컴파일러)를 사용하여 변환 |
| 참고 사항 | SQL 표준에 정의되어 있으며, 다양한 프로그래밍 언어에서 사용 가능 |
-
데이터베이스 API -
ODBC
ODBC는 응용 프로그램이 데이터베이스 관리 시스템에 접근하도록 하는 표준 API로서, 서로 다른 데이터베이스에 대한 접근 방식을 표준화하여 응용 프로그램이 데이터베이스 종류에 관계없이 동일한 코드로 데이터에 접근하도록 하며, 드라이버 관리자와 데이터베이스 시스템에 특화된 명령으로 변환하는 드라이버로 구성된다. -
데이터베이스 API -
OLE DB
OLE DB는 마이크로소프트가 개발한 데이터베이스 접속 기술로, 다양한 데이터 소스에 대한 통합적인 접근 방식을 제공하며, 소비자와 공급자로 나뉘어 여러 API 및 프레임워크와 연동되어 활용된다. -
SQL -
사용자 정의 함수
사용자 정의 함수는 프로그래밍 언어와 데이터베이스 시스템에서 사용자가 직접 정의하여 재사용할 수 있는 코드 블록이다. -
SQL -
데이터 정의 언어
데이터 정의 언어(DDL)는 SQL에서 테이블, 열, 데이터 형식 등을 정의하고 데이터베이스 스키마를 수정하는 데 사용되는 명령어 집합이며, `CREATE`, `DROP`, `ALTER`, `TRUNCATE` 등의 명령어를 포함하고 데이터 구조를 정의하는 다양한 형식 언어들을 포괄하는 의미로도 사용된다. -
데이터 모델링 언어 -
데이터 정의 언어
데이터 정의 언어(DDL)는 SQL에서 테이블, 열, 데이터 형식 등을 정의하고 데이터베이스 스키마를 수정하는 데 사용되는 명령어 집합이며, `CREATE`, `DROP`, `ALTER`, `TRUNCATE` 등의 명령어를 포함하고 데이터 구조를 정의하는 다양한 형식 언어들을 포괄하는 의미로도 사용된다. -
데이터 모델링 언어 -
SQL
SQL은 관계형 데이터베이스 관리 시스템에서 데이터를 관리하고 조작하기 위해 설계된 표준 프로그래밍 언어로서, 데이터 정의어, 데이터 조작어, 데이터 제어어를 포함하는 다양한 명령어 문법을 제공하며 ANSI와 ISO에 의해 표준으로 채택되었다.
2. 임베디드 SQL 지원 데이터베이스 시스템
알티베이스, IBM Db2, IBM Informix, 마이크로소프트 SQL 서버, Mimer SQL, 오라클 데이터베이스, PostgreSQL, SAP Sybase 등 다양한 데이터베이스 시스템이 임베디드 SQL을 지원한다. 각 데이터베이스 시스템별로 지원하는 프로그래밍 언어와 특징은 다음과 같다.
* 알티베이스 (Altibase): APRE는 알티베이스사가 제공하는 임베디드 SQL 프리컴파일러이다.
* IBM Db2: C, C++, Java, COBOL용 임베디드 SQL을 지원하며, FORTRAN과 REXX에 대한 지원은 더 이상 사용되지 않는다.
* IBM Informix: 버전 14.10 (리눅스, 유닉스, 윈도우용)은 C 언어에 대한 임베디드 SQL을 지원한다.
* 마이크로소프트 SQL 서버 (Microsoft SQL Server): C/C++용 임베디드 SQL은 2008년부터 더 이상 사용되지 않지만, 이전 버전에서는 지원되었다.
* Mimer SQL: 리눅스, macOS, OpenVMS, 윈도우에서 C/C++, COBOL, Fortran 용 임베디드 SQL을 지원한다. 단, COBOL과 Fortran은 OpenVMS에서만 지원된다.
* 오라클 데이터베이스 (Oracle Database): Pro*C, Pro*COBOL을 통해 C/C++와 COBOL을 공식적으로 지원한다. 에이다, 포트란, 파스칼, PL/I은 더 이상 지원하지 않거나 업데이트가 중단되었다.
* PostgreSQL: ECPG는 버전 6.3부터 PostgreSQL의 일부로 제공되며 C 언어를 지원한다. C++ 지원은 제한적이다. Cobol-IT와 Micro Focus를 통해 COBOL 프리컴파일러를 사용할 수 있다.
* SAP Sybase: SAP Sybase ASE, SQL Anywhere, IQ는 C 및 C++용 임베디드 SQL을 지원하며, SAP Sybase ASE는 COBOL도 지원한다.
2.1. 알티베이스 (Altibase)
APRE는 알티베이스사가 제공하는 자사의 DBMS 서버용 임베디드 SQL 프리컴파일러이다.
2.3. IBM Informix
IBM Informix 버전 14.10 (리눅스, 유닉스, 윈도우용)은 C 언어에 대한 임베디드 SQL을 지원한다.
2.4. 마이크로소프트 SQL 서버 (Microsoft SQL Server)
C/C++용 임베디드 SQL은 마이크로소프트 SQL 서버 2008부터 더 이상 사용되지 않지만, 이전 버전에서는 지원되었다.
2.5. Mimer SQL
Mimer SQL은 리눅스, macOS, OpenVMS, 윈도우에서 임베디드 SQL을 지원한다.
C/C++용 임베디드 SQL은 리눅스, macOS, OpenVMS, 윈도우에서 지원된다. COBOL용 임베디드 SQL은 OpenVMS에서 지원된다. Fortran용 임베디드 SQL은 OpenVMS에서 지원된다.
2.6. 오라클 데이터베이스 (Oracle Database)
| 프로그래밍 언어 | 설명 |
|---|---|
| 에이다 | Pro*Ada는 버전 7.3에서 오라클에 의해 공식적으로 지원이 중단되었다. Oracle8부터 Pro*Ada는 SQL*Module로 대체되었지만 그 이후 업데이트는 없는 것으로 보인다. SQL*Module은 임베디드 SQL과는 다른 프로그래밍 방식을 제공하는 모듈 언어이며, Ada83 언어 표준을 지원한다. |
| C/C++ | Pro*C는 Oracle8에서 Pro*C/C++가 되었다. Pro*C/C++는 현재 Oracle Database에서 지원된다. |
| COBOL | Pro*COBOL은 현재 Oracle Database에서 지원된다. |
| 포트란 | Pro*FORTRAN은 Oracle8부터 더 이상 업데이트되지 않지만, 오라클은 버그가 보고되고 수정되면 패치 릴리스를 계속 발행할 것이다. |
| 파스칼 | Pro*Pascal은 Oracle8과 함께 출시되지 않았다. |
| PL/I | Pro*PL/I는 Oracle8과 함께 출시되지 않았다. 그러나, Oracle Precompilers Guide의 Pro*PL/I 보충 자료는 릴리스 11g까지 오라클 문서 라이브러리에 계속 나타났다. 릴리스 12c부터 Pro*PL/I는 오라클 문서 라이브러리에서 제거되었다. |
2.7. PostgreSQL
ECPG는 버전 6.3부터 PostgreSQL의 일부이다. C++ 지원은 제한적이며, 정상적으로 처리할 수 없는 구문이 존재한다.
Cobol-IT는 현재 PostgreSQL용 COBOL 프리컴파일러를 배포하고 있으며, Micro Focus는 OpenESQL 프리프로세서를 통해 지원을 제공한다.
2.8. SAP Sybase
SAP Sybase ASE 15.7은 Sybase 소프트웨어 개발 키트의 일부로 C 및 COBOL용 임베디드 SQL을 지원한다.
SAP Sybase SQL Anywhere는 SQL Anywhere 데이터베이스 관리 시스템의 일부로 C 및 C++용 임베디드 SQL을 지원한다.
SAP Sybase IQ는 Sybase IQ 데이터베이스 관리 시스템의 일부로 C 및 C++용 임베디드 SQL을 지원한다.
3. 임베디드 SQL을 지원하지 않는 데이터베이스 시스템
MySQL은 임베디드 SQL을 지원하지 않는다.
3.1. MySQL
MySQL은 임베디드 SQL을 지원하지 않는다.
4. 도메인 특정 언어를 통한 임베디드 SQL
* LINQ-to-SQL은 SQL과 유사한 언어를 .NET 언어에 포함시킨다.
* JPA는 Criteria API를 통해 SQL과 유사한 언어를 자바에 포함시킨다.
* jOOQ는 SQL과 유사한 언어를 자바에 포함시킨다.