문제

문제의 시나리오는 많은 정렬 된 것과 관련이 있습니다 Microsoft Jet 데이터베이스 엔진. 주장은 그게 데이터 액세스 개체 (DAO) 데이터 액세스 기술은 제트기의 '기본'이며, DAO 모델을 통해 객체를 만드는 것은 마이크로 소프트 액세스 사용자 인터페이스.

더욱이, DAO를 통해 무언가를 만들 수 없다면 정의상으로 제트기가 '기본'이 아니라고 주장했다.

나 에게이 '기본'에 대한이 정의는 잘못된 것 같습니다. 역사적 및 마이크로 소프트 정치적 이유로 DAO에서 부분적으로 구현되거나 부분적으로 구현 된 여러 제트 물체가 있습니다.CHECK 제약 조건, 고정형 데이터 유형, DECIMAL 데이터 유형, 압축 가능한 데이터 유형 등) 그러나 Jet의 SQL에 포함되었습니다. 데이터 정의 언어 (DDL). 직관만으로도 제트 SQL DDL은 제트 엔진에 '네이티브'로 간주되어야한다고 말합니다.

그래서 제 질문은 왜 : 왜 기술이 외부 (DAO) 겉보기에 '네이티브'로 간주되고 다른 기술이 내부적으로 보이는 것 (SQL DDL)은 '비 네이티브'로 간주되는 것입니까? 무언가가 '고유'인지 다른지에 대해 스스로 문제를 일으켜야합니까?

도움이 되었습니까?

해결책

어쩌면 여기서 틀렸을 수도 있지만 항상 다음과 같이 이해했습니다.

  • MS 제트 데이터베이스 엔진은 항상 데이터베이스 엔진입니다 (저속 여부)
  • 외부 세계에 대한 "기본"인터페이스입니다.

반면:

  • DAO는 VBA 또는 Windows 스크립팅과 같은 COM 환경에서 사용하도록 설계된 Microsoft의 데이터베이스 추상화 계층 중 하나입니다.
  • MS 제트가 MS 액세스없이 존재할 수 있으므로 MS Jet의 사용자 인터페이스 /보고 도구로 볼 수있는 Access (MS Jet의 사용자 인터페이스 /보고 도구로 볼 수 있음)로 개발되었으며 MS Jet 및 MS Access와 강력하게 번들로 개발되었습니다. Ado가있는 카테고리

다른 팁

이 질문은 실제로 선의로 게시되지 않았습니다. 제 생각에는 전적으로 나에게 전달되어 있으며 귀하의 의견에 반대하는 의견입니다. 나는 이미 다른 곳에서 모든 문제에 대답했지만, 단지 일을 명확하게하기 위해 제트기의 역사를 설명하겠습니다.

