탐색 건너뛰기

데이터베이스란?

데이터베이스의 정의, 유형, 예

데이터베이스란?

가장 기본적인 정의에서 데이터베이스는 상호 관련된 정보의 컬렉션입니다. 종이에 식료품 목록을 쓰면 작은 아날로그 데이터베이스가 만들어지는 것입니다. 그러나 컴퓨터 과학에서 데이터베이스란 무엇일까요? 이 컨텍스트에서는 “데이터베이스”를 컴퓨터 시스템에 데이터로 저장되는 정보의 컬렉션으로 정의합니다(예: 지역 식료품의 재고).

데이터베이스의 용도

데이터베이스는 더 쉽게 관리하고 액세스할 수 있도록 데이터를 저장하고 구성하는 데 사용됩니다. 데이터 컬렉션이 확장되고 더 복잡해짐에 따라 데이터를 구성하고 액세스 가능하도록 하고 보호하기가 점점 더 어려워집니다. 이 문제를 해결하기 위해 관리 도구 계층이 포함된 DBMS(데이터베이스 관리 시스템)를 사용합니다.

데이터란?

데이터는 한 사람, 장소, 사물 또는 개체(엔터티라고 함)에 대해 캡처 및 저장된 모든 정보뿐만 아니라 해당 엔터티의 특성도 의미합니다.

예를 들어 지역 식당에 대한 정보를 캡처 및 저장하는 경우 각 식당은 하나의 엔터티이고 해당 이름, 주소, 영업시간은 해당 엔터티의 특성입니다. 자주 이용하는 식당에 대해 수집 및 저장하는 모든 정보가 데이터입니다.

데이터베이스 유형

데이터베이스는 광범위하게 관계형 데이터베이스와 비관계형 데이터베이스로 그룹화됩니다. 관계형 데이터베이스는 고도로 정형화되고 SQL(구조적 쿼리 언어)이라는 프로그래밍 언어를 이해합니다. 비관계형 데이터베이스는 매우 다양하며 다양한 데이터 구조를 지원합니다. 많은 비관계형 데이터베이스는 SQL을 사용하지 않으므로 흔히 NoSQL 데이터베이스라고 합니다.

데이터 구조 유형

테이블 구조는 데이터를 행과 열로 구성하는 관계형 데이터베이스 구조입니다. 행에는 엔터티가 포함되고 열에는 엔터티 특성이 포함됩니다. 넓은 테이블 또는 넓은 열 저장소는 빈 특성이 포함된 스파스 열을 사용하여 테이블에 포함할 수 있는 전체 열 수를 크게 늘립니다. 일부 공간이 비어 있으므로 넓은 테이블은 비관계형 데이터베이스 구조의 예입니다.

선형 구조에서는 요소가 시퀀스로 구성됩니다.

배열

연결된 목록

이진 트리

트리 구조는 요소를 단일 루트 노드에서 시작되는 부모-자식 관계가 있는 노드의 계층적 데이터베이스로 구성합니다.

그래프

그래프 구조에서는 요소가 서로 복잡한 관계가 있는 노드의 비계층 구조 네트워크로 구성됩니다.

해시 테이블

해시 기반 구조는 해시 테이블에 인덱스를 할당하여 관련 데이터를 연결하는 해시 함수를 사용하여 키를 값에 매핑합니다.

문서 중심 데이터베이스

문서 중심 데이터베이스에서는 엔터티에 관한 대량 정보가 단일 개체(문서)로 구성됩니다. 이 단일 개체는 다른 개체와 분리되어 있습니다. 개체는 서로 관련하여 매핑될 필요가 없으며 다른 개체에 영향을 주지 않고 단일 개체를 편집할 수 있습니다.

관계형 데이터베이스

관계형 데이터베이스(가장 일반적인 유형)에서 데이터는 각 엔터티에 대한 정보를 저장하고 행과 열을 통해 미리 정의된 범주를 나타내는 테이블로 구성됩니다. 이 정형 데이터는 효율적이고 유연하게 액세스할 수 있습니다.

관계형 데이터베이스의 예로는 SQL Server, Azure SQL, MySQL, PostgreSQL, MariaDB 등이 있습니다.

