Telerik OpenAccess ORM

데스크 탑과 Web 어플리케이션을 연결하는 데이터 액세스를 간결하게 하기 위한 제품입니다.

Telerik사에서 공개
2018년 부터 ComponentSource에서 판매중

i

Telerik OpenAccess ORM was renamed Telerik Data Access and as of October 31st 2016, dedicated support for the product has been discontinued and there will be no new features or product updates. However, as DataAccess will continue to be an integral part of Sitefinity CMS developers using DataAccess in this context will still have access to support through the Sitefinity Support System.

Telerik OpenAccess ORM 관련 정보

데스크 탑과 Web 어플리케이션을 연결하는 데이터 액세스를 간결하게 하기 위한 제품입니다.

Telerik OpenAccess ORM(Object-relational mapping)은 Forward/Reverse 매핑을 지원하고 DAL(Data Access Layer)과 비즈니스•오브젝트의 접속성을 투과적으로 유지하기 위한 툴을 제공합니다. 또 Telerik OpenAccess ORM은 Visual Studio 과의 긴밀한 통합(integration)을 제공하고 데이터베이스에 의존하지 않는 코드를 통합적으로 작성합니다. 그러한 선진적인 기능을 이용함으로써 코드의 최적화와 캐싱 뿐만 아니라 필요한 코드를 생성하기 위한 자유도가 높은 커스터마이즈 등이 가능하게 됩니다.

Telerik OpenAccess ORM(Object-relational mapping)기능

Forward/Reverse 의 머신

  • Forward 매핑-유저의 오브젝트·모델 및 최적화된 데이터 스키마를 이용해서 OpenAccess를 실현하는 신규relational database의 스크래치에서의 개발. 개발을 할 때 릴레이셔널(relational)에 주의할 필요성을 배제하면서 자동적 구현을 실시. OpenAccess가 실현되는 모든 종류의 schema 정의와 전제로 되는Table과Column  명칭의 반영.
  • Reverse 매핑-레거시·데이터베이스를 이용하여 OpenAccess를 실현하는 개발. 제공되는 Reverse 매핑·마법사를 이용하여 신규 Visual Studio 프로젝트와 레거시·데이터베이스를 빠르게 접속함으로써 역 맵의Experience를 개시. OpenAccess에 의한 데이터의 모델/타입 및 키 등의 부가적인 정보 인식과 매칭·오브젝트·모델의 작성. 그 외에도 이러한 것을 이용한 신규 .NET 어플리케이션의 설계와 개발도 실현.
  • Roundtrip 매핑-오브젝트·모델에서의 각종 변경에 준한 schema 변경을 옵션으로 제공. 또 데이터베이스에서의 각종 변경에 준한 오브젝트·모델 변경을 옵션으로 제공함으로써 그 사용법 변경에 대응.
  • instance로의 종속-대상이 되는 instance의 참조가 존재하지 않은 경우에 자동적인 삭제가 이루어지는 릴레이션 설정에 대응.

  6종류의 데이터베이스를 지원- 가장 일반적으로 되어 있는 데이터베이스를 지원함으로써 고유 환경에 얽매이지 않는 개발을 실현합니다.

  • Microsoft SQL Server
  • Oracle
  • MySQL
  • Firebird
  • Sybase SQL Anywhere
  • Advantage Database Server

미들 층에서의 매핑에 의한 유연한 전개(Deployment)

OpenAccess 에서는 액티브·트랜잭션의 스코프 내에 한정된 데이터베이스의 수정만 지원합니다.  이에 따라서 영속성/일관성/최소단위/격리와 같은 현실세계의 과제에 대응합니다. 따라서 기초를 이루는 데이터베이스에 기인한 리스크의 간과나 증대가 배제됩니다. 완전하게 처리된 데이터베이스를 지원함으로써 많은 NET 어플리케이션에서 이용할 수 있는 데이터베이스 용법에 포커스를 맞춥니다. 일련의 용법에서 탈락되는 것이 있으면 연락해 주십시오.

OpenAccess는 미들층에서 매핑을 정의합니다. default에서는 C#/VB 코드나 데이터베이스로부터 독립한 형태로 모든 매핑 정보가 app. config 파일에 스토어 됩니다. 이에 따라서 단일 오브젝트·모델과 데이터베이스·스키마를 이용하여 어플리케이션을 전개하는 것뿐만 아니라 각종 데이터베이스·벤더별 맵을 이용한 전개가 실현됩니다. 코드에 대한 어떤 변경도 불필요합니다. 이러한 유연성이 처음부터 필요하지 않은 경우라도 작성된 코드의 독립성이 확보됩니다. 기존의 어플리케이션과 데이터베이스로부터 신규 데이터베이스의 이행도 지원됩니다 (종래부터의 데이터베이스에 Reverse 맵 하는 것으로 Forward 맵에의 전개가 가능).

LINQ/OQL/SQL 언어의 지원- OpenAccess 에는 검색 언어에 관한 제약이 없습니다. 다음의 각 언어에서 적절한 것을 선택하거나 또는 그것들을 조합시키는 것이 가능합니다.

  • LINQ - OpenAccess에 의한 LINQ0의 지원. LINQ 의 오브젝트 지향 외에 추가로 컴파일에서의 검색 체크와 같은 선진 기능에 의하여 런타임에서의 안정된 운용을 실현.
  • OQL - OpenAccess 에서의 OQL의 지원. Object Database Management Group 에 의하여 정의된 오브젝트 지향 검색에 대한 대응도 실현. LINQ가 발표되기 전의 검색 언어로 런타임에서의 동적인 검색 구축이 필요한 케이스에 대응.
  • SQL - 특수한 조작이나 기존의 SQL 스테이트먼트(statement)의 재이용에서 이용 가능. OpenAccess 를 by-pass 하기 위한 SQL 이용을 실현. Visual Studio내에서 SQL 브라우저를 이용함으로써 1행의 코드도 기술을 하지 않고도 검색을 실행.

투과적인 데이터·액세스/레이지·로딩/갱신의 자동 트래킹

OpenAccess를 채용한 액세스에서 대량 어플리케이션·오브젝트가 존재할 경우에는 레이지한 로딩에서 대응합니다. 모든 필드가 곧바로 만족되는 것이 아니기 때문에 콜렉션이나 사진 등의 필드에 대해서는 이동이 지연됩니다. 그에 따라서 간편한 액세스를 유지하면서 메모리와 네트워크의 대 영역 폭을 저감 하는 메리트를 얻을 수 있습니다. 대상이 되는 필드·컨텐트가 필요한 될 경우 그 데이터가 database server―로부터 투과적으로fetch 됩니다. 물론 취득해야 할 필드 선택이 가능하며 OpenAccess에 의한 실용적인 디폴트 설정이 제공됩니다.

영속적인 필드 값에 대한 수정이 자동적으로 추적됩니다. 대상이 되는OpenAccess 런타임·시스템에 대하여 기술되어야 할 instance를 알릴 필요는 없습니다. 수정이 검출될 때 필요한 Column만이 결과로서 생긴SQL statement에 채용됩니다. 모든 참조된 영속 오브젝트도 동일하게 취급됩니다. 또 완전한 오브젝트 그림만 스토어 되며 그 배후에 instance가 남겨지지는 않습니다.

Visual Studio 통합- OpenAccess ORM 은 Visual Studio와 긴밀하게 통합되기 때문에 개발을 위한 환경이나 수법을 변경할 필요가 없습니다. 각종 마법사를 제공함으로써 간편한 개발을 실현하고 처리해야 할 것을 시각화합니다.OpenAccess는IntelliSense를지원하고그 다큐멘트는 Visual Studio Help 시스템 내에 통합됩니다. OpenAccess는Visual Studio 2005/2008상에서 동작하고 NET 2.0/3.0/3.5 및 C#/VB. NET를 지원합니다.

disconnect API

Disconnect  APIOpenAccess 의 특징인  ObjectContainer API 컨셉은 디스커넥터 데이터의 시나리오를 지원하는 최초의  ORM 입니다. 모바일 디바이스나 Web 어플리케이션, 리플리케이션 등에 대하여 검토할 때 디스커넥터 된 데이터 관리를 필요로 하며 또한 그곳에 의존하게 됩니다. 디스커넥터·모드로 데이터의 일부를 이용해서 작업하는 것이 가능합니다. OpenAccess 에서는 그러한 편집된 데이터를 투과적으로 저장하고 접속 시에 최소한의 변경 부분만을 교환함으로써 네트워크 대역폭 사용을 저감합니다. 따라서 갱신된 오브젝트나 또는 신규 오브젝트가 트래킹 됩니다.

오프라인의 ObjectContainer API와 온라인의ObjectScope API는 인터페이스를 공유합니다. 또한 어플리케이션의 일부분이 그러한 접속성으로부터 독립한 형태로 구현됩니다.

오브젝트를 채용하기 위한 ObjectContainer는 오브젝트간에서의 네트워크 유지 및 초기화를 위한 기능의 제공, 트래킹 변경과 변경 적용을 데이터베이스에 대한 round trip형태를 이용해서 실현됩니다.

분산된 레벨2캐시의 동기

분산된 레벨2캐시에서의 동기를 실현합니다. OpenAccess가 제공하는 캐시는 프로세스 내에서의 데이터베이스·액세스의 사례(오브젝트·스코프)에 의하여 공유됩니다. 대량의 데이터가 공유되어 참조가 많이 이용되는 상황에서 이 방식은 유용합니다. 전형적인 예는 Web 서버이며 그곳에서는 대부분의 데이터가 안정되고 또한 공유가 가능하며 일반적으로 사용됩니다.

오브젝트가 변화될 때 캐시 내의 엔트리는 삭제됩니다. 이 캐시는 Read 액세스에 의하여 작성되는 것이지만 사이즈의 배치(Configuration)가 가능하며, 또한 엔트리·타입의 저장과 LRU overflow의 핸들링에 대응합니다.

캐시 내의 entity는 오브젝트·스테이트(싱글·오브젝트의 데이터를 표현)와 전체적인 검색 결과로 구성됩니다. 즉, 되풀이되는 검색 결과가 캐시에 스토어 되며 캐시 엔트리가 삭제되지 않는 한 그러한 검색이 데이터베이스 서버를 액세스하는 경우는 없습니다. 캐시 삭제는 자동적으로 이루어지지만 매뉴얼에 의하여 트리거를 거는 것도 가능합니다.

그러한 캐시는 하나의 프로세스 내에서 공유될 뿐만 아니라 네트워크상에서 접속됨으로써 분산 동기 캐시 제공을 실현합니다. 다수의 어플리케이션이나 Web 서버가 동일한 팜에 집약되는 것 같은 시나리오에서도 레벨2캐시의 메리트가 활용됩니다.

그러한 분산 공유 캐시에 대한 네트워크·액세스는 신뢰성이 높은 비동기 멀티캐스트·프로토콜을 이용함으로써 최적화됩니다. 이 방식은 무제한 캐시 클러스터에 대한 완전한 회답이 됩니다.

Fetch Plans 의 활용에 의한 퍼포먼스의 강화- OpenAccess ORM 은 Object Model과Activities를  Fetch Plans을 통하여 조합시키기 위한 선언을 제공합니다.

Fetch Plans 에 의하여 퍼포먼스를 최적화하기 위한 오브젝트·네트워크가 기술됩니다. OpenAccess은 Fetch Plans에 선행해서 선언을 이용하며, 코드로 사용되는 오브젝트 그림 중에서 적용되는 것을 알 수 있습니다. 이에 따라서 선언형이 용이한 방식에 의하여 어플리케이션의 퍼포먼스를 크게 개선하는 것이 가능해집니다.

이 기능은 어플리케이션에 의하여 처리되는 데이터·fetch와 적절하게 조합되어 있습니다. 또한 「n+1검색 문제」로 알려진 퍼포먼스에 관한 공통 문제를 회피합니다. 「1」오더에 대한 검색을 건 다음에 「n」오더의 검색을 거는 순서로 대신하고, 오더와 상세 쌍방을fetch 하는 것으로 하나로 정리된 최적 검색을 발행하기 위하여 Fetch Plans 을 이용할 수 있습니다.

이 Fetch Plans은 런타임에서 단순하고 강력한 API에 의하여 구축됩니다. 그 기본적인 의도는 사용 케이스 별로 Fetch Plans을 갖는 것입니다. current의 Fetch Plans이 항상 존재하고 검색 및 오브젝트 조작을 할 때 사용됩니다.

Fetch Plans 의 개념은 일반적인 로딩에서 처리해야 할 정보를 레이지·로딩에 대하여 적용할 경우의 해결책이 됩니다.

유연한 concurrent·메커니즘

OpenAccess는concurrent한 제어에서 비관과 낙관의 쌍방을 지원합니다. 런타임에서는 이 2개의 어프로치가 혼재됩니다. 따라서 액세스에 대하여 최초로 수정할 때에 자동적으로 비관적인 트랜잭션을 채용하는 것과 또는 낙관적인 트랜잭션을 채용하는 방법으로 대응합니다.

낙관적인concurrent 제어(디폴트)를 이용할 때 지정된 버전 또는 수정된 필드, 모든 필드에서 경합이 검출됩니다. 또 이러한 경합에 관한 검출을 OFF로 하는 것도 가능합니다.