프로그래밍/DB 2008. 4. 8. 15:30

출처 : ZDNet Korea


데이터셋의 성능 향상시키기
심의준(IT 테크라이터)   2005/11/14
닷넷 프레임웍 2.0 출시에 맞추어 ADO.NET도 2.0으로 변화하게 되었다. 어플리케이션을 제작할 때 ADO의 사용은 필수적이라 할 만큼 많은 곳에서 ADO를 사용하게 된다. 어느덧 ADO에서 출발하여 ADO.NET을 거쳐 2.0으로까지 발전이 되었다. 이번에는 ADO.NET 2.0 에서 어떤 변화를 갖고 왔는지에 대해 중요한 부분 몇 가지를 선택하여 살펴보고자 한다.

ADO.NET의 전반적인 부분을 소개하기에는 다소 무리가 있다는 판단에, ADO.NET에 대해 어느 정도 이해를 하고 있다는 가정하에 소개하고자 한다.

그러면 DataSet(DataTable)을 중심으로 변화를 살펴보도록 하자.

DataTable 의 구조 변화
닷넷 프레임웍의 Data Provider와 Data Set 은 아래와 같은 구조를 가지고 있다.

Data Provider와 DataSet (출처: MSDN)

DataSet은 ADO.NET의 가장 핵심적인 객체로써 비연결 기반의 데이터 모델을 말한다. 즉, 메모리 내에서 운영되는 작은 데이터베이스라고 이해할 수 있다. DataSet을 통해 Data에 대한 처리가 가능하게 된다. <그림1>의 DataSet의 구조도에서 알 수 있듯이 내부적으로는 DataTable을 포함하게 된다.

ADO.NET 2.0으로 넘어오면서 DataSet(DataTable)은 향상된 성능을 갖게 되었다. 이번 버전에서는 DataTable의 인덱싱 엔진이 새롭게 구현되었으며, 이로 인해 데이터를 처리할 때 이전버전과 비교하여 월등한 성능을 나타내게 되었다. MSDN에 소개된 성능 비교 샘플을 확인해 보면 직접 그 차이를 확인해 볼 수 있다. 이제는 DataTable의 엔진 변화로 인해 데이터에 대한 Insert, Update 및 Delete 작업을 보다 신속하게 처리할 수 있게 되었다.

Binary Serialize
이전 버전(닷넷 1.1)에서는 DataSet을 Serialize하는 경우 항상 XML로만 Serialize가 가능하였다. XML로만 가능하였던 가장 큰 이유는 데이터 호환성 때문이었다. 하지만, XML의 경우 호환성은 좋지만 다량의 데이터의 경우 무겁다라는 단점을 갖게 되었다. 따라서, 닷넷간의 통신에서 굳이 XML로 해야 할 필요가 있을까라는 의문을 갖게 되었으며, 이를 보완하기 위해 닷넷 2.0에서는 Binary 로 Serialize가 가능하도록 설계가 되었다.

다음과 같은 속성 지정을 통해 Binary로 Serialize가 가능하게 된다.

DataSet.RemotingFormat = SerializationFormat.Binary

이렇게 Binary 를 이용하는 경우 XML에 비해 빠르고 가벼우며, 다량의 데이터에서는 XML과 비교하여 좋은 성능을 가져오게 된다. 데이터 양이 줄어들면 처리에 따른 시스템 리소스가 절약 되며 네트워크 소통량이 줄어들게 되므로 더 나은 성능을 얻을 수 있게 된 것이다.

독립적인 DataTable
ADO.NET 2.0 이 갖는 큰 변화 중 하나는 독립적으로 DataTable을 사용할 수 있다는 것이다. 이전 버전에서 Serialize하기 위해서는 DataSet 내부에 DataTable이 포함되어야만 했다. 하자만, 일반적으로 하나의 DataTable을 처리하기 위해서 DataSet에 포함시킬 때 효율적이지 못한 경우가 종종 발생하였다. 이는 DataSet에서 시작하여 완료가 되어야 하는 구조였기 때문이다다. 이로 인해 많은 이들이 유연하면서도 편리한 독립적인 DataTable을 필요로 하게 되었으며 이번 버전에 이를 반영하여 DataTable을 독립적으로 Serialize할 수 있게 되었다.

독립적인 DataTable 지원을 통해 우리는 Web Service와 Remoting에서 DataTable을 사용(리턴)할 수 있게 되었으며, DataSet에서 수행했던 것들을 독립적인 DataTble 만으로도 수행이 가능하게 되었다. DataTable은 DataSet 처럼 XML에 대한 기본 메쏘드(ReadXML, ReadXMLSchema, WriteXML, WriteXMLSchema)를 지원한다.

DataTable의 새로운 메쏘드
새로운 DataTable은 이전에 비해 많은 메쏘드를 제공해 준다. 새로운 메쏘드 중 유용한 메쏘드 몇 개를 살펴보도록 하자.


ADO.NET 2.0 의 DataTable이 새롭게 제공하는 메쏘드 중 필자가 생각하는 주요 메쏘드를 간략히 정리해 보았다. 이 외에도 유용하게 사용될 수 있는 다양한 메쏘드가 제공이 되므로 MSDN등을 통해 찾아보길 바란다.

오늘 소개한 내용은 DataSet 및 DataTable이 갖는 새로운 변화 중 일부에 불과하다. 개인적으로 중요하다고 생각되는 부분을 소개한 것이며, ADO.NET 이라는 부분이 워낙 광범위하며 또한 중요하기 때문에 VB.NET 2005를 소개하면서 ADO.NET 2.0을 짚고 넘어가자는데 의미를 두었다. ADO.NET의 변화와 의미에 대해 다음 회에 계속하여 연재하도록 하겠다.

필자 심의준님은 MCSD .NET이며 웹젠에서 개발자로 근무 중이다.
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST