검색 결과가 없습니다

검색어와 일치하는 결과가 없습니다.

원하시는 정보를 찾는 데 도움이 되도록 다음을 시도해 보십시오.

  • 검색에 사용하신 키워드의 철자가 올바른지 확인하십시오.
  • 입력한 키워드에 동의어를 사용하십시오. 예를 들어 “소프트웨어” 대신 “애플리케이션”을 사용해 보십시오.
  • 아래에 표시된 인기 검색어 중 하나를 사용해 보십시오.
  • 새로운 검색을 시작하십시오.
인기 질문

관계형 데이터베이스란?

관계형 데이터베이스(relational database)는 상호 관련된 데이터 포인트에 대한 액세스를 저장하고 제공하는 데이터베이스의 한 형태입니다. 관계형 데이터베이스는 데이터를 테이블에 직관적으로 간단하게 나타내는 관계형 모델을 기반으로 합니다. 관계형 데이터베이스에서 테이블의 각 열은 키(key)라고 하는 고유 ID를 가진 레코드입니다. 테이블의 컬럼(column)은 해당 데이터의 속성을 가지며, 각 레코드는 일반적으로 각 속성에 대한 값을 가지므로 데이터 포인트 간 관계를 손쉽게 구축할 수 있습니다.

관계형 데이터베이스 예시

주로 소규모 기업에서 제품 주문 처리에 사용하는 두 개의 테이블을 예로 들어보겠습니다. 첫 번째 테이블은 고객 정보 테이블로서, 각 레코드에는 고객의 이름, 주소, 배송 및 청구서 정보, 전화번호, 기타 연락처 정보가 담겨있습니다. 각 정보(속성)는 각자의 컬럼에 속해있고, 데이터베이스가 각 열에 고유 ID(키)를 할당합니다. 두 번째 테이블은 —고객 주문 테이블—로서, 각 레코드에는 주문 고객의 ID와 주문된 제품, 수량, 선택된 사이즈 및 색상 등—이 포함되지만 고객의 이름이나 연락처 정보는 포함되지 않습니다.

이 두 테이블이 공유하는 것은 단 하나입니다. 바로 ID 컬럼(키)입니다. 그러나 이 공통 컬럼 덕분에 관계형 데이터베이스는 이 두 테이블 사이에 관계를 생성할 수 있습니다. 이제 회사의 주문 처리 애플리케이션이 데이터베이스에 주문을 제출하면 데이터베이스는 고객 주문 테이블로 가서 해당 제품 주문에 관한 정확한 정보를 가져오고 해당 테이블의 고객 ID를 사용하여 고객 정보 테이블에 있는 해당 고객의 청구서 및 배송 정보를 조회합니다. 이제 창고에서 정확한 제품을 반출하면 고객은 주문품을 적시에 전달 받고 회사는 대금을 수령할 수 있습니다.

관계형 데이터베이스의 구조

관계형 모델은 데이터 테이블, 뷰 및 인덱스와 같은 논리 데이터 구조가 물리적인 스토리지 구조와 분리되어 있음을 의미합니다. 이러한 분리 덕분에 데이터베이스 관리자는 논리 구조로서의 해당 데이터에 대한 액세스에 영향을 미치지 않고 물리적인 데이터 스토리지를 관리할 수 있습니다. 예를 들어, 데이터베이스 파일의 이름을 변경하더라도 그 안에 저장된 테이블의 이름은 변경되지 않습니다.

논리와 물리 사이의 구별은 데이터베이스 운영에도 적용되는데, 이는 애플리케이션이 데이터와 데이터베이스의 구조를 조작할 수 있게 해주는 명확히 정의된 액션입니다. 논리 오퍼레이션은 애플리케이션이 필요한 콘텐츠를 지정하도록 해주고, 물리 오퍼레이션은 해당 데이터에 대한 액세스 방법을 결정한 후 해당 작업을 수행합니다.

데이터의 정확성과 접근성을 항상 보장하기 위해 관계형 데이터는 특정한 무결성 규칙을 따릅니다. 예를 들어, 어떤 무결성 규칙은 하나의 테이블에 중복된 열이 존재할 수 없도록 지정함으로써 데이터베이스에 잘못된 정보가 유입될 가능성을 차단합니다.

