데이터셋과 데이터 리더 중 어느 것이 더 좋습니까?
방금 Databable vs Database라는 주제를 봤지만 의심을 풀지 못했습니다.좀 더 자세히 설명해 드리자면, 저는 데이터베이스와 연결을 하고 있었고 결과를 그리드 뷰에 표시해야 했습니다. (저는 얼마 전에 VB6로 작업할 때 RecordSet을 사용했는데 DataSet과 매우 비슷해서 DataSet을 사용하기가 훨씬 쉬웠습니다.)그런데 한 남자가 DataSet이 최선의 방법이 아니라고 하더군요.
그렇다면 DataReader를 '학습'해야 할까요, 아니면 DataSet?DataTable을 계속 사용해야 할까요?장점/단점은 무엇입니까?
그것은 본질적으로: "물통과 호스 중 어느 것이 더 나은가?"입니다.
A DataSet
여기서는 버킷입니다. 연결되지 않은 데이터 세트를 휴대하고 작업할 수 있지만 버킷을 휴대하는 데 드는 비용이 발생합니다(따라서 편안한 크기로 유지하는 것이 가장 좋습니다).
데이터 판독기는 호스입니다. 데이터가 통과할 때 데이터에 대한 단방향/한 번만 액세스할 수 있습니다. 사용 가능한 모든 물을 한 번에 운반할 필요는 없지만 수돗물/데이터베이스에 연결해야 합니다.
그리고 당신이 양동이에 호스를 채울 수 있는 것과 같은 방법으로, 당신은 물을 채울 수 있습니다.DataSet
데이터 수집 기능을 사용합니다.
내가 말하고자 하는 요점은 그들이 다른 일을 한다는 것입니다.
개인적으로 사용하지 않습니다.DataSet
매우 자주 - 하지만 어떤 사람들은 그들을 사랑합니다.하지만 저는 BLOB 액세스 등을 위해 데이터 판독기를 사용합니다.
그것은 당신의 필요에 따라 다릅니다.가장 중요한 차이점 중 하나는 데이터 판독기가 데이터베이스에 대한 열린 연결을 사용자가 완료할 때까지 유지하는 반면 데이터 세트는 메모리 내 개체가 된다는 것입니다.컨트롤을 데이터 판독기에 바인딩해도 열려 있습니다.또한 DataReader는 조작할 수 없는 데이터 읽기 전용 접근 방식입니다.데이터 세트를 사용하면 앞뒤로 이동하여 데이터를 적합한 대로 조작할 수 있습니다.
몇 가지 추가 기능: 데이터셋을 직렬화하여 XML로 표시할 수 있으므로 다른 계층으로 쉽게 전달할 수 있습니다.데이터 판독기를 직렬화할 수 없습니다.
반면 비즈니스 규칙을 위해 일부 프로세스에 전달하는 데이터베이스에서 읽을 행이 많은 경우 데이터 리더는 모든 행과 함께 데이터 세트를 로드하여 메모리를 차지하고 확장성에 영향을 미치는 것보다 더 합리적일 수 있습니다.
ADO.NET DataReader와 DataSet의 비교 링크가 있습니다.
Marc의 요점은 데이터베이스가 전혀 없는 데이터 세트를 사용할 수 있다는 것입니다.
XML 파일이나 프로그램에서 이 파일을 채울 수 있습니다.한 데이터베이스의 행으로 이 값을 채운 다음, 방향을 바꾸어 다른 데이터베이스에 기록합니다.
데이터 집합은 관계 스키마의 완전한 메모리 내 표현입니다.실제 관계형 데이터베이스와 함께 사용할지 여부는 사용자에게 달려 있습니다.
다양한 요구와 다양한 솔루션.
말씀하신 대로 데이터 세트가 VB6 레코드 세트와 가장 유사합니다.즉, 필요한 데이터를 끌어내려서 전달하고 원하는 대로 사용하는 것입니다.아, 그리고 나서 결국엔 당신이 끝나면 그것을 없애버리죠.
데이터 판독기는 더 제한적이지만 데이터를 한 번 읽기만 하면 훨씬 더 나은 성능을 제공합니다.예를 들어, 그리드를 직접 채우는 경우(즉, 데이터를 끌어다 놓고 실행한 다음 그리드를 채우는 각 행에 대해 데이터를 삭제하는 경우) 데이터 리더가 데이터 세트보다 훨씬 좋습니다.반면에, 만약 당신이 데이터를 업데이트할 의도가 있다면, 데이터 리더를 사용하지도 마세요...
따라서, 예, 배우십시오. 하지만 적절한 경우에만 사용하십시오.데이터셋은 훨씬 더 많은 유연성을 제공합니다.
데이터 리더와 데이터셋 비교
- DataReader는 연결 지향 아키텍처로 설계되었습니다.
DataSet은 단절된 아키텍처에서 설계되었습니다.
- Data Reader는 데이터에 대한 전진 전용 액세스를 제공합니다.
데이터 세트는 데이터에 대한 스크롤 가능한 탐색 기능을 제공합니다.
- Data Reader는 읽기 전용이므로 아래에 있는 데이터를 변경할 수 없습니다.
DataSet은 업데이트 가능합니다. DataSet 아래에 있는 데이터를 변경하여 데이터 소스로 다시 전송할 수 있습니다.
- DataReader는 데이터 검색 및 정렬과 같은 옵션을 제공하지 않습니다.
데이터셋은 데이터 검색 및 정렬과 같은 옵션을 제공합니다.
두 번째 질문에 대답하려면 - 예, 데이터 판독기에 대해 알아야 합니다.만약 있다면, 당신은 그것들을 사용하는 방법을 이해할 것입니다.
데이터 바인딩 및 기타 모든 작업(CPU 주기 대 인적 노력)을 수행하기 때문에 이 상황에서 데이터 세트를 사용하는 것이 더 낫다고 생각합니다.
어떤 것이 더 나은 공연을 할 것인지에 대해서요.그것은 당신의 상황에 달려 있습니다.예를 들어 바인딩 중인 데이터를 편집하고 변경 사항을 일괄 처리하는 경우에는 DataSets를 사용하는 것이 좋습니다.
Data Reader는 데이터베이스에서 읽기 전용 및 전달 전용 데이터를 검색하는 데 사용됩니다.한 번에 하나의 행만 읽고 앞으로만 읽으며 뒤로/임의로 읽을 수 없습니다.데이터 판독기에서 데이터를 다시 데이터베이스로 업데이트/조작할 수 없습니다.단일 테이블에서 데이터를 검색합니다.연결된 아키텍처이므로 연결이 존재하는 한 데이터를 사용할 수 있습니다.데이터 집합이 메모리 내 테이블입니다.연결이 끊어진 아키텍처이며, 자동으로 연결을 열고 데이터를 메모리로 검색한 후 연결을 닫습니다.데이터 소스에서 메모리로 모든 데이터를 한 번에 가져옵니다.DataSet은 여러 테이블에서 데이터를 가져오는 데 도움이 되며 데이터를 임의로/뒤로/무작위로 가져올 수 있습니다.데이터 세트는 데이터를 업데이트/삽입/조작할 수 있습니다.
언급URL : https://stackoverflow.com/questions/1083193/whats-better-dataset-or-datareader
'programing' 카테고리의 다른 글
mongodb "schema" 생산 변화 처리 방법 (0) | 2023.06.28 |
---|---|
스프링 부트 테스트: 모든 테스트에 대해 컨텍스트가 로드됩니까? (0) | 2023.06.28 |
UISwip 제스처 인식기의 방향 설정 (0) | 2023.06.28 |
방화벽이 작동하지 않습니다. com.google.화력 기지설비파이어베이스설치예외. (0) | 2023.06.28 |
C#에서 Excel 파일을 구문 분석하면 셀이 255자로 잘리는 것 같습니다...어떻게 그것을 멈출 수 있습니까? (0) | 2023.06.28 |