문제

어느 것이 더 좋습니까?사용하거나 또는 매퍼 SP 니까?이 있는 경우 시스템과 함께 SP 의미입니다 또 매퍼에 가치가 있나요?

도움이 되었습니까?

해결책

나는 다음과 같 ORM 의 필요가 없기 때문에 바퀴를 재발견 할 수 있습니다.그는 말했다,그것은 완전히 응용 프로그램에 따라 다릅 요구,개발 스타일과 그의 팀이 있습니다.

이 질문은 이미 덮 왜 매개 변수가 있는 SQL 의해 생성된 NHibernate 빠르고 저장 프로시저는?

다른 팁

거기에 좋은 아무것도에 대해 말하는 것을 저장합니다.가 있었 필요성이 10 년 전만 하나의 혜택을 사용하 sprocs 은 더 이상 유효하지 않습니다.두 개의 가장 일반적인 인수한 보안과 성능.을"보내는 물건을 통해 와이어"리지 않는,어느 나는 확실히 수 쿼리 만들기를 동적으로 모든 서버에서 너무입니다.한 sproc 지지자들은 말하지 않을 것입 업데이트가 불가능을 사용하는 경우 열에 분쟁 해결에 다시 게시할 수 있습니다.만 Dba 생각하는 사람들이 데이터베이스 군주에 주장 sprocs 기 때문에 그것은 그들의 직업이 더 인상적인 것보다 정말입니다.

이 길이 논의에 이전 질문이 있습니다.

어떤 장점과 단점을 유지하는 SQL 에 저장되었 대 코드

내 작품에서,우리는 대부분의 라인 비즈니스 응용 프로그램 계약서 작동합니다.

이러한 유형의 비즈니스,우리의 ORM.안 경우(ORM 도구들은 덜 성숙한)우리는 공부에 CSLA 과연 우리 자신의 단순화 된 ORM 도구는 우리가 사용하는에서 우리의 대부분의 응용 프로그램 일부를 포함하여,기업 클래스가 있는 시스템 100+테이블이 있습니다.

우리는 이 방법(는 물론의 코드 양이 많은 세대)를 만듭니다 시간이 절감의 30%까지에서 우리의 프로젝트입니다.진심으로,그릴.

있는 작은 성능이 떨어질 수 있지만,그것의 실체가 있는 만큼 괜찮은 이해의 소프트웨어 개발.가 항상 예외가 필요로 하는 유연성이다.

예를 들어,극도로 데이터 집중 배치 작업해야 합 처리에서 전문 sprocs 가능한 경우.당신은 아마 보내고 싶지 않 100,000 거대한 레코드 와이어를 통해 당신에 그것을 할 수 있습 sproc 오른쪽 데이터베이스에 있습니다.

이 형식의 문제는 초보자 테으로 실행하고 있는지를 사용하여 만들어졌거나지 않습니다.그들은 단지 결과를 보고 있는 경우 유능하고,그들은 그것을 얻을 것이다.

우리가 무엇을 본 적이에서 웹 앱은 일반적으로 가장 어려운 해결하기 위해성능 병목 현상은 더 이상 데이터베이스 관련도 ORM.오히려 마음에 드신에는 프런트 엔드(브라우저)인한 대역폭,오버헤드 아약스,등등.도 중간 범위 데이터베이스 서버는 매우 강력한 이러한 일입니다.

물론,다른 작업에 훨씬 더 큰 수요가 높은 시스템을 수 있습 다른 경험을 가지고 있다.:)

저장 프로시저합니다.또는 매퍼는 언어별로 제공되며 추가 종종 그래픽 성능 저하.

저장 프로시저는 의미 있는 언어에 의해 인터페이스,그리고할 수 있습니다 단지 압정에 새로운 인터페이스 데이터베이스에서 앞으로 호환되는 방법이다.

나 개인의 의견 또는 매퍼는 그들의 존재를 강조한 디자인 결함이에서 인기있는 데이터베이스의 구조.데이터베이스 개발자들을 실현해야 하는 작업에 사람들은 노력하고 달성하기 복잡하거나-매퍼를 만들 server-side 유틸리티를 수행에 도움이 작업입니다.

또는 매퍼는 또한 서사시의 대상이"새는 추상화"증후군( 엘에서 소프트웨어:새는 추상화 )

그것의 아주 쉽게 찾을 것을 그냥 없으므로 취급의 추상화 계층되지 않는 심령.

