DataSet 을 왜 사용할까요? 궁금하신 분들을 위해서..ms 에서 발췌를 해봤습니다. 길지만..읽어보면 많은 도움이 되실 겁니다. 왜 사용한지를 알아야 적용해 볼 수 있지 않을까요?
일반적인 클라이언트/서버 응용 프로그램에서는 구성 요소에서 데이터베이스에 연결을 설정하고 응용 프로그램이 실행되는 동안 열린 상태를 유지합니다. 그러나 다음과 같은 여러 가지 이유 때문에 이 방식을 사용하면 비실용적인 경우가 많습니다.
데이터베이스 연결을 열린 상태로 유지하면 중요한 시스템 리소스를 차지하게 됩니다. 일반적으로 데이터베이스에서는 소수의 동시 연결만 유지할 수 있으며 여기서 발생하는 오버헤드는 전체 응용 프로그램 성능을 저하시킵니다.
마찬가지로 열린 데이터베이스 연결이 필요한 응용 프로그램은 확장하기가 매우 어렵습니다. 확장하기 어려운 응용 프로그램은 사용자가 네 명인 경우에는 제대로 작동하더라도 사용자가 백 명이 되면 제대로 작동하지 않을 수도 있습니다. ASP.NET 웹 응용 프로그램은 특히 쉽게 확장할 수 있어야 합니다. 주문량이 늘어나면 매우 짧은 시간에도 웹 사이트의 소통량이 증가할 수 있기 때문입니다.
ASP.NET 웹 응용 프로그램에서 구성 요소는 본질적으로 서로 연결이 끊어져 있습니다. 브라우저는 서버로부터 페이지를 요청합니다. 서버가 페이지의 처리를 끝내고 전송한 후에는 다음 요청이 있을 때까지 브라우저와의 연결을 끊습니다. 이러한 상황에서 데이터의 소비자(클라이언트)가 데이터를 추가로 액세스할지 여부를 알 수 없기 때문에 데이터베이스에 열린 연결을 유지하는 것은 비생산적입니다.
항상 연결된 데이터를 기반으로 하는 모델에서 연결된 아키텍처를 사용하여 응용 프로그램 및 기업 간에 데이터를 교환하는 것은 어렵고 비실용적입니다. 두 구성 요소가 같은 데이터를 공유해야 할 경우, 구성 요소가 서로 연결되어 있거나 구성 요소 간에 데이터를 주고 받을 수 있는 방식이 고안되어야 합니다.
이러한 이유 때문에 ADO.NET을 통한 데이터 액세스는 연결 사용을 최소화하는 아키텍처를 기반으로 디자인됩니다. 응용 프로그램은 데이터를 페치(fetch)하거나 업데이트하는 동안만 데이터베이스에 연결됩니다. 데이터베이스는 대부분 유휴 상태인 연결에 의해 제한되지 않으므로 다수의 사용자에게 서비스할 수 있습니다.
데이터 집합은 데이터베이스에서 가져온 데이터의 캐시 역할을 하지만 실제로 데이터베이스와는 관계가 없습니다. 데이터 집합은 컨테이너이며, 데이터 어댑터에서 실행되는 저장 프로시저나 SQL 명령으로 채워집니다.
데이터 집합은 데이터 소스와 직접 결합되어 있지 않기 때문에 여러 소스의 데이터를 통합하기에 매우 적합한 지점입니다. 예를 들어, 데이터 집합의 일부 데이터는 사용자의 데이터베이스에서 가져오고 다른 부분은 기타 데이터베이스나 스프레드시트와 같은 비데이터베이스 소스에서 가져올 수 있습니다. 데이터 집합의 일부 데이터는 다른 구성 요소에서 보내는 스트림으로 전달될 수 있습니다. 데이터를 데이터 집합으로 가져오면 원래의 소스와 관계 없이 일관된 개체 모델을 사용하여 이 데이터를 처리할 수 있습니다.
데이터를 데이터 저장소에서 데이터 집합으로 이동시킨 다음 여러 구성 요소로 다시 이동시킬 필요가 있습니다. ADO.NET에서는 데이터를 XML 형식으로 전송합니다. 마찬가지로 데이터가 파일 등으로 유지되어야 하는 경우에도 XML로 저장됩니다. XML 파일이 있으면 이를 다른 데이터 소스처럼 사용할 수 있고, 이 파일로부터 데이터 집합을 만들 수 있습니다.
ADO.NET에서 XML은 데이터의 기본 형식입니다. ADO.NET 데이터 API는 데이터 집합의 정보를 기반으로 XML 파일 또는 스트림을 자동으로 만든 다음 다른 구성 요소로 보냅니다. 둘째 구성 요소는 유사한 API를 호출하여 XML을 읽고 다시 데이터 집합에 저장할 수 있습니다. 데이터는 데이터 집합에 XML로 저장되지 않으므로 XML 파서를 사용하여 데이터 집합의 데이터를 구문 분석할 수 없지만, 대신 더욱 효율적인 형식으로 저장됩니다.
XML에 기반한 데이터 프로토콜을 사용하는 데에는 다음과 같은 여러 가지 장점이 있습니다.
XML은 업계 표준 형식입니다. 즉, 구성 요소와 XML이 호환되면 응용 프로그램의 데이터 구성 요소가 다른 응용 프로그램의 다른 구성 요소와 데이터를 교환할 수 있습니다. 여러 응용 프로그램은 XML과 호환되도록 작성되므로 서로 다른 응용 프로그램 간에 뛰어난 교환 기능을 제공합니다.
XML은 텍스트 기반입니다. XML 데이터 표현은 이진 정보를 사용하지 않으므로 HTTP와 같은 모든 프로토콜을 통해 보낼 수 있습니다. 대부분의 방화벽은 이진 정보를 차단하지만 XML로 작성된 정보는 구성 요소가 쉽게 교환할 수 있습니다.
일반적으로 XML에 대해 잘 알지 못해도 ADO.NET에서 데이터를 사용할 수 있습니다. 필요한 경우 ADO.NET에서 데이터를 XML로 또는 그 반대로 자동 변환하므로 일반적인 프로그래밍 방법을 사용하여 데이터와 상호 작용할 수 있습니다.
posted by 심재운 (shimpark@gmail.com)