DBMS 1 - 종류
DBMS란 Database Management System의 약자로 사용자가 데이터를 효과적으로 정의하고, 삽입/삭제나 규칙 설정 및 조작을 가능하도록 도와주는 일련의 소프트웨어 시스템이다. 그러나 반드시 DB를 구축해야 하는 것은 아니다. 이미 대부분의 시스템이 지나치게 복잡하고, DB를 구축할 경우 Single point of failure나 Cost 등 여러 다른 요소가 존재하므로 필요한 상황에 알맞게, 적절한 DBMS를 선택하여 구축하거나 혹은 도입하지 않는 것이 현명하다. 다만, 현대에 이르러서는 일정 이상 크기를 가지는 시스템은 대부분 상황에 알맞은 DB를 도입하여 사용하는 추세이다.
널리 사용되는 상용 DBMS에는 Oracle, MySQL, Microsoft SQL Server, PostgreSQL, MongoDB, IBM DB2, Redis, Microsoft Access, Cassandra, MariaDB 등 수많은 종류가 있다. 이들은 cost나 performance에 있어 각각 서로 다른 특징을 가지고 있으므로 알맞은 특성을 잘 살려 선택하는 것이 중요하다.
1. Oracle Database
Oracle Database는 가장 규모가 크고 많이 사용되는 RDBMS이다. DBMS 시장에서 부동의 1위를 지키는 이유는 업계에서 오래된 역사와 규모를 통한 신뢰성과 안정성이다. 금융계 대기업 등지에서는 고객 정보 관리가 매우 중요하기에 대부분 책임소재가 명확하고 빠른 해결이 가능한 오라클을 많이 사용한다. DB에 포함된 Oracle Data Guard나 Oracle Flashback 등의 프로그램은 특정 시점으로 데이터를 되돌리거나 온라인 백업 등 다양한 기능을 지원한다.
RDBMS이므로 Row와 Column으로 구성된 table 형태로 data를 구성한다. 또한 array나 user defined type, graph나 XML 등 더 복잡한 자료형도 구성 가능하다. SQL을 통해 data management를 할 수 있고, UNIX/LINUX 등 multiplatform 지원도 가능하다. 또한 Scalability에 있어 vertical/horizontal 모두 가능하다. 특히 horizontal scalability는 Oracle Real Application Cluster(RAC)로 이루어지며 높은 유효성과 결함 허용성을 지니게 해준다. (vertical scale up은 cpu를 더 고성능으로 바꾸는 형태/horizontal scale up은 다수의 server/node를 연결하여 system에 연결된 cluster/network를 만드는 것)
데이터베이스 측면에서 보면 다수의 사용자가 동시 접근이 가능하고, 여러 개의 database를 튜닝 가능하다는 장점이 있다. 또한 변경 시 실 구현 이전에 효과를 확인할 수 있어 생산에 영향을 최소화할 수 있다. 또한 DBMS 실행 컴퓨터, 서버, DB 응용 프로그램 실행 컴퓨터 등 여러 개로 분산처리가 된다. 또한 타 데이터베이스보다 고성능의 transaction을 처리하며 사용하는 cost를 최적화하기 위해 table과 index를 분석해준다는 장점이 있다.
그러나 비용적인 측면에서 많은 부담이 발생하며 기능이 많아 초보자가 사용하기 어렵다. 또한 하드웨어의 사양이 충분히 받쳐줘야 시스템을 구축할 수 있다는 단점이 있다.
2. MySQL
MySQL은 Oracle에 이어 두 번째로 많이 사용되는 RDBMS이다. Oracle과 동일하게 SQL문으로 data management가 가능하며 Row와 column로 구성된 table로 data를 저장한다. 그러나 Oracle과 달리 오픈소스 툴로 무료 사용 가능하고, 구조가 간단하여 속도가 매우 빠르며 사용하기 쉽다는 장점이 있다.
Oracle과 달리 data storage engine을 교체 가능하다. default로는 InnoDB가 사용되고 있지만 MyISAM, NDB 등 다른 engine을 사용할 수도 있다. (일반적으로 MyISAM이 InnoDB보다 입출력 속도가 빠르지만 특정 쿼리문에서는 InnoDB가 더 빠른 경우도 존재한다. 따라서 대용량 데이터 컨트롤이나 transaction 관리, 데이터 복구 및 정렬 구문 등을 사용할 때는 InnoDB가 더 유리하고, 읽기 위주의 작업이나 전문 검색 등의 작업만 하는 경우에 MyISAM을 사용하는 것이 좋다.)
시스템을 구축하는데 필요한 용량이 상대적으로 적다. 주로 웹 애플리케이션 적용에 가장 많이 사용되고 있다. Oracle과 동일하게 scalability를 지원하지만 Oracle이 좀 더 규모가 큰데 반해 MySQL은 상대적으로 작은, 웹/커머셜 정도의 크기를 가지고 있다.
데이터 베이스의 크기에 따라 partitioning / sharding 모두 가능하다는 장점이 있다. Oracle은 sharding을 지원하지 않는데, MySQL은 모두 지원한다.(Partitioning은 한 컴퓨터에 데이터를 분할하여 저장하는 방법, sharding은 서로 다른 컴퓨터에 데이터를 분할하여 저장하는 방법으로 데이터베이스 차원의 Scale out)
GPL 라이선스에 의해 무료로 사용 가능하며, 변형한 후에도 변형한 소스코드를 같이 제공하거나 공개하여 사용할 수 있다. 따라서 굳이 유료 버전을 사용할 필요는 없지만 백업/모니터링 등의 공식 고객지원이 유료버전에 포함되어 있으므로 어느 정도 안정성이 필요하거나 규모가 큰 경우에는 유료버전을 사용하는 것이 더 나을 수 있다.
3. Microsoft SQL Server
이름에서 알 수 있듯이 주로 윈도우 기반의 환경에 맞춰져 있다. 앞선 두 RDBMS에 이어 그 다음으로 많이 사용되는 종류로, 마찬가지로 관계형 데이터베이스라 table 기반, 그리고 SQL문을 지원한다. 사용자 편의에 있어 Microsoft 마법사로 구성된 부분이 많아 복제나 튜닝 등을 상대적으로 쉽게 할 수 있다는 장점이 있다. 또한 query optimizer를 통한 효율적인 query execution plan을 생성하여 성능 개선이 있다.
다만 Microsoft의 가격정책과 지원사양이 매 버전 업을 할 때마다 많이 변화하여 상대적으로 앞선 두 모델에 비해 점점 경쟁력이 떨어지는 것으로 보인다. Oracle이 대규모 서버, MySQL이 웹 서버 및 개인용 DB로 확실한 타겟이 있는데 반해, SQL server는 그 중간 규모로 좀 어중간한 면이 있다.
4. PostgreSQL
주로 복잡한 데이터 처리가 필요할 때 많이 사용된다. SQL문 중에서도 복잡한 쿼리문을 지원하므로 data warehousing 및 analytical application에서 많이 사용되는 DBMS 선택지이다. MySQL과 동일하게 오픈소스이므로 무료로 사용할 수 있다. Oracle과 호환되는 부분이 존재하여 전환이 용이하며 extension에 있어 다양한 언어로 원하는 기능을 추가할 수 있다.
5. MariaDB
MySQL은 현재 Oracle의 소유이므로 오픈소스라는 강점이 사라질 수 있다는 위험이 있다. 따라서 MySQL의 초기 개발자들이 새로이 만들어 MySQL과 동일하게 오픈소스로 남아있는 DBMS가 MariaDB이다. 따라서 작고 가벼우며, 웹 어플리케이션에 뛰어난 등 MySQL과 유사한 부분이 많다. 그러나 Sequence나 Synonym, package 등 object 기능을 지원하지 않는다.
종합하면, 일정 규모 이상의 프로젝트 일 때 관리해야 할 데이터가 critical한 부분이면 Oracle DB를, 아니라면 MySQL을 쓰는 것이 가장 효율적일 것이다. 그러나 하드웨어의 허용상한이 점점 커지고 있으므로 금융권 이외의 데이터 관리에는 앞으로 MySQL이 더 효율적인 판단이라고 고려된다.
댓글
댓글 쓰기