저장 프로시저는 더 나은,제가 보기에 그들이 할 수 있기 때문에 독립적인 보안 구성에서 기본 테이블이 있습니다.

즉,당신은 허용할 수 있는 특정 작업이 수 있도록 쓰기/읽기하는 특정 테이블이 있습니다.그것은 또한 제한 피해는 사람들이 할 수있는 경우 그들이 발견 SQL injection exploit.

ORMs.더 유연한,휴대용(일반적으로 그들은 이동성에 내장).의 경우에는 느림할 수도 있습 캐싱 기능을 사용하거나 손으로 조정 SQL 에서 핫스팟.

일반적으로 저장된 절차는 여러 가지 문제로 관리할 수 있습니다.

  • 별도의 응용 프로그램에서(많은 변화가 지금 만든 것 두 곳에서)
  • 일반적으로 더 열심히 변경
  • 하기 어렵게 밑에 넣어 버전을 제어
  • 어렵하고 있는지 확인하기 위해 업데이트(배포제)
  • 휴대 가능(이미 언급)

나 개인적으로는 것을 발견했 SP 의하는 경향이 빠른 것 성능이 현명하고,적어도 대량의 데이터가 항목 내에서 실행됩니다.하지만 많은 사람들이 그 맹세에 의해 또는 도구 및 사람.

내가 주장하는 사용 또는 매퍼는 것입니다 가독성 증대 및 유지보수 응용 프로그램의 소스 코드를 사용하는 동안,SP 의 성능을 증가합니다.

그들은 실제로 상호 배타적이지만,귀하의 지점은 그들이 보통이다.

의 이점이 사용하는 객체 관계형 매핑할 수 있는 교환 데이터 소스입니다.뿐만 아니라 데이터베이스 구조,하지만 당신은 모든 데이터 원본을 사용.으로 출현 웹 서비스/서비스 지향 아키텍처/ESB 의에서 큰 회사,그것은 것이 현명 할 것이 있는 고려해 높은 수준의 관심을 분리하는 것보다 당신이 얻을 수 있는지에 저장되는 절차가 있습니다.그러나,작은 회사 및 그 응용 프로그램에서는 사용하지 않는 다른 데이터 소스는 다음 SP 의 수 있는 법안을 맞는다.그리고 마지막으로 하나,그것을 사용할 필요가 없는 또는 매퍼를 얻을 추상화입니다.전에는 제 팀은 큰 성공을 거두었으로 단순히 사용하여 어댑터를 사용하여 모델 Spring.NET 플러그인에서 데이터 소스입니다.

@켄트 프레드릭

나 개인의 의견 또는 매퍼는 그들의 존재를 강조한 디자인 결함이에서 인기있는 데이터베이스의 구조"

나는 당신을 생각의 차이에 대해 말하는 게 관계형 모델과 객체지향 모델입니다.이것은 실제로 우리가 필요한 이유 ORMs 지만,그 구현의 이러한 모델을 수행되었는 목적에서-그것은 디자인 플로우-그것은 단지 어떻게 일 밝혀졌다고 있습니다.

저장 프로시저를 사용하여 당신은 확인된 성능 병목 현상이 발생합니다.하지 않은 경우 확인 병목 현상,당신은 무엇을 하고 있으로 조 최적화?
저장 프로시저를 사용하여 당신이 우려하는 보안에 대한 액세스를 특정 테이블.
사용 저장되었을 때 당신은 SQL 마법사들이 준비하는 앉아서 쓰는 복잡한 쿼리를 함께 참여하이 로드에서 테이블의 레거시 데이터베이스-할 것 하드에서는 매퍼입니다.

사용 또는 매퍼에 대한 기타(최소)80%데이터베이스의:는 선택 및 업데이트를 그렇게 일상적인을 통해 액세스 저장 프로시저를 혼자는 무의미한 운동 설명서는 코딩 및 업데이트를 너무 자주 없는 성능이 저하될 수 있습니다.사용 또는 매퍼을 자동화 하기 쉬운 물건.

대부분 또는 매퍼게 말할 수 있는 저장 프로시저를 위한 나머지.

를 사용하지 않아야 합 저장되었고 가정하면 그들은 그보다 더 빨리 sql 문을 문자열에서,이것은 반드시 경우에는 마지막 몇 가지 버전의 MS SQL server.

