D/B에 관해서 처음배우게 되는 대학생입니다...
교수님께서 오라클, MS-SQL, MY-SQL의 특징과 차이점을 알아보라고 하셨는데...
D/B의 종류라는거 외에는
어딜찾아봐도 제대로 나와있지 않네요....
부디 여러분의 지식을 조금이나마 나눠주시면 감사하겠습니다....
학생이신가보네요...
외람된 말씀이지만....
정리된거 찾으시지 마시고요...
일단 책을 세권 사십시오.
천천히 가는 것이 가장 빠른 길입니다.
sybase 게시판에 가면 오라클과 사이베이스를 비교한 글이 올라와
있습니다. 그걸 보시면 아마 오라클과 ms-sql의 차이를 대략적으로
알수 있으실겁니다.
ms-sql의 엔진이 사이베이스의 엔진을 사용해서 만든것이기 때문에
대부분의 기능이 서로 호환됩니다. 따라서 오라클과 ms-sql을 비교
하는것을 사이베이스와 비교해도 된다고 봐두 되구요.
my-sql은 my-sql 홈페이지에 가면 기능에 대해서 잘 정리되어
있습니다. 따로 책없이 공부할 수 있을겁니다.
그럼.
그냥 기능을 나열하면 너저분하게 될 것 같고...
핵심적인 엔진의 차이를 말하라면...
오라클의 경우 완벽한 Row-level Locking (행단위 잠금)을 지원하지만 타 DBMS는 그렇지 않습니다.
즉, 내가 update emp set sal=30000 where ename = '홍길동' 을 실행했더니 다른 행도 같이 잠금이 걸리느냐 그렇지 않느냐의 차이입니다.
위처럼 '홍길동'을 업데이트했는데 같은 블록이나 페이지에 있었다는 이유로 '강감찬'도 같이 Lock이 걸린다면 동시성 제어에 병목이 더 심하게 발생하게 됩니다.
잠금에 기능에 차이가 있습니다.
MySQL은 기본적인 MyISAM Type 핸들러의 경우 table level locking입니다. 위와 같이 업데이트를 한다면 전체 테이블에 잠금이 걸려서 그 순간에는 다른 Update, delete, insert 작동을 할 수가 없습니다. DML 위주의 작업이라면 심각한 성능 저하를 경험할 수도 있습니다.
잘못은 한 놈이 했는데 단체 기합을 받아야하는 꼴입니다. 오라클은 잘못한 놈만 벌줍니다.
또 하나 오라클은 Multi-version read-consistent concurrency model 을 지원합니다. 즉, 읽기는 쓰기에 의해서 차단되지 않으면서 데이터에 대해서 여러개의 버전을 유지하면서 일관성을 지원할 수 있다는 이야기입니다.
은행 뱅킹 시스템이라고 가정합시다.
계좌 잔액을 모두 구하는 SQL이 있다고 한다면.... 하나의 계좌 테이블에서 수백수천만건의 레코드가 있을 것이고 이를 수행하는 도중에도 계좌에 대한 예금 인출, 이체 트랜잭션이 발생할겁니다. 이 때 어떻게 일관성을 유지시키느냐. 오라클의 경우 잔액을 조회하는 시점의 데이터로 고정되어 결과가 완벽하게 도출됩니다. 잔액 조회 SQL을 Run 하고 있는 도중에 누군가가 계좌에서 인출하거나 이체하더라도 그것이 잔액 조회 SQL의 결과에 영향을 주지 않습니다.
만약 타 DBMS라면 이러한 일관성을 제공하기 위해 해당 레코드를 읽는 동안에는 이체나 인출을 하지 못하도록 Lock을 걸어놔야 오라클 같은 일관성 모델을 제공할 수 있을겁니다.
즉, 오라클을 제외한 타 DBMS는 Select의 경우 의도하지 않았는데도 불구하고 Lock을 걸어 버릴 수 있습니다.
이게 가장 큰 차이점이고 핵심적입니다. 오늘날 오라클이 아직도 건재한 이유가 이 차이에 기인합니다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~KOVAIT DBMS 전문 컨설팅 업체 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~유지보수, 튜닝, 긴급복구, 데이터 이행, 버젼 업그레이드 지원
솔루션 사업부 기술지원팀 김주현 팀장Tel. (02) 566-4941
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
윗분들이 좋은 글들 많이 올리셨네요..
저 같은 경우는 My SQL을 다루어보지 않아서 뭐라고 말씀드리기 힘들지만..
사이베이스는 SQL Server와 유사합니다.
물론 현재는 SQL Server가 강한 면도 많아진 것 같습니다.
오라클은 최초의 상용DBMS로서 선두주자입니다.
현재 활성화 중인 다른 DBMS보다 10년이상(대략) 앞서 있었기때문에
그만큼 사용자(DBMS사용자)들이 어떤 걸 원하는지 잘 알고 있는 것
같습니다. 그래서 원하는 거의 모든 기능을 갖추고 있습니다.
오라클의 기세가 워낙 세다 보니 학자들도 오라클에 많은 충고와 철학을
전해주는 것 같습니다.
어찌보면 오라클이 선택한 기능들은 이론적으로 검증되었다고 볼 수도 있죠..
바로 위 김주현님이 중요한 지적을 해주셨는데..
그것들이 바로 중요한 차이점입니다.
그래서 차이점을 비교하자면 항상 오라클 대 비오라클 이런식으로 가게 되는 거죠..
여러가지 DBMS가 많이 있지만 전부다 검토하긴 힘듭니다.
제 의견은 많이 사용되는 두 가지 오라클과 SQL Server만 비교해도
어느 정도 원하시는 답을 구할 수 있을 것 같습니다.
두 DBMS에 대해 비교에 대한 많은 자료들이 있지만 제가 본 가장 좋은
자료는 Microsofr SQL Server 2000 : Resource Kit 이라는 책에
나와있는 내용입니다. 꼭 필요하지 않으시면 빌려보셔도 좋습니다.
약간은 SQL Server적인 입장에서 쓴 부분도 눈에 띄지만..
제가 볼때는 오라클에 대한 내용도 나름대로 자세하게 객관적으로
설명하고 있습니다.
그 책의 챕터중에
Oracle 데이터베이스를 SQL Server 2000으로 마이그레이션하기
란 부분이 있습니다. 이부분에서 두 DBMS의 차이점을 나열한 곳이
있으니 참고하시기 바랍니다. ^^