1. DATABASE
여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합.
복수 업무에 공통으로 나타나는 데이터를 중심으로 모아서 이들을 상호 유기적으로 결합한 것.
(일정한 규칙에 따라 연결하여 이용할 수 있도록 구성되어 있음)
2. DBMS(Database Management System)
데이터베이스를 관리하는 시스템.
< DBMS 로 데이터베이스를 다루는 프로그래밍 인터페이스 >
1) 전용(Proprietary) 프로그래밍 인터페이스
- 각 DBMS 회사마다 제공하는 프로그래밍 인터페이스.
- 속도나 효율면에서 우수하지만 DBMS 에 종속적이기 때문에, 하나의 프로그램으로 다양한 종류의 DBMS 에 접근이 어려움.
2) 공용(Universal) 프로그래밍 인터페이스
- 다양한 DBMS 를 하나의 일관된 인터페이스로 다를수 있음.
- 하나의 프로그램으로 다양한 DBMS 에 접근할 수 있으며, 기반 DBMS 를 바꾸더라도 최소한의 코드 수정만으로 동일한 동작을 보장받을 수 있음.
< Microsoft 에서 제공하는 데이터베이스 프로그래밍 인터페이스 >
1) DAO(Data Access Objects)
- Microsoft Jet 데이터베이스 엔진을 이용하여 데이터베이스에 접근하기 위한 인터페이스.
- 로컬에 존재하는 MDB 를 데이터 원본으로 삼으며 네트워크 접속을 지원하지 않음.
- MFC 의 CDaoDatabase 를 이용.
- Microsoft 에서는 DAO 보다는 ADO 를 사용할 것을 권장.
ex)
...
CDaoDatabase db;
CString strPW;
strPW.Format(_T("%s%s"), strPassword != NULL ? ";PWD=" : "", strPassword != NULL ? strPassword : "");
db.Open(strPath, FALSE, FALSE, strPW);
if (!db.IsOpen())
return FALSE;
...
2) ODBC(Open Database Connectivity)
- 하나의 인터페이스로 다양한 종류의 DBMS 를 접근할 수 있도록 만든 성공적인 공개 인터페이스.
- 많은 DBMS 가 ODBC 드라이버를 지원하며, Microsoft 가 배포하는 MDAC(Microsoft Data Access Component) 를 통해 지속적인 지원을 받고 있음.
- 네트워크 접속으로 인해 여러명이 접근할 수 있으나 속도면에서는 DAO 보다 떨어짐.
- DAO 와 마찬가지로 현재 Microsoft 는 ODBC 보다는 OLE DB 를 사용하도록 권장.
ex)
...
CDatabase db;
CString strConn;
strConn.Format("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s;", strPath);
// strConn.Format("DSN=TESTDB;UID=RACCON;PWD=password");
if (!db.OpenEX(strConn) == FALSE)
return FALSE;
...
3) RDO(Remote Data Objects)
- COM(Component Object Model) 기술을 이용해서 ODBC 를 포장한 인터페이스.
- Microsoft 에서 더이상 지원하지 않으며 ADO 를 사용하도록 권장.
4) OLE DB(Object Linking and Embedding for Database)
- ODBC 의 성공을 바탕으로 만든 COM 기술을 이용한 새로운 데이터베이스 프로그래밍 공개 인터페이스.
- Microsoft 가 배포하는 MDAC 를 통해 강력한 지원을 받고 있음.
- OLE DB 공급자(OLE DB Provider, 디바이스 드라이버와 유사한 개념)을 통해 다양한 종류의 DBMS 에 접근할 수 있음.
- OLE DB 공급자를 사용하여 기존의 ODBC 도 지원.
- 일반적으로 시스템 프로그래밍 인터페이스로 분류.
5) ADO(ActiveX Data Objects)
- OLE DB 가 제공하는 기능을 좀 더 쉽게 사용할 수 있도록 COM 기술을 바탕으로 만든 프로그래밍 인터페이스.
- OLE DB 에 기반하기 때문에 다양한 종류의 데이터베이스를 다룰 수 있으며 성능이 좋음.
- 언어 독립적이어서 베이직, C/C++, JAVA 등 다양한 언어로 프로그래밍 가능.
- 일반적으로 응용프로그래밍 인터페이스로 분류.
'개발 > Database' 카테고리의 다른 글
[MS-SQL] 날짜(DATE), 시간(TIME) 함수 (0) | 2017.07.05 |
---|---|
[SQL] ALTER TABLE (0) | 2017.03.07 |