관계형 모델

초창기 데이터베이스에서는 각 애플리케이션이 자체 고유 구조 안에 데이터를 저장했습니다. 따라서 개발자들은 해당 데이터를 사용하기 위해 애플리케이션을 개발할 때 그들이 원하는 해당 데이터를 찾으려면 특정 데이터 구조에 대해 많은 것을 알아야만 했습니다. 이러한 데이터 구조들은 비효율적이고 유지보수가 어려우며 애플리케이션 성능을 높이는 최적화 작업도 어려웠습니다. 이러한 다수의 임의 데이터 구조 문제를 해결하기 위해 관계형 데이터베이스 모델이 개발되었습니다.

관계형 모델은 모든 애플리케이션에서 사용 가능한 표준적인 데이터 표시 및 쿼리 방식을 제공했습니다. 처음부터 개발자들은 직관적이고 효율적이며 유연한 방식으로 구조화된 정보를 저장하고 액세스할 수 있는 테이블의 사용이 관계형 데이터베이스 모델의 최대 강점이라고 인식했습니다.

이후 개발자들이 구조화된 쿼리 언어(SQL)를 사용하여 데이터베이스 내 데이터 쓰기 및 쿼리를 수행하기 시작하면서 SQL이 관계형 모델의 또 다른 강점으로 부상했습니다. SQL은 데이터베이스 쿼리 언어로서 오랫동안 널리 사용되어 왔습니다. 관계 대수를 기반으로 하는 SQL은 모든 데이터베이스 쿼리의 성능을 보다 쉽게 개선할 수 있게 해주는 내부적으로 일관적인 수학적 언어를 제공합니다. 반면, 다른 방식들은 개별 쿼리를 정의해야 합니다.

관계형 데이터베이스의 이점

단순하지만 강력한 관계형 모델은 모든 유형과 규모의 조직들이 광범위한 정보 요구를 충족하기 위해 사용하고 있습니다. 관계형 데이터베이스는 재고 추적, 전자 상거래 트랜잭션 처리, 대량의 미션 크리티컬 고객 정보 관리 등 다양한 용도로 사용됩니다. 관계형 데이터베이스는 데이터 포인트가 서로 관련이 있고 안전하고 규칙을 기반으로 일관성 있게 관리되어야만 하는 정보 요구사항에 고려해볼 수 있습니다.

관계형 데이터베이스는 1970년대 등장한 이래로 계속해서 발전해왔습니다. 이러한 장점들 덕분에 관계형 모델은 지금까지도 데이터베이스용 모델로 가장 널리 사용되고 있습니다.

데이터 일관성

관계형 모델은 여러 애플리케이션과 데이터베이스 카피(인스턴스) 사이의 데이터 일관성을 유지하는 최고의 모델로 평가 받고 있습니다. 예를 들어, 고객이 ATM에 돈을 입금한 뒤 휴대폰으로 계좌 잔액을 조회할 때 고객은 입금액이 즉시 계좌 잔고에 반영되었기를 기대합니다. 관계형 데이터는 하나의 데이터베이스의 여러 인스턴스가 항상 동일한 데이터를 보유하도록 하여 이러한 유형의 데이터 일관성에 진가를 발휘합니다.

다른 유형의 데이터베이스가 대량의 데이터를 처리하는 데 있어서 이러한 일관성을 적시에 유지하기는 어렵습니다. NoSQL과 같은 일부 최신 데이터베이스조차도 “최종적인 일관성”만 제공하는 실정입니다. 이러한 원칙에서는 데이터베이스가 확장되거나 다수의 사용자가 동시에 동일한 데이터에 액세스할 때 데이터가 이를 “따라잡으려면” 일정한 시간이 필요합니다. 제품 카탈로그 목록 유지와 같은 일부 용도에서는 최종적인 일관성도 만족스러울 수 있지만, 장바구니 트랜잭션과 같은 중요한 비즈니스 운영에 있어서는 관계형 데이터베이스가 여전히 업계 표준으로 남아 있습니다.

커밋(commitment) 및 원자성(atomicity)

