- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
데이터아키텍처전문가 - 국가공인자격 데이터베이스 선정에는 비밀이 있다 - 2부
2015.01.15 19:01
| 제목 | 데이터베이스 선정에는 비밀이 있다 - 2부 | ||
|---|---|---|---|
| 조회수 | 2937 | 작성일자 | 2013.09.22 |
|
데이터베이스의 성능에
숨겨진 비밀을 찾아라. 데이터베이스를 도입하는 경우 많은 곳에서는 어떤 데이터베이스가 성능이 더 좋은지를 테스트 하는 경우를 많이 보았다. 데이터베이스 성능을 테스트하는 과정이 필자로서는 의아하지 않을 수 없다.
도대체 무슨 기준을 가지고 데이터베이스의 성능을 테스트하는 지가 궁금하지 않을 수 없었다.
데이터베이스의 성능 테스트가 데이터베이스의 엔진 성능을 테스트하는 것인가? 아니면 실제
데이터를 저장하고 데이터를 엑세스하는 속도를 확인하는 것인가? 또 하나 생각할 수 있는 것이
데이터베이스에서 제공하는 언로딩(Unloading) 및 로딩(Loading) 등의 기능 테스트인가?
데이터베이스의 엔진 성능 테스트라면 이는 성능 테스트를 수행하지 않아도 될 것이다.
데이터베이스 엔진 테스트는 의미 없는 테스트일 수 있다는 것이다. 기존에 판매하는
데이터베이스는 오랜 기간 검증을 받아왔다. 그런 과정에서 많은 버그들이 고쳐졌고 버전을 올리면서 엔진
자체는 점점 신뢰가 높아지게 되었다. 이처럼 오랜 시간에 걸쳐 진보한 데이터베이스 엔진에 대해 과연
몇 가지 항목에 대해 엔진 테스트를 수행하는 것이 어떻게 보면 맞지 않는 테스트가 된다는 것이다.
엔진 테스트 결과를 가지고 할 수 있는 것이 없기 때문이다.
성능 테스트가 데이터에 대한 엑세스 성능을 확인하는 것이라면 이는 매우 중요한 항목일 수 있다.
하지만 이러한 데이터에 대한 엑세스 성능을 테스트하기 위해서는 데이터베이스의 정확한 특성을 이해해야만 가능하다. 오라클의 경우는 기본적으로 테이블 생성시 인덱스를 생성하지 않게 된다.
하지만 SYBASE 제품 중 ASIQ는 테이블
생성과 동시에 각 컬럼에 인덱스를 생성하게 된다. 이러한 상태에서 테이블의 컬럼으로 조건을 설정하여
조회한다면 과연 어떤 데이터베이스가 성능을 보장할 수 있겠는가? 당연히
ASIQ의 속도가 월등히 좋을 것이다. 과연 이와 같이 성능 테스트를 수행한다면 공평한
테스트가 되겠는가? 데이터 엑세스에 대한 성능 테스트는 공평한 조건에서 수행해야 정확한 성능 차이를
확인할 수 있을 것이다. 많은 사람들은 특정 데이터베이스가 속도가 빠르다는 이야기를 한다. 하지만 이와 같이 말할 수 있는 근거는 없을 것이다. 아마도 실제
사용해본 느낌을 이야기하는 것일 것이다. 이러한 데이터 엑세스의 속도는 데이터베이스의 종류에 의한
차이보다는 어떻게 SQL을 작성하고 어떻게 SQL을
수행했는지에 따라 천차만별이다. 결국, 데이터베이스의
종류에 의한 데이터 엑세스 성능 차이는 거의 없을 것이다.
성능 테스트 중 로딩 또는 언로딩 등의 기능 테스트는 데이터베이스를 도입하는 경우 반드시 수행해야 하는 성능 테스트이다. 엔진이나 또는 데이터 엑세스 성능은 별로 의미가 없을 수 있지만 이와 같은 기능 테스트는 중요한
항목이다. 이는 기능 테스트의 결과에 의해 많은 업무에 영향을 주기 때문이다. 대부분 데이터베이스에는 데이터를 데이터베이스로 저장하거나 데이터베이스에 저장되어 있는 데이터를 추출하는 기능을 제공한다. 오라클의 경우는 SPOOL 기능을 제외하고는 데이터를 텍스트
파일로 추출하는 기능을 제공하지는 않는다. 이와 같이 텍스트 파일로 데이터를 추출할 수 없다는 것은
단점일 수 있다. SYBASE 및 UDB 등 다른
데이터베이스는 이러한 데이터 추출 기능을 제공하게 된다. 이러한 일반 운영 업무에 사용되는
데이터베이스의 기능에 대한 성능 테스트를 수행하여 데이터베이스 선정 시 고려해야 할 것이다. 이와 같이 데이터베이스의 성능은 데이터베이스의 기능 위주로 테스트하면 될 것이다.
불필요한 데이터 엑세스 속도 또는 엔진 성능은 잘못하면 시간 낭비가 될 수 있다. 이것이
데이터베이스 선정의 숨겨진 두 번째 비밀이다. 그렇다면 데이터베이스의 데이터 엑세스에 대한 성능은
어떻게 테스트 해야 하는가? 이는 어플리케이션을 고려하여 이루어져야 할 것이다. 데이터베이스의 성능은
어플리케이션에 좌우된다. 데이터베이스 선정 시 데이터 엑세스에 대한 성능을 고려하지 않는다면 무엇으로 데이터 엑세스에 대한 성능을 보장할 것인가? 데이터베이스를 사용하는 대부분의 시스템에서 발생하는 성능 문제는 데이터베이스에 의해 발생한다. 이는 데이터를 저장하고 있는 데이터베이스를 엑세스하는 과정에서 조금의 비효율이라도 존재한다면 이는 전체에
엄청난 성능 저하를 발생시킬 수 있기 때문이다. 아직도 이러한 사실을 모르는 사람들이 많다는 것이
문제이다. 왜
데이터 엑세스에 비효율이 발생한다면 성능은 엄청난 저하가 발생하겠는가? 예를 들어, 10만 건 엑세스하여 1건의 데이터를 추출하는 경우와 1건을 엑세스하여 1건을 추출하는 경우를 비교해보아라. 과연 어느 것이 성능을 보장할 수 있겠는가? 당연히 1건의 데이터를 엑세스하여 1건의 데이터를 추출하는 경우가 속도를
보장할 수 있을 것이다. 이처럼 많은 데이터를 엑세스한다는 것은 디스크
I/O의 증가 한다는 것이며 이에 따라 성능은 저하된다는 것이다. 항상 1건을 엑세스하여 1건의 데이터를 추출할거라고 생각하지만 10만 건을 엑세스하여 1건을 추출하는 경우도 많다. 따라서 데이터 엑세스에 의한 성능은 데이터베이스 자체에 의한 것보다는 데이터베이스를 엑세스하는
SQL에 의한 문제일 경우가 많다. 따라서 이러한 항목을 데이터베이스 도입 시 추가한다는
것은 사실 무의미할 수 있을 것이다. 그렇다면 데이터베이스 선정 시 데이터 엑세스에 의한 성능은
고려하지 않아도 되는 것일까? 당연히 고려해야 하여 데이터베이스 선정 시 고려해야 하는 사항은 실제
개발을 수행할 인력인 어떠한 데이터베이스에 더 익숙해 있는가를 파악해야 할 것이다. 이것이 데이터
엑세스에 대한 성능을 보장할 수 있는 비밀이 될 것이다.
앞서 가용성과 성능에 대해 우리가 쉽게 잊고 간과할 수 있는 데이터베이스 선정의 비밀에 대해 확인해 보았다. 이러한 항목을 데이터베이스 선정 기준에 체계적으로 추가한다면 최적의 시스템을 구축하기 위한 좀더 효율적인
데이터베이스 선정이 이루어지라 믿는다.
| |||
[출처] http://www.dbguide.net/knowledge.db?cmd=specialist_view&boardUid=174732&boardConfigUid=83&boardStep=0&categoryUid=
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86063 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78588 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95313 |

