MS-SQL과 Oracle을 모두 지원

c# dapper entity-framework repository-pattern sql-server

문제

나는 현재 몇몇 사이트에 살고있는 엔터프라이즈 제품을 개발했다. 이것은 백엔드 데이터 스토리지로 SQL 서버를 사용하는 MS 스택에서 개발되었습니다. 나는 데이터 액세스를 위해 EF / Hibernate를 사용하지 않았고, 대신 dapper와 같은 사용자 정의 확장을 사용했다. 우리가 가지고있는 쿼리의 대부분은 복잡한 집계이고 여러 테이블에 걸친 필터이기 때문에 이것은 잘 작동했습니다. 사용자 정의 SQL을 사용하면 병목 현상을 확인하고 더 빨리 수정하는 데 드는 노력을 크게 줄일 수 있습니다.

이제 우리는 하나의 거대한 고객을 위해 오라클을 지원해야하는 비즈니스상의 이유로 (완전한 오라클 상점이므로 SQL을 사용할 수있는 방법이 없었습니다.)

데이터베이스에서 일관성을 유지하기 위해 많은 데이터 유형을 변경해야한다고 가정하면 전반적인 접근법에 대한 지침을 얻을 수 있다면 도움이 될 것입니다.

  1. 두 데이터 소스에서 쿼리를 지원할 수 있도록 접근하는 가장 좋은 방법은 무엇입니까?

    • 접근법 1 : 대부분의 쿼리를 ANSI SQL로 이동하고 일부 특수 쿼리에 대해서만 별도의 쿼리를 사용합니다.

    • 접근법 2 : EF와 Dapper의 조합을 사용하십시오. EF는보다 단순한 작업에 사용되며 DUpper는 읽기 작업을 과도하게 수행하는 데 사용됩니다. Whereever dapper를 다시 사용하면 oracle과 sql에 대한 별도의 쿼리가 필요할 수 있습니다.

    • 접근법 3 : Dapper를 계속 사용하고 모든 작업에 대해 별도의 쿼리를 만듭니다.

2) 데이타베이스 배치 자동화를위한 dacpac을 가지고 있습니다. 오라클과 동일한 목표를 달성하려면 어떻게해야합니까?

이 외에도 datetime, currency 등을 처리 할 때 두 데이터베이스를 모두 지원할 때주의해야 할 다른 항목이 있습니까?

수락 된 답변

EF를 사용하여 개발을 시작하고 모든 테이블에 POCO 클래스가 있으므로 접근 방식 3을 선호합니다.

따라서, Dapper로 Oracle 환경을 구축하십시오 (SQL Server로 생성 된 POCO 사용).

DAL을 저장소 패턴, 작업 단위로 빌드 할 수 있습니다

문서를 작성하고 oracle / sql 서버간에 데이터 형식이 일치하지 않으면 DAL을 통합하는 데 필요한 수정 작업을 수행하십시오.

Oracle / SQL Server를 통과해야하는 DAL에 대한 단위 테스트를 사용하면 안전합니다.

편집 2 :

SQL Server를 사용하는 시스템을 개발하고 개발 시간을 최소화 할 수 있다면 대안 4 : 솔루션 "Oracle Database에서 EntityFramework 사용"을 연구하십시오. 보세요 :

Oracle과 함께 Microsoft Entity Framework를 사용할 수 있습니까?

http://download.oracle.com/oll/obe/EntityFrameworkOBE/EntityFrameworkOBE.htm

해당 솔루션에 대해 POC (proof of concept)를 만들 수 있습니다.

https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/

Oracle.ManagedDataAccess.EntityFramework의 설치 패키지

오라클 데이터베이스로의 마이그레이션 단계 :

Oracle Migration Workbench를 사용하여 MS SQL Server 데이터베이스를 Oracle 데이터베이스로 마이그레이션하십시오.

상세 사항은:

http://www.oracle.com/technetwork/topics/o57sql-100253.html

이 도구를 사용하면 스키마 오브젝트, 테이블, 트리거 및 저장 프로 시저를 비롯하여 모든 오브젝트를 마이 그 레이션하고 데이터 유형 변환을 처리 할 수 ​​있습니다. 데이터 유형 간의 매핑을 인식하려면 다음을 읽으십시오.

https://www.mssqltips.com/sqlservertip/2944/comparing-sql-server-and-oracle-datatypes/

애플리케이션의 신속한 이동 Oracle Database로 작업하려면

데이터베이스를 마이그레이션 한 후 Dapper를 사용하고 연결 문자열을 수정하고 응용 프로그램 테스트를 시작하고 변경 사항의 모든 부작용에 대한 모든 버그 (하나씩 디버깅하지 않음)를 찾습니다.

나는 응용에서 아주 사소한 변화가있을 것으로 기대한다.

변화를위한 계획.

공유 프로젝트 에서 dapper를 사용하여 모든 DAL을 이동할 수 있습니다 (현재 2013/2015를 사용하여 작업하고있는 경우).이 응용 프로그램은 Sql Server가있는 현재 응용 프로그램과 Oracle 데이터베이스가있는 새 응용 프로그램에서 모두 참조 할 수 있습니다.

이 경우 DAL에는 연결 문자열 및 공유 프로젝트와의 연결 클래스 만 포함됩니다.

오라클 / Ms SQL 서버의 단위 테스트

1) oracle 및 Ms sqL 서버에 대한 모든 공통 테스트를 포함하는 공유 Projec을 작성하십시오.

2) 단위 테스트 프로젝트 만들기 Ms Sql 서버에 대한 참조 공유 프로젝트, 연결 문자열을 정의하고 다른 테스트를 추가합니다 (구현에 약간의 차이가있는 경우).

3) 단위 테스트 프로젝트 생성 2 단계에서와 같이 oracle의 경우

4) 두 테스트를 모두 실행하고 모든 테스트가 통과되었는지 확인하십시오. 변경 사항이 있으면 테스트를 다시 실행하십시오.


인기 답변

데이터 액세스 레이어에 대한 테스트가있는 경우 접근 방법 1을 사용합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.