비관계형 데이터베이스

비관계형 데이터베이스는 비정형 또는 반정형 데이터를 저장하며, 관계형 데이터베이스가 하는 방식으로 열과 행이 있는 테이블을 사용하지 않습니다. 대신 비관계형 데이터베이스는 저장되는 데이터 형식의 특정 요구 사항에 맞게 최적화된 스토리지 모델을 사용합니다. 비관계형 데이터베이스를 사용하면 더 큰 분산 데이터 세트를 빠르게 액세스, 업데이트, 분석할 수 있습니다.

비관계형 데이터베이스의 예로는 MongoDB, Azure Cosmos DB, DocumentDB, Cassandra, Couchbase, HBase, Redis, Neo4j 등이 있습니다.

일부 비관계형 데이터베이스를 NoSQL 데이터베이스라고 합니다. NoSQL은 쿼리에 SQL을 사용하지 않거나 SQL만 사용하지는 않는 데이터 저장소를 의미합니다. 대신 NoSQL 데이터베이스는 다른 프로그래밍 언어 및 구문을 사용하여 데이터를 쿼리합니다. 많은 NoSQL 데이터베이스는 SQL 호환 쿼리를 지원하지만, 이 쿼리를 실행하는 방법은 일반적으로 기존 관계형 데이터베이스가 같은 SQL 쿼리를 실행하는 방법과 다릅니다.

비관계형 데이터베이스의 한 유형(개체 데이터베이스)에서는 개체 지향 프로그래밍을 사용합니다. 개체는 필드나 변수에 저장되는 상태(사실 데이터)와 메서드나 함수를 통해 표시되는 동작으로 인코딩됩니다. 개체는 영구적 스토리지에 영구적으로 저장하고 API나 도구 없이 직접 읽고 매핑할 수 있어 데이터에 더 빠르게 액세스할 수 있고 성능이 향상됩니다. 그러나 개체 데이터베이스는 다른 데이터베이스 유형만큼 널리 사용되지 않으며 지원하기 어려울 수 있습니다.

메모리 내 데이터베이스 및 캐시

메모리 내 데이터베이스의 모든 데이터는 컴퓨터의 RAM(Random Access Memory)에 저장됩니다. 이 유형의 데이터베이스를 쿼리하거나 업데이트할 경우 주 메모리에 직접 액세스합니다. 디스크는 관련되지 않습니다. 주 메모리(마더보드의 프로세서 근처에 있음)에 액세스하는 게 디스크에 액세스하는 것보다 훨씬 빠르기 때문에 데이터가 빠르게 로드됩니다.

메모리 내 데이터베이스는 일반적으로 가격이나 재고 데이터와 같은 자주 액세스하는 정보의 복사본을 저장하는 데 사용됩니다. 이를 캐싱이라고 합니다. 데이터를 캐시하는 경우 해당 복사본을 임시 위치에 저장하여 다음에 요청될 때 더 빠르게 로드되도록 합니다. 캐싱에 대해 자세히 알아보세요.

데이터베이스 예

데이터베이스는 보이지 않는 미스터리처럼 느껴질 수 있지만, 우리 대부분은 매일 데이터베이스와 상호 작용합니다. 관계형 데이터베이스, NoSQL 데이터베이스, 메모리 내 데이터베이스의 몇 가지 일반적인 예는 다음과 같습니다.

금융 거래

은행에서는 데이터베이스를 사용하여 잔액 조회부터 계좌 간 이체에 이르는 모든 고객 트랜잭션을 추적합니다. 이 트랜잭션은 거의 즉시 수행되어야 하며 대량의 트랜잭션 데이터는 항상 최신 상태여야 합니다. 이를 위해 은행에서는 다수의 고객, 트랜잭션의 빈번한 데이터 변경, 빠른 응답 시간을 처리할 수 있는 관계형 데이터베이스를 사용하여 빌드된 온라인 트랜잭션 처리 시스템을 사용합니다.

전자상거래 카탈로그

