안녕하세요 삽잡이입니다.
이전 시간까지 배운 데이터 공급자는 '공용 데이터 공급자'입니다.
복습하는겸... 다시 한번 생각해 보겠습니다.
데이터 공급자는
DBMS와 연결을 수행하기 위한 여러가지 형식들의 집합을 의미합니다.
데이터를 읽고 쓰기 위한 집합을 의미하죠.
따라서 데이터 공급자라고 말하는 것입니다.
아무리 DBMS들이 많더라도, DBMS와 대화하기 위해서
공용으로 사용하는 것은 만들어 놓을 수 있지 않겠습니까?
내부적으로 실제 사용하는 것은 만들지 못해도,
공용으로 사용하는 것들은 만들 수 있지 않겠냐 이겁니다.
어차피 다른 DBMS라도 똑같은 개념을 가지고 있을 것이니깐요.
필자가 알아본 것은 추상적 클래스의 개념이라는 것입니다.
이를 구현한 것은 해당 DBMS가 했겠지요.
아무튼... 이전 시간까지 공통으로 사용하는 공급자에 대한 개념을 알아봤습니다.
예시는 예시일 뿐! Oracle과 무관한 사람입니다... |
Oracle의 DBMS을 따로 만들었다면...
이 Oracle은 Connection을 상속받아서 Oracle에 맞는 Connection이 된것입니다.
My SQL을 쓸 때도
우선은 공용적인 Connection을 상속받아서 사용될 것입니다.
물론, 사용하는 Computer에 없다면 다운 받아 쓰면 되지요.
그런데... 여기서부터 본론입니다.
My SQL 이나 MS SQL과 같은 DBMS들은
공급자가 따로 다 있습니다.
그런데, OLE DB와 ODBC라는 데이터 공급자도 MS에서는 제공해줍니다.
이 둘은 My SQL, MS SQL 이런 것들과 다릅니다.
닷넷이 등장하기 전부터
이미, DB를 사용하는 어플리케이션들이 있었을 것입니다.
즉, Win32 프로그램 (C, C++)에서도 DB를 사용할 수 있었다는 것인데
닷넷에서 데이터 공급자와 비슷하게
DB와 연결을 지어주고, 명령을 수행해주고, 데이터를 가져오는 등
어떤 라이브러리르 제공해줘야하지 않겠습니까?
이게 바로, DB Connection 라이브러리인 ODBC 였습니다.
DB를 사용한 프로그램을 하기 위해서
Win32 에서 제공해주는 DB 라이브러리가 바로 ODBC라는 것입니다.
이 ODBC는 C 스타일대로 함수 집합으로 만들어져있지요.
만들어진지 좀 됬으니 그 만큼 매우 방대한 라이브러리일 것입ㄴ디ㅏ.
ODBC를 만든 이유는
My SQL, MS SQL 처럼 닷넷용으로 공급자를 만들어주지 않는
조금한 회사들이거나, 없어졌거나 등등...
즉, ADO.NET에서 지원하는 데이터 공급자가 없는 DBMS들이 있지 않겠습니까?
이런 프로그램들은 모두 ODBC로 이루어져있겠지요.
닷넷용 데이터 공급자가 없으니깐 말입니다.
그런데, 닷넷으로 업데이트는 시키고 싶으나... 난 ODBC인데...
그래서 MS에서 MS OS 수준에서 DB와 이야기하기 위해 만든 ODBC를
ADO.NET에서 만들어 놨습니다.
닷넷용으로 ODBC를 사용할 수 있게 만들어 놓은것이지요.
즉, 닷넷용으로 포팅(감싸놓은)해 놓은 것입니다.
따라서, 이전에 사용하던 모든 ODBC를 인터페이싱할 수 있습니다.
연결계층에서 배웠던
Connection, Command, DataReader 등의 객체들은 껍데기일뿐
실제로는 ODBC와 DB가 이야기를 하는 것입니다.
ADO.NET에서 ODBC는 호환성을 위해 만들어진 데이터 공급자입니다.
OLE DB는 Component DB입니다.
즉, 컴포넌트에 대한 개념들이 한창 떠오르고 있을 때 만든 라이브러리다 이거죠.
아무튼... 프로그램만을 닷넷으로 바꾸고 싶을때
기존 것을 가져다 사용할 수 있도록
닷넷으로 Wrapping을 해놓은 것을
ODBC, OLEDB라 부르는 것입니다.
Oracle, MS, My SQL 처럼 전용 공급자를 제공하지 않는 곳에서도
닷넷 프로그램을 할 수 있도록 만들어놓은 공급자,
이미 많은 곳에서 ODBC를 사용하는 프로그램이 만들어 놓았기 때문에
제공해주는 녀석을 Provider, 공급자라고 부른다 이겁니다.
이번 시간은 여기까지 하도록 하겠습니다.
이상 삽잡이였습니다!
'삽질의 현장 > - .NET' 카테고리의 다른 글
[삽잡이::C#] ADO.NET_Command Type (0) | 2015.11.18 |
---|---|
#089_닷넷(.NET)_ ADO.NET - DB 라이브러리 (0) | 2015.11.18 |
#087_닷넷(.NET)_ ADO.NET - 비연결 계층 (0) | 2015.11.17 |
#086_닷넷(.NET)_ ADO.NET - 연결 계층 (0) | 2015.11.17 |
#085_닷넷(.NET)_ ADO.NET - 관계형 DB & 객체형 DB (0) | 2015.11.17 |