문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [include(틀:프로젝트 문서,프로젝트=나무위키 컴퓨터 프로젝트)] * 상위 항목: [[컴퓨터 관련 정보]], [[문헌정보학 관련 정보]] DataBase Management System. [목차] == 개요 == [[데이터베이스]]라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 응용프로그램이다. 즉, [[데이터]]의 관리에 특화된 프로그램이라고 생각하면 편하다. 널리 알려진 DBMS로는 [[오라클(회사)|오라클]]사의 [[오라클(회사)|오라클]]과 [[MySQL]][* [[2008년]] 2월에 [[SUN]]에 인수되었다가 2년 뒤인 [[2010년]] 1월에 [[오라클]]에게 인수되었다.],[[마리아DB]]의 [[MariaDB]], [[IBM]]사의 [[INFORMIX]]와 [[DB2]], [[MS]]사의 [[MS SQL SERVER]], [[알티베이스]]의 [[ALTIBASE HDB]], [[티맥스 소프트|티베로]]의 [[티베로]], [[NHN]]의 [[Cubrid]] 등이 있으며 그 외에도 다양한 상업용/오픈소스 제품들이 있다. == 기능 == * 중복 제어 : 동일한 데이터가 여러 위치에 중복 저장되는 현상을 방지한다. 데이터가 중복되면, 저장 공간이 낭비되고 데이터의 [[일관성]]이 깨질 수 있다. * 접근 통제 : DBMS는 사용자마다 다양한 권한을 부여할 수 있으며, 권한에 따라 데이터에 대한 접근을 제어할 수 있다. * 인터페이스 제공 : DBMS는 사용자에게 [[SQL]] 및 [[CLI]],[[GUI]]등 다양한 인터페이스를 제공한다. * 관계 표현 : 서로 다른 데이터간의 다양한 관계를 표현할 수 있는 기능을 제공한다. * [[무결성]] 제약 조건 : [[무결성]]에 관한 제약 조건을 정의/검사하는 기능을 제공한다. [[데이터베이스]]는 반드시 [[무결성]] 제약조건을 통과한 데이터만을 저장하고 있어야 한다. * [[백업]]/[[회복]] : 해당 항목 참고 == 종류 == * [[dBASE]] * [[오라클(회사)|오라클]] : DBMS 시장의 지배자. 가장 앞선 기술과 안정성을 가지고 있다는 사실에 이의를 달 사람은 없을 지도... ~~그리고 그거 팔아서 벌어들인 돈으로 [[SUN]]을 인수했다.~~ * [[MySQL]] : '''한때 [[오라클]]의 대항마'''로 군림한데다 ~~물론 오라클에게 먹힌 이후로는... 그래도 인수 전 못지않게 쌩쌩하게 돌아간다~~ 실질적으로 공짜로 쓰이는 녀석이라 많이 애용하는 녀석이다.[* Sparc 서버군과 JAVA를 가졌지만 DBMS가 없던 [[SUN]]사가 인수했으나 썬 자체가 이후 오라클에 인수되었다.] 특히 [[PHP]]를 쓴다면 [[필수요소]]. * [[https://mariadb.org/|MariaDB]] : MySQL이 오라클이 인수된 이후, MySQL의 기술진이 오라클을 나와서 만든 것. MySQL과 호환된다. * MS SQL Server : 마이크로소프트에서 만든 DBMS. 이 때문에 윈도우 서버와 궁합이 잘 맞는다. 주로 ASP, ASP.NET과 연동해서 사용한다. * DB2 : [[IBM]]에서 만든 DBMS. 보통 사용하는 기업에 와서야 이런 DB가 있는지 알게 되는 우리나라에서는 듣보잡 수준에 머물러 있는 DBMS로 성능이나 기능에선 [[오라클]] 에게.. 가격에선 [[MS SQL SERVER]]에게 밀리고 있는 안습한 존재이지만, 금융권, 특히 은행권에서는 중요한 DBMS. Unix를 사용하는 금융권은 [[오라클]]이나 [[INFORMIX]]를 사용하지만, IBM [[메인프레임]]을 사용할 경우에는 보통 DB2를 선택하는 경우가 많다.[* 애당초 IBM 메인프레임 시장을 겨냥해서 IBM이 직접 개발한 것이다.] * 티베로 : 국산 소프트웨어 회사인 [[티맥스소프트]]에서 개발한 국산 DBMS로 [[오라클]]과 매우 유사한 아키텍쳐를 가졌다. 저가 시장에서 나름 바람을 기대했으나 모기업인 [[티맥스소프트]]가 힘든 상황이 되면서 같이 안습인 상황. 법인을 [[티베로]]로 분리하여 살길을 모색하는 듯. * Cubrid : [[NHN]]이 운용중이다. * INFORMIX : IBM에서 만드는 상용 DB이다.[* 원래 인포믹스라는 별도의 회사였으나 UNIX용 RDB가 약한 IBM이 인수했다.] 주로 그룹웨어 같은 엔터프라이즈 시장에서 쓰이고 있다. * ALTIBASE HDB : 메인메모리 DBMS인 ALTIBASE를 시작으로, 최근 v6인 Zeta를 발표한 [[알티베이스]]의 메인 제품. 본래는 기존의 DBMS보다 빠르다는 장점으로 메인메모리 DBMS를 주력으로 밀었으나 v4부터는 용량한계를 극복하기 위해 디스크를 함께 활용한 하이브리드 형태의 DBMS를 출시하고 제품명도 ALTIBASE HDB로 변경했다. [[http://book.naver.com/bookdb/book_detail.nhn?bid=6761434|교육용 책도 발간했다]] * [[SQLite]] : SQL를 사용하여 DB를 파일로 저장하는 DBMS이다. 주로 소프트웨어에 내장하기 위하여 설계되었다. SQL 문법을 지원하기 때문에 사용이 편리하며, 파일 입출력을 구현하는 시간도 크게 단축하여 데이터 관리를 효율적으로 할 수 있다. [[안드로이드]] 나 [[iOS]]에서 DB엔진으로 사용한다. * XDM/RD : 히타치에서 제작한 상용 DB. * AIM : 후지쯔에서 제작한 DBMS. * [[PostgreSQL]] : 오픈소스 DBMS. 2016년 현재 [[MySQL]]과 함께 오픈소스 관계형 DBMS 시장의 쌍두마차. MySQL에 비해서 더 엄격한 타입체크 및 트랙잭션, 풍부한 기능들을 가지고 있다. 자세한 것은 항목참조. == 한계 == DBMS는 모든 종류 데이터를 관리하는 최선의 방법이 아니다. 복잡한 DBMS 일수록 트랜잭션, ACID 등의 많은 컨셉을 지원하기 위한 오버헤드가 발생한다. 때문에 [[휴대폰]]등의 [[임베디드]] 기기 같은 단순한 [[데이터베이스]](예를 들어 [[전화번호부]] 등)의 경우는 다중사용자나 [[회복]] 기능등을 뺀 단순한 [[DBMS]]등을 만들어 사용하기도 한다. 많은 DBMS는 비교적 크기가 작은 레코드를 수백만개씩 저장하는 것에 특화되어있다. 반대로 하나의 레코드가 몇십MB에서 GB급인 경우 데이터를 DB에 저장하면 쿼리시 오버헤드가 클 수 있다. 이 경우 원래 파일은 파일 시스템에 직접 저장하거나 파일시스템 스타일의 클라우드(Amazon S3 등)를 이용하고 그 경로만 DB에 저장하는게 바람직하다. [[실시간]] 데이터 처리가 필요한 경우(예를 들어 군용, 항공/우주용 등)에도 일반적으로 복잡한 기능을 제공하는 [[DBMS]]가 적합하지 않다. 다만, 통신망, 금융권등에서의 실시간 데이터 처리 개념[* 예를 들자면 SMS 전송 시스템 또는 금융권에서 계좌 이체와 같은 실시간으로 처리되어야 하는 업무단위.]에서는 [[오라클]]의 [[타임스텐]]이나 [[알티베이스]]의 [[알티베이스 HDB]]와 같은 MM DBMS(Main Memory DBMS) 또는 In Memory DBMS[* 메모리에 데이터베이스의 모든 자료를 올려놓고 insert, update, select와 같은 연산을 처리한다. 당연히 엄청나게 빠르다! 다만, 갑작스런 시스템의 종료, 예를 들자면 전원이 갑자기 나가버리는 상황에서 최대한 데이터의 유실을 막을 수 있어야 한다. MMDBMS의 선택 기준은 이와같은 유사시 안정성이다. 물론 디스크 기반 DBMS도 마찬가지이지만 메모리에 자료를 몽땅 올려놓고 사용하는 것 자체가 디스크를 기반으로 작동하는 것 보다 안정성이 훨씬 더 떨어질 수 밖에 없다.] 제품을 실시간 데이터 처리가 요구되는 구간에 사용하고 이력 데이터와 같은 저장성이 중요시 되는 데이터는 back-end 구간에 전통적인 디스크 기반 DBMS를 사용하는 방식으로 시스템을 구성하기도 한다.[* 예를 들자면 SMS 전송 자체는 매우 빠르게 이루어져야 하므로 Main Memory를 사용하는 DBMS가 전송관련 자료처리를 담당하고 전송이 완료(길어봐야 24시간이다.)된 후 속도가 크게 중요하지 않은 이력을 남기는 작업은 디스크 기반 DBMS가 설치된 구간에서 이루어 지도록 Data Flow를 설계한다.] [[검색엔진]]등 극단적으로 데이터가 크며, READ/WRITE간의 격차가 큰 경우에도 일반적인 [[DBMS]]를 사용하지 않는다. 이러한 경우는 MM DBMS와 [[No SQL]] 기술을 혼용하여 서비스를 구축한다. No SQL 기술이 응용된 사례가 페이스북의 쪽지 기능이다. [각주] [[분류:데이터베이스]] DBMS 문서로 돌아갑니다.