2009-12-19 3 views
3

많은 응용 프로그램을 개발해 왔으며 데이터 집합 사용에 혼란을 겪었습니다. 날짜까지 데이터 집합을 사용하지 않고 데이터베이스 엔진에서 실행되는 쿼리 및 프로 시저를 사용하여 내 데이터베이스에서 직접 내 응용 프로그램으로 작업합니다.더 나은 방법은 무엇입니까? 데이터 집합 또는 데이터베이스 작업

하지만 좋은 사례는 무엇입니까? 데이터 집합 사용? 또는 데이터베이스에서 작업 중입니다.

+1

응용 프로그램간에 데이터를주고 받고, 응용 프로그램이 다른 실제 컴퓨터에 있다고 가정하면 데이터가 전 송을 통해 전송되므로 값이 비쌉니다. 이 설정에는 데이터 동시성 문제가 있습니다. 데이터가 클라이언트로 다시 전송되는 동안 데이터가 변경 될 수 있기 때문입니다. 논리를 저장 프로 시저에 캡슐화 할 수 있다면이를 사용하는 것이 가장 좋습니다. 필자는 DataSet의 기능에 대해 언급하기에 충분하지 않습니다. –

답변

5

당신도 받아 들여야 작업 (삽입/업데이트)

와 함께 데이터 집합을 사용하는 경우

Plz은 또한 나에게 어떤 경우를 제공하려고 우리는 우리의 데이터베이스에 대한 읽기/쓰기를 데이터 세트에 대한 읽기 잠금을 설정할 수 있습니다 스토어드 프로 시저를 사용하거나 데이터베이스를 멍청하게 만들 수 있습니다. 즉, db에는 아무런 논리가 없으며 CRUD 작업 만 가능합니다. 바보 데이터베이스 모델을 사용하면 데이터 집합이 잘못됩니다. 실제 객체로 작업하는 것이 더 좋으므로 비즈니스 로직을 추가 할 수 있습니다. 이 접근 방식은 저장된 procs를 사용하여 데이터베이스에서 직접 작동하는 것보다 복잡하지만 시스템이 커질수록 복잡성을 더 잘 관리 할 수 ​​있습니다. 작은 규칙이 많은 대형 시스템이 있으면 저장 프로 시저를 관리하기가 매우 어려워집니다.

+2

DataSet은 .Net 프레임 워크의 검은 눈입니다. 모든 비용을 피하십시오. –

1

엄밀히 말하면 데이터 일관성, 무결성 등을 가능한 한 가능한 한 데이터에 가깝게, 즉 데이터베이스에 넣는 논리를 사용합니다. 또한 상호 의존적 인 방식으로 데이터를 가져와야하는 경우 (예 : A, B 및 C의 기여도가 요청 시간에 알려진 테이블 A, B 및 C에서 가져 오기), 다음에 저장하는 것이 좋습니다. 콜 아웃 오버 헤드를 제거하고 함수, 프로 시저 (이미 OMGPonies에서 지적한 것과 같은)와 같은 데이터베이스 객체를 통해이를 수행하십시오. 하나 또는 두 개의 로직이 제거 된 경우 데이터 세트에서와 같이 "절차 적으로"다루는 것이 좀 더 직관적 인 경우를 갖는 것이 좋습니다. 모든 것을 말하면서, 어림짐작은 때로 그들의 약어가 유추하는 것입니다 ... ROT!

과거에는 .NET 프로젝트에서 데이터베이스 (예 : 하나의 콜 아웃, 모든 로직이 프로 시저로 캡슐화되어 트랜잭션으로 보호됨)에서 데이터 가져 오기/변환 (예 : 은행 트랜잭션 데이터 파일 용)을 수행했지만 "구문 분석 "두 번째 단계에서 동일한 데이터의 항목, datatables 등을 사용하는 .net 코드 (요즘은 데이터 집합 스테이지를 건너 뛰고 클래스 개체를 사용하여 더 높은 추상화 레버에서 작업 할 가능성이 높습니다.

2

예전에는 MVC가 Haack의 눈에서 반짝 반짝 빛나기 전까지 DataSet 정렬, 다중 관계 및 캐싱 및 기타 등등을 처리하는 것이 편리했습니다.

실제 개발자는 데이터베이스의 잠금과 같은 퀴즈는 신경 쓰지 않았습니다. 아니요, 우리는 가장 최근의 편집 전체에 일반적으로 각인 된 분쟁 해결 전략을 사용했습니다. 사용자 친근성? < Pshaw>.

그러나 요즘 괜찮은 일반 컬렉션, 과다한 ORM 및 우려 사항 분리 인식에 대해서는 더 이상 중요한 부분이 없습니다. 내가 최근에 DataSet을 보았을 때마다 그것을 대체했다고 말하는 것이 공평합니다. 그리고 그것을 놓치지 않았습니다.

0

하나의 응용 프로그램에서 사용 된 데이터 세트를 아주 잘 보았습니다. 그러나 이것은 아주 다른 응용 프로그램에서 7 년 동안 개발되었습니다 (최소 두 자리 숫자 이상).

기업 개발을위한 데이터 세트가 아니라 오브젝트를 사용하여 개발 한 모범 사례가 많이 있습니다. NHibernate 또는 Entity Framework와 같은 ORM과 함께 객체는 매우 강력 할 수 있으며 CRUD 저장 프로 시저를 만드는 데있어 많은 노력을 기울일 수 있습니다.이것은 도메인 계층에서 비즈니스 로직을 멋지게 분리 할 수 ​​있기 때문에 어플리케이션 개발을 선호하는 방식입니다.

데이터 집합에 위치가 없다는 것은 아니지만 특정 상황에서는 개체보다 적합 할 수도 있지만 내 경우에는 해당 항목을 사용하기 전에 반드시 확인해야합니다.

0

필자는 몇 개월 동안 내 소스 코드에서 DataSets가 필요하지 않았을 때도 궁금해했습니다.

실제로 개체가 O/R 매핑되고 직렬화 및 제네릭을 사용하는 경우에는 DataSet이 필요하지 않습니다.

그러나 DataSet은 보고서를 생성하는 데 유용합니다.

보고서에는 O/R 매핑이 가능하거나 O 매핑이 있어야하는 특정 구조가 없기 때문입니다.

보고 도구와 함께 데이터 세트 만 사용합니다.

+0

나는보고를 위해 데이터 세트 대신 datatables를 사용하고 있습니다. 데이터베이스에서 뷰를 생성하면 직접보고 할 뷰에 링크 된 데이터 테이블을 사용할 수 있습니다. –

관련 문제