2010-01-27 2 views
2

예전에는 저장 프로 시저를 통해 데이터베이스에 액세스하는 데 사용되었습니다. 그들은 데이터 관리의 '더 나은'방법으로 여겨졌습니다. 우리는 데이터베이스에 데이터를 보관하고 모든 언어/플랫폼은 JDBC/ODBC/등을 통해 액세스 할 수 있습니다.저장 프로 시저와 데이터웨어 하우징 프로젝트의 JDO 비교

그러나 최근에는 Hibernate/DataNucleus와 같은 런타임 반영/메타 데이터 기반 저장소 검색 메커니즘이 널리 보급되었습니다. 처음에는 우리가 필요로하는 모든 것이 하나의 필드 일 때 불필요한 데이터 (전체 객체)를 검색하는 방법 (반사가 비싸다)과 관련된 추가 단계로 인해 속도가 느려지는 것에 대해 걱정했습니다.

J2EE를 사용하는 대규모 데이터웨어 하우징 프로젝트를 계획하고 있지만 Stored Procedures 또는 JDO/JPA 등을 사용할 것인지에 대해서는 확신이 없습니다. 최근에 저는 Hibernate로 작업 해 왔습니다. 솔직히 말해서, CRUD 저장 프로 시저를 작성하는 것을 놓치지 않았습니다!

그것은 본질적으로 귀결 :

저장 프로 시저 +이 (u 리만 있지만)
하는 서버에 최적화 할 수
- 천 저장 프로 시저보다 더 될 가능성이있다 : 추가, 삭제 , update, getById, 등등을 포함한다.

JDO는
+ 내가 parameters.add 쓰기 앞으로 몇 달 지출하지 않을 것이다 ("@의 firstNames"를 customer.getFirstName()); ...
- SP보다 느립니다 (그러나 대부분의 지원 페이징)

내 상황에서 당신은 무엇에 찬성하겠습니까? 이 경우 나는 그것이 많은 것 같아요. 그의 "J2EE 디자인 ADN 개발"에

감사합니다,

답변

1

로드 존슨은 ORM/StoredProcedures에 대한 매우 명확한 분석을 썼다. 그는 말했다

저장 프로 시저는 항상 데이터베이스 또는으로 많은 데이터를 교환 자바 코드로 구현하고 있는지, 무겁게 데이터베이스를 사용하는 작업을 수행하기 위해 J2EE 시스템에서 사용되어야한다

데이터 베이스.

데이터웨어 하우스를 구현하려는 경우 저장 프로 시저 접근 방식이 올바른 선택이라고 생각합니다.

2

-

이 가정이 거짓 종종 "JDO는 SP에 (하지만 대부분의 지원 페이징)보다 느리게됩니다." SP가 특히 빠를 이유는 없습니다. 몇 가지 측정을했는데 데이터베이스 외부의 코드보다 빠릅니다.

데이터웨어 하우스는 삽입 전용로드와 장기 실행 SELECT...GROUP BY... 쿼리를 특징으로합니다.

OLTP 트랜잭션 처리가 작성되지 않았습니다. 업데이트/삭제 트랜잭션의 업데이트 이상을 방지하기 위해 3NF를 사용하지 않습니다.

대량 삽입을 수행하기 때문에 SP는 대량로드 유틸리티보다 확실히 느립니다. 벌크 로더는 종종 멀티 스레드이며 사용 가능한 모든 CPU 리소스를 소모합니다.SP는 DB의 일부이며 제한된 DB 리소스 만 공유 할 수 있습니다.

대부분 SELECT GROUP BY이므로 SP에서 여기서는별로 도움이되지 않습니다. SELECT 문은 프로 시저에서 래핑되지 않아도 이익을 얻지 못합니다.

필요하지 않습니다. 그들은 도움이되지 않습니다.

대량로드와 쿼리를 쉽게 벤치마킹하여 SP가 도움이되지 않음을 입증 할 수 있습니다.

0

메타 데이터를 사용하여 데이터웨어 하우스로로드하는 데 사용하는 스크립트를 생성하는 것이 좋습니다. 이렇게하면 특수로드 도구를 사용하거나 저장 프로 시저 (예 : 충분히 오래된 데이터베이스를 사용하는 경우)를 사용하여 성능 이점을 얻을 수 있습니다. 또한, 아마 적어도 일부 SQL을 손으로 코딩하게 될 것입니다. 일반 스크립트를 저장된 procs로 처리하게하면 같은 방식으로 모든 스크립트를 예약 할 수 있으며 생성 된 코드를 다시 작성하여 더 잘 실행되도록 변경할 때 호출 방법을 변경하지 않아도됩니다.

데이터를 가져 오는 데있어 J2EE에서 작성하는 것이보고 도구 인 경우 JDO를 사용하는 것이 더 나을 것입니다. 보고서의 측면을 잘 알고있는 것은 아니지만 볼 수있는 한 가지 이점은 최종 사용자가 미리 예상하지 못한 사용자 지정 보고서를 작성하는 것이 더 쉬워 질 것이라는 것입니다 (그래도 프로세스에서 데이터베이스를 사용하지 않도록하기 위해 수행 할 수있는 작업에 대한 일부 제한 사항).