제트는 90 년대 초에 액세스와 함께 도입되었습니다. 버전 1과 2 사이에서 MS는 FoxPro를 인수하고 "Rushmore"기술을 Jet에 통합했습니다. 이 시간의 어딘가에 MS는 제트기의 인터페이스 층으로 DAO를 개발했습니다. 나는 DAO가 모든 데이터 액세스에 Jet를 사용한 데이터 인터페이스 계층 이외의 다른 사람으로 존재한다는 사실을 알지 못하지만 그것이 저를 보았습니다. Jet는 ODBC 및 설치 가능한 ISAM을 사용 하여이 점을 선택하여 다소 좋은 선택이었습니다. 기본 제트 데이터가 보이고 동작하는 것과 같은 방식으로 당시 공동체 데이터베이스 형식을 보이고 동작 할 수 있습니다. 당시 데스크탑 데이터베이스 시장은 DBase와 그 변형과 역설에 의해 지배되었습니다. 이들은 서버 데이터베이스가 아닌 모든 데스크탑 DB 엔진이었습니다. 서버 데이터베이스에 대한 액세스는 일반적으로 ODBC를 통해 이루어졌지만 당시 데스크탑 DB 응용 프로그램 개발자에게 중요한 것은 아닙니다. 제트기는 ODBC 데이터 소스에 연결하고 매우 효율적으로 활용하기 위해 상당히 잘 관리되었지만 때로는 실수를 저지르기도합니다 (이것이 ODBCDirect가 JET에 도입 된 이유입니다.

이제 Access/Jet/DAO의 상승과 유사한 Visual Basic은 일반화 된 Windows 앱 개발을위한 핫 제품이었으며 웹이 번성하기 전에 VB는 세계에서 가장 널리 사용되는 프로그래밍 언어였습니다. DAO와 JET은 VB 개발자에게 모든 종류의 데이터 저장소에 대한 인터페이스를 제공했으며 VB 개발 도구는 이와 잘 통합되었습니다. 따라서 ODBC 이후 DAO는 MS의 주요 데이터 인터페이스 계층이되었으며, 제트 엔진을 사용하여 모든 종류의 데이터와 함께 작동합니다.

당연히 이것은 문제가 있었고 또한 Jet/DAO (및 VB)가 모두 데스크탑 지향적 인 도구라는 점에서 매우 제한적이었습니다. 90 년대 중반까지 MS는 데스크탑 소프트웨어 제공 업체, 데스크탑 OS 및 개발 도구 제공 업체에서 엔터프라이즈 소프트웨어 제공 업체로 확장하려고 시도했습니다. 따라서 MS는 데이터베이스 서버 용 ODBC와 같은보다 강력한 데이터 인터페이스를 개발해야했지만 최신 서버 데이터베이스가 제공하는 모든 최신 기능이 필요했습니다. OLEDB는 OLEDB 상단의 인터페이스 레이어로서 ADO와 함께 이것에 대한 답이었습니다 (DAO는 제트 상단의 인터페이스 레이어와 마찬가지로). DAO의 목표는 Jet Database Engine을 통해 많은 데이터 스토어에 액세스하는 것이었지만 OLEDB는 Database 추상화 계층 인 ODBC와 같은보다 중립적 인 데이터 인터페이스 계층이었으며 ADO는 해당 중립 데이터 인터페이스 계층의 인터페이스였습니다.

"기본"DDL의 문제에 따르면, Jet 4 이전에는 SQL DDL에 대한 지원이 매우 열악한 것이 사실입니다. 즉, SQL DDL을 통해 제어 할 수없는 제트 기능이있었습니다. 대신 해당 기능을 제어하기 위해 DAO를 사용해야했습니다. Jet Database Engine 프로그래머는 DAO 예제와 함께 DDL 예제를 확실히 포함하지만 DAO 예제는 Jet DDL SQL이 Jet 데이터베이스의 모든 기능을 지원하지 않았기 때문에 훨씬 더 많은 작업을 수행 할 수 있습니다.

내부 MS 정치 때문에 너무 혼란스러워 보이는 고장은 이루어졌다. 1999 년까지 MS가 Access 2000을 소개했을 때 (새 버전의 Jet, 4.0), MS는 Ado에 찬성하여 DAO를 은퇴하기를 원했습니다. MS는 Ado를 Ado를 사용하는 것이 합리적이지 않은 경우에도 Access에서 기본 데이터 인터페이스 계층을 Ado로 만들었습니다 (즉, 데이터 저장소는 Jet). 이러한 노력의 일환으로 MS는 Jet 4의 모든 새로운 기능에 대한 지원을 통합하기 위해 DAO를 완전히 업데이트하지 않았습니다. 대신 그들은이 노력을 Ado에 넣었습니다. 그 결과 Jet의 기본 데이터 인터페이스 계층 인 DAO는 데이터베이스 중립 인터페이스 계층 인 ADO가 제공 한 JET 기능에 대한 지원이 부족했습니다. 이것은 제 생각에 Microsoft 부분에 대한 특정 형태의 douchebaggery였습니다. MS는 의도적으로 비 네이티브 인터페이스를 사용하도록하기 위해 Jet의 기본 인터페이스 계층을 업데이트하지 않았습니다. 따라서 Dao-> Jet 대신 Jet Database Engine의 기본 측면 (예 : 필드의 일부 데이터 유형)이었던 일부에 대해서도 Ado-> Oledb-> Jet를 사용해야했습니다.

Microsoft의 목표는 Dao를 완전히 죽이고 실제로 Jet 자체를 죽이는 것이 었습니다. 그들은 고객이 SQL Server로 이동하기를 원했습니다.

그러나 여러 가지 일이 일어났습니다. 우선, COM 기반 인 Ado는 .NET과 잘 어울릴 수 없었으므로 클래식 COM 기반 Ado가 버려졌고 Ado.net은 그 자리를 차지하도록 만들어졌습니다. Ado와 Ado.net의 유사성은 상당히 피상적이며 완전히 다른 데이터 상호 작용 모델을 기반으로하며 Ado.net은 분리 된 데이터라는 아이디어를 중심으로 거의 완전히 설계되었지만 Ado는 확실히 특정 종류의 연결이 끊어졌습니다. 데이터 접근).