전자상거래 웹 사이트가 있는 경우 카탈로그에는 각각 다양한 특성이 있는 개별 제품이 포함됩니다. 문서 중심 데이터베이스(비관계형 데이터베이스의 예)는 개별 문서를 사용하여 단일 제품의 모든 특성을 설명합니다. 다른 제품에 영향을 주지 않고 문서의 특성을 변경할 수 있습니다. 메모리 내 데이터베이스는 일반적으로 재고 및 가격과 같은 자주 액세스하는 전자상거래 데이터를 캐시하는 데 사용되어 데이터 검색 속도를 높이고 데이터베이스에 대한 부하를 줄입니다.

소셜 네트워크

소셜 네트워크에 가입하면 해당 네트워크를 사용하는 모든 사용자의 비관계형 데이터베이스에 사용자의 정보가 추가됩니다. 해당 네트워크의 다른 사용자와 연결하면 사용자는 소셜 그래프의 일부가 됩니다. 친구 또는 전문가 연결의 필터링된 목록을 보고 해당 친구와 인맥이 아는 새로운 사용자를 검색할 수 있는 건 이 때문입니다.

맞춤형 결과

비관계형 데이터베이스는 매우 일반적인 현상이 되어 알아차리지 못할 수도 있는 온라인 개인화의 기반이 됩니다. 여행 웹 사이트를 통해 항공편을 예약하는 경우 호텔과 렌터카를 예약하는 옵션도 표시됩니다. 이 웹 사이트의 데이터베이스에는 시간, 비용 또는 노력을 절약해 주는 맞춤형 제안을 제공하는 데 사용되는 풍부한 비정형 정보(항공편 정보, 여행 선호 사항, 이전 자동차 또는 호텔 예약 사항)가 포함되어 있습니다. 마찬가지로 메모리 내 데이터베이스는 애플리케이션을 사용하는 동안 검색 기본 설정 또는 쇼핑 카트와 같은 임시 사용자 데이터를 효율적으로 저장하기 위한 세션 저장소로 사용됩니다.

비즈니스 분석

조직이 자체 데이터에서 인사이트를 얻으려는 경우 관계형 데이터베이스는 분석을 관리하는 데 도움이 됩니다. 예를 들어 기술 지원 센터는 문제 유형, 문제 해결 시간, 고객 만족도를 비롯한 다양한 차원에서 고객 문제를 추적할 수 있습니다. 테이블 구조를 사용하는 관계형 데이터베이스는 한 번에 두 개 차원을 사용하여 고객 문제 데이터를 구성하지만, 온라인 분석 처리 시스템을 통해 지원 센터에서 한 번에 두 개 이상의 테이블을 볼 수 있으므로 다차원 분석이 가능하여 많은 양의 데이터를 고속으로 처리할 수 있습니다.

데이터베이스 관리 시스템

데이터베이스 관리자는 DBMS(데이터베이스 관리 시스템)를 사용하여 데이터를 제어합니다(특히, 빅 데이터 작업을 수행하는 경우). 빅 데이터는 시스템에서 대개 실시간으로 또는 거의 실시간으로 수신하는 대량의 정형 및 비정형 데이터를 의미합니다. 또한 DBMS를 사용하면 여러 애플리케이션에서 사용되는 데이터나 여러 위치에 상주하는 데이터를 관리하는 데 도움이 됩니다.

서로 다른 관리 시스템은 각기 다른 수준의 조직, 스케일링 성능, 애플리케이션을 제공합니다. 구성하려는 데이터 형식 및 데이터 액세스 방법 외에, 사용하는 DBMS는 데이터가 상주하는 위치, 데이터베이스에서 사용하는 아키텍처 유형, 스케일링을 계획하는 방법에 따라 달라집니다.

데이터가 온-프레미스, 클라우드 또는 둘 다에 있습니까?

온-프레미스 데이터베이스에서 데이터는 프라이빗 온사이트 하드웨어(흔히 프라이빗 클라우드라고 함)에 상주합니다. 데이터 용량을 추가하려면 데이터베이스 관리자가 온사이트 서버에 사용할 수 있는 충분한 공간이 있는지 확인하거나 새 하드웨어로 인프라를 확장하여 공간을 만들어야 합니다.