당신이 사용하지 않는 저장되었을 막기 위해 SQL injection,공격하는 다른 방법이 있는지 확인하십시오 쿼리를 매개 변수는 강력한 형식이고 그냥 문자열을 연결합니다.

당신을 사용할 필요가 없는 또 mapper 을 얻을 수 POCO 도메인이 모델,그러나 그것은 도움이됩니다.

이미 있는 경우에는 데이터는 API 를 노출로 sprocs,당신은 당신이 필요할 것을 정당화하기 위해 주요 건축물 점검 갈 ORM.

에 대한 녹색 필드를 구축,나는 평가 몇 가지:

  1. 이 있는 경우 전용 DBA 팀에,나는 린 sprocs
  2. 가 있다면 더 이상의 응용 프로그램을 만지는 동일한 DB 나 lean sprocs
  3. 가 없는 경우에는 가능성의 데이터베이스를 마이그레이션,지금까지 나는 린 sprocs
  4. 면 나를 구현하기 위해 노력하고 MVCC 에서 DB,나 lean sprocs
  5. 는 경우 나 배포하는 본 제품으로 잠재적으로는 여러 백엔드 dbs(MySql,MSSql,Oracle),나 lean ORM
  6. 면 내가 꽉 마감,나 lean ORM 때문에,그것은 빠른 방법을 만드는 내 도메인 모델 및 유지 데이터와 동기화 모델(과 적절한 장식새김).
  7. 내가 노출되는 동일한 도메인 모델에서 여러 방법(웹 응용 프로그램,웹 서비스,리아트),I'll lean ORM 다음으로 데이터 모델은 다음 뒤에 숨겨져 내 ORM 외관을 만들고,강력한 도메인 모델은 더 나에게 귀중하다.

내가 생각하는 성능이 조금의 청;최대 절전 모드는 것을 수행합니다 나보다 더 나은 손으로 코딩 SQL(그것 때문에 캐싱 계층),그리고 그것은 쉽게 쓰는 나쁜 쿼리에서 당신의 sproc 고 있습니다.

가장 중요한 기준은 아마 팀의 기술과 장기적인 데이터베이스 이동성 필요합니다.

아 SP 의 이미있습니다.가 되지 않을 수 있습니 그들에게 정말입니다.나는 그것을 사용하는 것으로 mapper SP 니까?

"내가 노력하고 드라이브에 못.를 사용해야 하의 발뒤꿈치를 내는 신발이나 유리병?"

모두 저장된 절차 및 ORMs 은 어렵고 기능을 가장 빠르고 편리하게 사용할에 대한 개발자(하지 않지만 반드시한 또는 DBA 건축가,각각)기 때문에,그들은 발생시 비용과 높은 유지보수 비용을 보장하지 않는 급료 지불입니다.

모두 갚을 것이라는 요구 사항이 있는 경우되지 않을 변경할 것으로 예상된다 훨씬 이상의 수명 시스템,하지만 그들은 당신의 방식으로 구축하는 경우 시스템을 발견하는 요구 사항에 첫 번째 장소입니다.

똑바른 코딩된 SQL 또는 준 ORM 다음과 같 LINQ 및 ActiveRecord 에 대한 더 나은 건축 프로젝트(일어나는 기업에서보다 더 많은 홍보하고 싶어 생각한다).

저장 프로시저는 나의 언어-독립적,환경 또는 세분화된 제어할 권한이 필요합니다.그들은 또한 더 나은 경우 DBA 는 더 나은 이해를 요구 사항의 것보다 당신의 프로그래머를 위한 것입니다.

Full-blown ORMs 은 더 나은 당신이 경우에 큰 디자인까지 프런트,사용이 많이 UML,추상화하려는 데이터베이스,백 엔드리고 건축가가 더 나은 이해를 요구사항 중 하나 이상의 DBA 또는 프로그래머를 위한 것입니다.

다음 옵션#4:그들 모두를 사용한다.전체 시스템은 일반적으로 한 프로그램,그리고 많은 프로그램을 이야기할 수 있 같은 데이터베이스,그들 각각 어떤 사용하는 방법은 적절한 위해 모두 프로그램의 구체적 작업,그리고 그 수준의로 성장하고 있습니다.는:당신은 시작과 똑바른 코딩된 SQL 또는 LINQ,다음 성숙한 프로그램에 의해 refactoring 에 ORM 및 저장 프로시저는 당신이 볼 그들이 감각이다.

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