관계형 데이터베이스는 커밋(즉, 데이터베이스의 변경 사항을 영구적으로 확정하는 것)에 관한 엄격한 정책을 바탕으로 비즈니스 규칙과 정책을 매우 상세하게 처리합니다. 항상 함께 사용되는 세 가지 부품을 추적하는 인벤토리 데이터베이스를 예로 들어보겠습니다. 하나의 부품이 인벤토리에서 반출되면 나머지 두 부품도 함께 반출되어야 합니다. 셋 중 하나라도 재고가 없다면 세 부품 모두 반출하지 않아야 하며, 데이터베이스가 커밋을 하기 전에 반드시 세 부품 모두 재고가 있어야 합니다. 관계형 데이터베이스는 세 부품 모두에 대해 커밋을 수행할 수 있기 전까지는 하나의 부품에 대해 커밋을 수행하지 않습니다. 이러한 다면적 커밋 능력을 원자성(atomicity)이라고 합니다. 원자성은 데이터베이스 내 데이터 정확성을 유지하고 데이터베이스가 해당 기업의 규칙과 규정 및 정책에 부합하도록 보장하기 위한 핵심 요소입니다.

ACID 및 관계형 데이터베이스

관계형 데이터베이스의 트랜잭션을 정의하는 4개의 핵심 속성으로서 원자성(atomicity), 일관성(consistency), 고립성(isolation), 지속성(durability)을 말하며 보통 ACID로 불립니다.

  • 원자성은 하나의 데이터베이스 트랜잭션을 구성하는 모든 요소를 정의합니다.
  • 일관성은 하나의 트랜잭션이 완료된 후 데이터 포인트를 정확한 상태로 유지하기 위한 규칙을 정의합니다.
  • 고립성은 하나의 트랜잭션이 커밋되기 전까지는 그 효과가 다른 트랜잭션에 보이지 않도록 함으로써 혼동을 방지합니다.
  • 지속성은 트랜잭션이 커밋되고 나면 데이터 변경 사항이 영구적으로 확정되도록 보장합니다.

저장 절차 및 관계형 데이터베이스

데이터 액세스 과정에는 다수의 반복적인 작업이 수반됩니다. 예를 들어, 데이터 테이블에서 정보를 얻기 위한 간단한 쿼리 작업조차도 원하는 결과가 나올 때까지 수백 번 내지 수천 번을 반복해야 할 수도 있습니다. 이러한 데이터 액세스 기능들은 데이터베이스에 액세스하기 위해 특정 유형의 코드를 필요로 합니다. 애플리케이션 개발자들은 각각의 새로운 애플리케이션마다 이러한 기능들을 사용하기 위해 새로운 코드를 작성하는 것을 달가워하지 않습니다. 다행이도 관계형 데이터베이스는 단순한 애플리케이션 호출로 액세스 가능한 코드 블록들인 저장된 절차를 허용합니다. 예를 들어, 하나의 저장 절차는 여러 애플리케이션의 사용자들을 위한 일관적인 레코드 태깅을 제공할 수 있습니다. 저장 절차는 또한 개발자들이 해당 애플리케이션의 특정 데이터 기능들을 특정한 방식으로 구현하도록 지원합니다.

데이터베이스 잠금 및 동시성

다수의 사용자 또는 애플리케이션이 동일한 데이터를 동시에 변경하려고 시도하는 경우 데이터베이스 내 충돌이 발생할 수 있습니다. 잠금 및 동시성 기능은 충돌 위험을 줄여주고 동시에 데이터의 무결성을 유지해줍니다.

잠금 기능은 데이터가 업데이트 되는 동안 다른 사용자와 애플리케이션이 데이터에 액세스하는 것을 차단합니다. 일부 데이터베이스에서는 잠금 기능이 전체 테이블에 적용되어 애플리케이션 성능에 부정적인 영향을 미칩니다. 오라클 관계형 데이터베이스와 같은 다른 데이터베이스는 잠금을 레코드 수준에서 적용함으로써 해당 테이블 내 다른 레코드들의 가용성을 유지하여 애플리케이션 성능을 높이도록 도와줍니다.

동시성은 여러 사용자 또는 애플리케이션이 동일한 데이터베이스에서 동시에 쿼리를 요청하는 경우에 해당 활동을 관리합니다. 이러한 기능은 데이터 제어 정책에 따라 올바른 사용자와 애플리케이션에 대한 액세스를 제공합니다.

