이번에 면접을 보면서 가장 많이 받은 질문이다. 비록 세개의 DBMS를 사용해보지 않았다 하더라도 차이점을 알아두는 것은 여러모로 유용할 것같다. 그런데 막상 비교하려면 어떤 성능이라든가, 기능에대해 비교를 해야겠지만 막상 셋다 기능은 비슷하게 지원이 가능하고, 성능을 테스트 하기에는 나에게는 조금 버겁다. 그렇다고 해서 쿼리문이나 내장함수가 다르다고 말할 수 도 없는 노릇이고.
그래서 이번글은 테크니컬한 글은 아니므로 그냥 '이런 사람도 있구나 하고' 넘어가면 좋을거 같다. 면접에서 유리한 대답이 아닌, '실무에서 이렇게 쓰이더라' 라는 경험을 한번 써볼까 한다.
현장에서 살펴본 현실을 이야기해보자면 돈이 있는곳은 오라클을 선호하고, 돈이 적거나 중소기업들은 대체로 MySQL을 선호하고, 전화기와 같은 장비 업체들이 서버를 윈도우로 두어야 해서 MSSQL을 사용하는등 크게 3가지로 나뉘는걸 보았다.
그게 아니라면 이전 시스템을 구축하던 사람이 선호하는 DBMS를 따라가는 경우도 많이 보았다. 그중에는 어쩔수 없이 바꾼경우도 있는데, 일했던 회사중엔 네트워크 감시 솔루션을 제공하는 회사였는데, 기존에 MSSQL을 쓰면서 유지비용 및 단가가 더 나가니 MYSQL로 바꾸는 걸 보았다.(그 과정은 쉽진 않았다)
대부분의 대기업들은 ORACLE이 대세를 이루었다. 그래서 큰 프로젝트를 많이 다닌 사람이라면 ORACLE을 더 잘 다루는 거 같다. 그런데 그거 왜써요? 라고 물어보면 대답하는 사람이 별로없다. 편해서? 라는 말을 가장 많이 들어본거 같다.(나도 ORACLE이 가장 편하다)
내 경험으론 ORACLE을 많이 쓰는 이유중 많이 대중화 되어있고(대기업 위주로) 그만큼 실력과 많은 레퍼런스가 쌓였으며 소위 돈으로 떼울 수만 있다면 각종 문제점을 해결할 수 있다. 데이터 누실로부터의 안전성부터 시작해서, DB 튜닝까지 다양한 방면이 ORACLE에 몰려있다. 간단하게 생각해봐도 대기업들이 그 시스템만 쓰다보면 사람들의 기술발전도 그쪽으로 몰리기 마련이고, 특히 DB튜닝 같은것은 대용량 처리를 시작하게 되면 필요하게 되는거라 그런 전문적인 것은 한참 후의 일이기도 하다. 물론 상대적으로 간단한 DB튜닝(인덱스, 힌트, 테이블 재정의 등 각종 방법)등은 나도 해본적이 있고 필요하면 쓰지만 거기서 더 확장해서 DBMS 의 구조자체를 뜯어보며 튜닝하진 않는다. 그런곳은 데이터가 월 몇테라씩 쌓이는 곳이니까.(그것조차도 분할해서 하는 경우도 있지만)
다만 유료인 만큼 유용한 기능도 정말 많다. 내장함수도 쓸만한게 많고, 성능도 잘 나오고, 파티션 시스템은 대용량 처리에도 좋고, 힌트도 적절하게 사용하면 퍼포먼스가 좋다. 그리고 많은 사람들이 쓰는 만큼 Trigger, Job, PL-SQL, View 등 각종 기능에 대해 찾아보는 것도, 사용하는 것도 유리하다. 이전에 어떤 프로젝트에서는 MySQL에서 재귀호출 해주는 함수가 없어 직접 짜는걸 보기도 했다. (오라클은 Start With 를 통해 간단히 해결). 생각해보면 이런 은연중 자주쓰이는 함수들이 부재함으로써 개발비용이 추가적으로 든다는건 단점이라면 단점이라고도 할 순 있겠구나 싶다.
아이러니 한 것은 PL-SQL이나 트리거 등 내장함수 OR 프로시져 사용에 대해 조금 인색하다. 둘다 성능이 딱히 무엇이 더 좋고 한것도 없는데, 대기업은 이런 것을 적극적으로 활용하는 반면, 중소기업은 이런것도 유지보수 할 것이 늘어난다고 판단하는지 불편해했다. 결국 Language로 컨트롤 해줬는데, 지금도 아이러니 하게 생각하는 것중 하나다.
MSSQL은 사용하는 곳은 매우 적었다. 아마 내 주 Language가 JAVA이다 보니 대부분 리눅스 기반 서버라 ORACLE과 MySQL로 나뉘는 듯 하다. MS 쪽 Language를 쓰시는 분들은 MSSQL을 많이 쓰는거 같은데 아마 당분간도 보기 힘들거 같다.
그냥 재미삼아 다른점을 정리해 보았다. 나역시도 오라클을 쓰는걸 선호하지만 MySQL도 좋게 생각한다. 다만, 대기업은 사업의 크기만큼 DB를 통한 다양한 퍼포먼스에 대해 고민하게 만들고 다양한 함수 or 기능사용이 유도되는데 반해 중소기업에서는 당장 하나를 제대로 구현하는것도 바빠보여서 그런 기술적인 접근은 좀 불편해 하는거 같았다. 뭐, 이런것도 개인의 취향이니까.
'공부 > 프로그래밍' 카테고리의 다른 글
[MYSQL] PL-SQL 에서 변수 안에 값 보기 (0) | 2017.04.10 |
---|---|
AngularJS 쓸까, 말까? (0) | 2017.04.07 |
log4j 설정(Java 로 설정하기) (0) | 2015.12.04 |
리눅스 포트(port) 및 방화벽(firewall) 설정 (0) | 2015.11.21 |
오라클 컬럼 & 설명 추가 (0) | 2015.10.16 |
댓글