클라우드 기반 데이터베이스에서 정형 또는 비정형 데이터는 프라이빗, 퍼블릭 또는 하이브리드 클라우드 컴퓨팅 플랫폼(즉, 프라이빗 클라우드 스토리지와 퍼블릭 클라우드 스토리지를 결합하는 플랫폼)에 상주합니다. 클라우드 데이터베이스는 가상화된 환경에 맞게 디자인되었으므로 스케일링 성능과 가용성이 뛰어납니다. 하드웨어를 많이 구입하지 않아도 되고 사용하는 스토리지 비용만 지불하면 되기 때문에 비용을 줄이는 데도 도움이 됩니다.

데이터베이스 아키텍처가 중앙 집중식, 분산 또는 연결된 방식입니까?

중앙 집중식 데이터베이스에서 모든 데이터는 한곳에 있는 하나의 시스템에 상주합니다. 이 하나의 시스템은 모든 사용자의 액세스 지점입니다.

분산 데이터베이스는 관계형 데이터베이스 유형과 비관계형 데이터베이스 유형 모두에 걸쳐 있을 수 있습니다. 분산 데이터베이스에서 데이터는 여러 온-프레미스 컴퓨터에 있거나 상호 연결된 컴퓨터의 네트워크에 전반에 걸쳐 분산된 여러 물리적 위치에 저장됩니다.

연결된 데이터베이스에서는 독립적인 서버에서 실행되는 여러 개의 별개 데이터베이스가 하나의 대형 개체로 통합됩니다. 블록체인은 재무 원장 및 기타 트랜잭션 레코드를 안전하게 관리하는 데 사용되는 연결된 데이터베이스의 유형입니다.

스케일 업 또는 스케일 아웃하여 데이터와 함께 성장할 계획입니까?

수직 스케일링이라고도 하는 스케일 업(또는 다운)은 기존 서버에 메모리 또는 더 강력한 CPU와 같은 리소스를 추가하는 프로세스입니다.

수평 스케일링이라고도 하는 스케일 아웃(또는 인)은 리소스 풀에 머신을 더 추가합니다.

수직 스케일링 대신 수평 스케일링하면 기존 하드웨어의 수명 주기가 연장되고, 공급업체 종속 없이 자유롭게 업그레이드하며, 비용을 줄이고, 유연성을 위한 장기적인 잠재력이 생깁니다.

Azure 데이터베이스

스케일링 성능, 가용성, 보안을 자동화하는 완전 관리형 데이터베이스를 사용하여 데이터 작업을 간소화합니다. 재산적 가치를 가지는 엔진과 오픈 소스 엔진을 망라한 관계형 데이터베이스, NoSQL 데이터베이스, 메모리 내 데이터베이스 중에서 선택할 수 있습니다.

Azure SQL 데이터베이스 제품군에 대해 알아보기

호환성 저해 없이 SQL 포트폴리오를 통합합니다. 친숙한 SQL Server 기술을 사용하여 에지에서 클라우드로 애플리케이션을 마이그레이션, 현대화, 배포합니다.

Azure Database for PostgreSQL을 사용하여 거침없이 스케일링

Azure Database for PostgreSQL을 사용하면 고가용성, AI 기반 성능 최적화, 고급 보안을 통해 워크로드를 확신을 가지고 빠르게 스케일링할 수 있습니다.

Azure PostgreSQL에 대해 자세히 알아보기

Azure Cosmos DB를 사용하여 고성능 앱 빌드

Azure Cosmos DB는 개방형 API가 사용되고 모든 규모에서 속도가 보장되는 완전 관리형 NoSQL 데이터베이스입니다.

Azure Cosmos DB에 대해 자세히 알아보기

Azure Cache for Redis를 사용하여 높은 트래픽을 효율적으로 처리

Azure Cache for Redis를 사용하면 앱의 아키텍처에 빠른 캐싱 계층을 추가하여 거의 즉각적인 속도로 수천 명의 동시 사용자를 처리할 수 있습니다.

Azure Cache for Redis에 대해 자세히 알아보기
무엇을 도와 드릴까요?