창문 밖으로 나가면서 MS는 제품 라인의 중간에 구멍을 뚫었습니다. 전체 데이터 액세스 모델이 적합하지 않았기 때문에 클래식 VB 개발자 또는 액세스 개발자는 .NET에서 많은 이점을 보지 못했습니다. 따라서 Access 2002가 출시되면서 MS는 코스를 취소하고 DAO를 제트 데이터의 기본 데이터 인터페이스 계층으로 다시 배치했습니다 (및 기타 모든 데이터 저장소 제트는 Via, EG, ODBC 등과 함께 작동 할 수 있음). 불행히도, MS는 현재 제트기와 함께 사용하기 위해 ADO를 더 이상 사용하지 않았지만, 그와 함께 진행된 Crippled 버전의 DAO를 수정하기로 선택하지 않았습니다. 아마도 그들은이 시점까지 기존 Jet 4를 Access Development Group이 소유 한 데이터베이스 엔진으로 포크하기로 결정했기 때문에 이것을하지 않았을 것입니다. 이것은 결국 에이스가되었으며 모든 의도와 목적을 위해 제트 4.5입니다. 새로운 버전의 DAO가 출시되었습니다 (사용자 친화적 인 이름이 "Microsoft Office 12.0 액세스 데이터베이스 엔진 객체 라이브러리"인 반면 DLL 이름은 이제 Acedao.dll이라는 이름으로 약간 위장했습니다). DAO 3.6 (제트 4 버전)에 누락 된 기능이 DAO의 ACE 버전에 추가 된 정도를 모르겠습니다. 나는 모르기 때문에 모른다 필요 그 기능 중 하나는 그들이 무엇인지조차 모릅니다.

어쨌든,이 시점에서, 현재 제트기 (제트 4가 끝이라는 약속을 약속했다)와 그에 따른 데이터 인터페이스 계층 (DAO, 우리가 약속 한 DAO)에서 진행중인 개발이 진행 중입니다. . 이 지속적인 개발은 현재 Microsoft의 액세스 응용 프로그램 그룹 내에 있습니다 (Jet 4가 이전에 유지 된 Windows와는 반대로).

Microsoft는 ANSI-92 SQL 모드를 사용하기 위해 액세스에 호환성 모드를 추가했습니다. 이를 통해 SQL Server의 SQL 방언으로 "호환"인 SQL을 쓸 수 있습니다. 글쎄, 그것은 몇 가지를 지원합니다 (Jet 's Sc 그러나 액세스 외에이 "ANSI-92"SQL 모드를 사용하는 유일한 방법은 ADO를 사용하여 제트에 연결하는 것입니다. Dao 자체는 여전히 Jet의 오래된 방언의 SQL을 사용합니다. 이것은 Jet 가이 모드 자체에 대한 지원을 제공하지는 않지만 Jet 위의 레이어에 의해 제공되고 있음을 보여줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top