2010-07-22 6 views
1

저장 프로 시저의 이러한 단점 (데이터베이스 이식성 등)은 현재 직면하고 있습니다. 우리는 VB.Net/ASP/SQL Server 응용 프로그램을 Mono/Postgresql과 같은 것으로 마이그레이션하고 완전히 국제화 할 것입니다.저장 프로 시저를 응용 프로그램으로 마이그레이션

많은 문제 중 하나는 800-900 개의 저장 프로 시저가 있다는 것입니다. 우리가 생각하고있는 것은이 SP의 로직을 애플리케이션 코드로 옮기는 것입니다. 나는 사람들이 이것을 어떻게했는지 또는 어떻게 할 수 있는지 찾아 보았지만, 나는 거의 발견하지 못했다. 스토어드 프로 시저에 관한 대부분의 정보는 그들에게 있어야하는 것에 관한 것입니다. 그래서 저는 이것에 접근하는 가장 좋은 방법은 SQL 검색/업데이트 타입 쿼리를 스토어드 프로 시저로 남겨두고 비즈니스 로직으로 쿼리를 이동시키는 것입니다. 응용 프로그램에.

제 질문은 이런 식으로하는 것이 가장 좋은 방법입니다 (최선의 접근 방식이 아닐 수도 있지만 어디서부터 시작해야할지에 대한 좋은 제안이 될 수 있습니다). 당신의 저장 프로 시저가 데이터베이스에 대한 인터페이스를 제공하기 때문에

감사 리암

답변

1

, 이제 저장 프로 시저에 대한 모든 호출이 같은 클라이언트 코드에려고하고 있다는 것을 확인해야합니다. 현재 응용 프로그램의 여러 위치 또는 여러 응용 프로그램 (멀티 모드 일 수도 있음)에서 SP에 전화를 걸면 공통 코드를 사용해야합니다. 먼저 각 SP가 클라이언트 측 라이브러리의 한 위치에서만 호출되도록해야합니다. 그런 다음 저장된 proc의 모든 로직이 해당 메소드 호출에 의해 캡슐화됩니다. 스토어드 프로 시저가 복잡한 조작에 대한 + 결성을 보장하기 위해 트랜잭션을 사용하는 경우, 이제는 트랜잭션을 시작하여 응용 프로그램 라이브러리에서 커 L 트해야합니다.

리팩토링이 궁극적으로 필요하며 모든 SP를 이식 할 수없는 경우에도 이점이 있습니다.

0

또한 ASP.NET + SQL Server 응용 프로그램을 Postgres 데이터베이스로 마이그레이션하는 것과 관련하여 동일한 상황이 발생했습니다. SP를 응용 프로그램 코드로 마이그레이션하는 대신 동등한 pl/pgsql 함수로 변환하는 것이 훨씬 쉽습니다. ADO.NET 공급자를 변경하려면 응용 프로그램 코드를 변경하지 않아도됩니다. postgres (npgsql)에는 SP 및 postgres 함수를 동등한 것으로 취급하는 많은 공급자가 있습니다.

+0

안녕하세요 Avinash, 답장을 보내 주셔서 감사합니다. 나는 실제로 모든 저장 프로 시저를 Postgres 함수로 변환했다. 우리가 응용 프로그램에 저장된 procs를 병합해야한다고 생각하는 주된 이유는 응용 프로그램을 제공 할 다른 언어에 대해 여러 개의 데이터베이스를 가질 가능성이 높기 때문입니다. 데이터를 저장하는 데이터베이스. – startupsmith

관련 문제