기타 드라이버 아키텍처Other Driver Architectures

일부 ODBC 드라이버는 앞에서 설명한 아키텍처를 엄격 하 게 준수 하지 않습니다.Some ODBC drivers do not strictly conform to the architecture described previously. 이는 드라이버가 기존 ODBC 드라이버 이외의 업무를 수행 하거나 일반적인 의미에서 드라이버가 아닌 경우에 발생할 수 있습니다.This might be because the drivers perform duties other than those of a traditional ODBC driver, or are not drivers in the normal sense.

중간 구성 요소인 드라이버Driver as a Middle Component

ODBC 드라이버는 드라이버 관리자와 하나 이상의 다른 ODBC 드라이버 사이에 상주할 수 있습니다.The ODBC driver may reside between the Driver Manager and one or more other ODBC drivers. 중간에 있는 드라이버는 여러 데이터 원본으로 작업할 수 있는 경우 실제로 데이터 원본에 액세스 하는 다른 모듈에 대 한 ODBC 호출 (또는 적절 하 게 변환 된 호출)의 디스패처로 작동 합니다.When the driver in the middle is capable of working with multiple data sources, it acts as a dispatcher of ODBC calls (or appropriately translated calls) to other modules that actually access the data sources. 이 아키텍처에서 중간에 있는 드라이버는 드라이버 관리자의 일부 역할을 수행 합니다.In this architecture, the driver in the middle is taking on some of the role of a Driver Manager.

이러한 드라이버 종류의 또 다른 예로는 ODBC 용 spy 프로그램이 있습니다 .이 프로그램은 드라이버 관리자와 드라이버 간에 전송 되는 ODBC 함수를 가로채 고 복사 합니다.Another example of this sort of driver is a spy program for ODBC, which intercepts and copies ODBC functions being sent between the Driver Manager and the driver. 이 계층은 드라이버 또는 응용 프로그램을 에뮬레이트하는 데 사용할 수 있습니다.This layer can be used to emulate either a driver or an application. 드라이버가 드라이버 관리자에 게 표시 됩니다. 드라이버가 드라이버 관리자로 표시 됩니다.To the Driver Manager, the layer appears to be the driver; to the driver, the layer appears to be the Driver Manager.

유형이 다른 조인 엔진Heterogeneous Join Engines

일부 ODBC 드라이버는 다른 유형의 조인을 수행 하기 위해 쿼리 엔진을 기반으로 합니다.Some ODBC drivers are built upon a query engine for performing heterogeneous joins. 다른 유형의 조인 엔진 (다음 그림 참조)의 한 아키텍처에서 드라이버는 응용 프로그램에 드라이버로 나타나지만 응용 프로그램으로 드라이버 관리자의 다른 인스턴스에 표시 됩니다.In one architecture of a heterogeneous join engine (see the following illustration), the driver appears to the application as a driver but appears to another instance of the Driver Manager as an application. 이 드라이버는 조인 된 각 데이터베이스에 대해 드라이버에서 별도의 SQL 문을 호출 하 여 응용 프로그램에서 유형이 다른 조인을 처리 합니다.This driver processes a heterogeneous join from the application by calling separate SQL statements in drivers for each joined database.

형식이 다른 조인 엔진의 아키텍처Architecture of a heterogeneous join engine

이 아키텍처는 응용 프로그램에서 여러 데이터베이스의 데이터에 액세스 하는 데 사용할 수 있는 공통 인터페이스를 제공 합니다.This architecture provides a common interface for the application to access data from different databases. 특수 열 (행 식별자)에 대 한 정보 등의 메타 데이터를 검색 하는 일반적인 방법을 사용 하 고 일반 카탈로그 함수를 호출 하 여 데이터 사전 정보를 검색할 수 있습니다.It can use a common way to retrieve metadata, such as information about special columns (row identifiers), and it can call common catalog functions to retrieve data dictionary information. 예를 들어 ODBC 함수 SQLStatistics를 호출 하면 테이블이 별도의 두 데이터베이스에 있는 경우에도 응용 프로그램은 조인할 테이블의 인덱스에 대 한 정보를 검색할 수 있습니다.By calling the ODBC function SQLStatistics, for instance, the application can retrieve information about the indexes on the tables to be joined, even if the tables are on two separate databases. 쿼리 프로세서는 데이터베이스가 메타 데이터를 저장 하는 방법에 대해 걱정 하지 않아도 됩니다.The query processor does not have to worry about how the databases store metadata.