관계형 데이터베이스 선택 시 고려사항

관계형 데이터베이스에 저장된 데이터의 저장, 관리, 쿼리 및 조회에 사용되는 소프트웨어를 관계형 데이터베이스 관리 시스템(RDBMSf)이라고 합니다. RDBMS는 사용자와 애플리케이션, 데이터베이스, 그리고 데이터 저장, 액세스 및 성능 관리를 위한 관리 기능 사이의 인터페이스를 제공합니다.

데이터베이스 유형 및 관계형 데이터베이스 제품을 선택할 때 참고할 만한 몇 가지 요소가 있습니다. RDBMS의 선택은 비즈니스 요구에 따라 결정됩니다. 다음과 같은 문제를 고민해보십시오.

  • 데이터 정확성에 대한 우리의 요구사항은 무엇인가? 데이터 스토리지와 정확성은 비즈니스 논리에 의해 결정되는가? 우리가 보유한 데이터는 정확성을 엄격히 요하는가(예컨대, 재무 데이터 및 정부 보고서)?
  • 확장성이 요구되는가? 관리가 필요한 데이터의 규모와 예상되는 증가량은 어느 정도인가? 해당 데이터베이스 모델이 확장성을 위해 미러링된 데이터베이스 카피(분리된 인스턴스)를 지원해야 하는가? 그렇다면, 해당 모델은 이러한 인스턴스 사이에 데이터 일관성을 유지할 수 있는가?
  • 동시성은 얼마나 중요한가? 다수의 사용자와 애플리케이션이 데이터에 동시에 액세스해야 할 경우가 있는가? 해당 데이터베이스 소프트웨어가 데이터를 보호하면서 동시성을 지원하는가?
  • 성능 및 신뢰성에 대한 우리의 요구사항은 무엇인가? 고성능 고신뢰성 제품이 필요한가? 쿼리 응답 성능에 대한 요구사항은 무엇인가? 서비스 수준 계약(SLA) 또는 예기치 않은 다운타임에 대해 공급자는 무엇을 약속하는가?

미래의 관계형 데이터베이스: 자율 구동 데이터베이스

관계형 데이터베이스는 성능, 속도, 내구성 및 사용 편의성 측면에서 오랫동안 지속적으로 발전해 왔습니다. 그러나 이와 동시에 더욱 복잡해졌으며, 관계형 데이터베이스 관리는 오랫동안 어려운 업무로 인식되어 왔습니다. 개발자들은 비즈니스 가치를 창출할 수 있는 혁신적인 애플리케이션 개발에 집중하는 대신 대부분의 시간을 데이터베이스 성능 최적화에 필요한 관리 활동에 할애해야만 했습니다.

이제 자율 운영 기술이 관계형 모델의 강점을 바탕으로 새로운 유형의 관계형 데이터베이스를 선보이고 있습니다. 자율 구동 데이터베이스(또는자율 운영 데이터베이스)는 관계형 모델의 강점은 유지하되 AI, 머신 러닝 및 자동화 기술을 적용하여 쿼리 성능과 관리 작업을 모니터링하고 개선합니다. 예를 들어, 쿼리 성능을 개선하기 위해 자율 구동 데이터베이스는 쿼리 속도를 높이기 위해 인덱스에 대한 가설 검정을 수행하고 가장 우수한 것을 실무에 투입하며, 이 모든 과정을 자율적으로 진행합니다. 자율 구동 데이터베이스는 이러한 개선 활동을 인적 개입 없이 자체적으로 계속 수행합니다.

자율 운영 기술을 통해 개발자들은 반복적인 데이터베이스 관리 업무에서 벗어날 수 있습니다. 인프라 요구사항의 경우 개발자들이 더는 이를 미리 결정할 필요가 없습니다. 대신, 자율 구동 데이터베이스에서 데이터베이스 증가를 지원하기 위해 필요할 때 스토리지 및 컴퓨팅 리소스를 추가할 수 있습니다. 몇 가지 단계만 거치면 개발자들이 자율 운영 관계형 데이터베이스를 손쉽게 생성하여 애플리케이션 개발을 가속할 수 있습니다.