응용 프로그램에는 데이터 형식에 대 한 표준 액세스 권한도 있습니다.The application also has standard access to data types. ODBC는 DBMS 관련 데이터 형식이 매핑되는 일반적인 SQL 데이터 형식을 정의 합니다.ODBC defines common SQL data types that DBMS-specific data types are mapped to. 응용 프로그램은 SQLGetTypeInfo 를 호출 하 여 다른 데이터베이스의 데이터 형식에 대 한 정보를 검색할 수 있습니다.An application can call SQLGetTypeInfo to retrieve information about data types on different databases.

응용 프로그램에서 유형이 다른 join 문을 생성 하는 경우이 아키텍처의 쿼리 프로세서는 SQL 문을 구문 분석 한 다음 조인할 각 데이터베이스에 대해 별도의 SQL 문을 생성 합니다.When the application generates a heterogeneous join statement, the query processor in this architecture parses the SQL statement and then generates separate SQL statements for each database to be joined. 쿼리 프로세서는 각 드라이버에 대 한 메타 데이터를 사용 하 여 가장 효율적인 지능형 조인을 결정할 수 있습니다.By using metadata about each driver, the query processor can determine the most efficient, intelligent join. 예를 들어 문이 한 데이터베이스의 두 테이블을 다른 데이터베이스의 한 테이블에 조인 하는 경우 쿼리 프로세서는 결과를 다른 데이터베이스의 테이블과 조인 하기 전에 한 데이터베이스의 두 테이블을 조인할 수 있습니다.For example, if the statement joins two tables on one database with one table on another database, the query processor can join the two tables on the one database before joining the result with the table from the other database.

서버의 ODBCODBC on the Server

ODBC 드라이버는 서버에 설치 하 여 일련의 클라이언트 컴퓨터에 있는 응용 프로그램에서 사용할 수 있습니다.ODBC drivers can be installed on a server so that they can be used by applications on any of a series of client machines. 이 아키텍처에서 (다음 그림 참조) 드라이버 관리자와 단일 ODBC 드라이버가 각 클라이언트에 설치 되 고 다른 드라이버 관리자와 일련의 ODBC 드라이버가 서버에 설치 됩니다.In this architecture (see the following illustration), a Driver Manager and a single ODBC driver are installed on each client, and another Driver Manager and a series of ODBC drivers are installed on the server. 이를 통해 각 클라이언트는 서버에서 사용 및 유지 관리 되는 다양 한 드라이버에 액세스할 수 있습니다.This allows each client access to a variety of drivers used and maintained on the server.

서버에 있는 ODBC 드라이버의 아키텍처Architecture of ODBC drivers on a server

이 아키텍처의 이점 중 하나는 효율적인 소프트웨어 유지 관리 및 구성입니다.One advantage of this architecture is efficient software maintenance and configuration. 드라이버는 서버에서 한 곳 에서만 업데이트 해야 합니다.Drivers need only be updated in one place: on the server. 시스템 데이터 원본을 사용 하 여 모든 클라이언트에서 사용할 수 있도록 데이터 원본을 서버에 정의할 수 있습니다.By using system data sources, data sources can be defined on the server for use by all clients. 클라이언트에서 데이터 원본을 정의할 필요가 없습니다.The data sources need not be defined on the client. 연결 풀링을 사용 하 여 클라이언트가 데이터 원본에 연결 하는 프로세스를 간소화할 수 있습니다.Connection pooling can be used to streamline the process by which clients connect to data sources.

클라이언트의 드라이버는 일반적으로 드라이버 관리자 호출을 서버로 전송 하는 매우 작은 드라이버입니다.The driver on the client is usually a very small driver that transfers the Driver Manager call to the server. 서버의 공간이 완전히 작동 하는 ODBC 드라이버 보다 훨씬 작을 수 있습니다.Its footprint can be significantly smaller than the fully functional ODBC drivers on the server. 이 아키텍처에서는 서버에 더 많은 컴퓨팅 성능이 있는 경우 클라이언트 리소스를 해제할 수 있습니다.In this architecture, client resources can be freed if the server has more computing power. 또한 백업 서버를 설치 하 고 서버 사용을 최적화 하기 위해 부하 분산을 수행 하 여 전체 시스템의 효율성 및 보안을 향상 시킬 수 있습니다.In addition, the efficiency and security of the entire system can be enhanced by installing backup servers and performing load balancing to optimize server use.