Database

[Database] 데이터베이스의 기초

kahnco 2024. 7. 2. 03:46

개요

다양한 종류의 개발 프로젝트를 진행하면서 뗄래야 뗄 수 없던 것이 있었습니다. 바로 데이터베이스입니다. 프로젝트를 진행하면서 이해 관계자 혹은 기획자의 비즈니스 요구 사항을 분석하고 이를 소프트웨어 요구 사항으로 분리, 그리고 데이터 스키마 설계를 하는 과정은 너무나 당연한 수순이 되었습니다. 하지만 RDB, NoSQL, In-memory DB 등등 다양한 형태의 데이터베이스를 알게 되면서 각각의 상황에 따라 적합한 형태의 데이터베이스를 선택하는 것이 Well-designed Architecture를 설계함에 있어서 매우 중요하다는 것을 깨닫게 되었습니다. 그에 따라 기존에 알고 있던 데이터베이스의 지식들을 정리해보고자 합니다.

 

데이터베이스란?

데이터베이스는 구조화된 정보 또는 데이터의 조직화된 모음으로써 일반적으로 컴퓨터 시스템에 전자적으로 저장됩니다.

 

위 정의는 데이터베이스의 정의에 대해서 검색하면 가장 흔하게 등장하는 문장입니다. 하지만 저는 이 문장을 이렇게 수정하고 싶습니다. 

 

데이터베이스는 특정 비즈니스에 필요한 정보들의 구조화된 형태 또는 데이터의 조직화된 모음으로써 일반적으로 컴퓨터 시스템에 전자적으로 저장됩니다.

 

앞부분에 특정 비즈니스 라는 문구만 추가되었습니다. 하지만, 소프트웨어 개발에 있어서 가장 중요한 정의라고 생각합니다. 만약, 어떠한 소프트웨어에서 사용자라는 개념이 필요하고, 그 사용자를 구분하는 속성들은 이름, 생년월일 이 두가지라고 가정합시다. 이 때, 성별이라는 속성이 해당 비즈니스에서 전혀 필요하지 않은데 포함되어 있다라고 한다면 과연 해당 데이터 모음을 데이터베이스라고 할 수 있을지 의문입니다. 비록 예시는 성별이라는 하나의 속성 값으로만 표현했지만, 만약 이러한 불필요한 속성들이 수십, 수백 개가 존재한다면? 이 모음을 데이터베이스라고 부를 수 있을지는 잘 모르겠습니다.

 

데이터베이스의 진화

데이터베이스는 1960년대 초에 첫 등장한 이후로 극적인 발전을 이루었습니다. 계층적 데이터베이스(1:N 관계만 허용하는 트리 형태 모델)와 네트워크 데이터베이스(다중 관계를 허용하는 보다 유연한 모델) 같은 탐색 데이터베이스는 원래 데이터 저장 및 조작에 사용된 시스템이었습니다. 이러한 초기 시스템은 간단하지만 유연성이 부족했습니다. 1980년대가 되면서 관계형 데이터베이스(RDB)가 인기를 얻었고, 이후 1990년대에는 객체 지향 데이터베이스가 등장했습니다. 최근에는 인터넷의 성장으로 비정형 데이터의 속도 및 처리에 대한 요구가 높아지면서 이에 대한 대응책으로 NoSQL 데이터베이스가 등장했습니다. 오늘날에는 클라우드 데이터베이스와 자율 운영 데이터베이스가 데이터 수집, 저장, 관리 및 활용 방법에 있어서 새로운 지평을 열고 있습니다.

 

데이터베이스 유형

데이터베이스의 유형은 매우 다양합니다. 특정 조직에 가장 적합한 데이터베이스는 데이터의 사용 방식에 따라 다릅니다.

 

  • 관계형 데이터베이스(RDB): 관계형 데이터베이스의 항목은 열과 행이 있는 테이블 집합으로 구성됩니다. 관계형 데이터베이스 기술은 정형 정보에 액세스하는 가장 효율적이고 유연한 방법을 제공합니다.
  • 객체 지행 데이터베이스: 객체 지향 프로그래밍과 마찬가지로 객체 형태로 표현됩니다.
  • 분산 데이터베이스: 서로 다른 사이트에 위치한 둘 이상의 파일로 구성됩니다. 데이터베이스는 물리적으로 동일한 위치에 있는 여러 컴퓨터에 저장되거나 다른 네트워크에 분산될 수 있습니다.
  • 데이터 웨어하우스: 데이터의 중앙 저장소인 데이터 웨어하우스는 빠른 쿼리 및 분석을 위해 특별히 설계된 데이터베이스 유형입니다.
  • NoSQL 데이터베이스: 비관계형 데이터베이스를 사용하면 비정형 및 반정형 데이터를 저장하고 조직할 수 있습니다(반면에 관계형 데이터베이스에서는 데이터베이스에 삽입되는 모든 데이터의 구성 방식을 정의해야 합니다). 웹 애플리케이션이 보다 보편화되고 복잡해지면서 NoSQL 데이터베이스의 인기가 높아졌습니다.
  • 그래프 데이터베이스
    • 그래프 데이터베이스는 엔티티 및 엔티티 간의 관계 측면에서 데이터를 저장합니다.
    • OLTP 데이터베이스는 여러 사용자가 수행하는 많은 수의 트랜잭션을 위해 설계된 고속 분석 데이터베이스입니다.
  • 오픈 소스 데이터베이스: 소스 코드가 오픈 소스인 시스템으로, SQL 또는 NoSQL 데이터베이스가 여기에 해당됩니다.
  • 다중 모델 데이터베이스: 서로 다른 유형의 데이터베이스 모델을 단일 통합 백엔드로 결합한 형태입니다. 이는 다양한 데이터 유형을 수용할 수 있다는 것을 의미합니다.
  • 문서/JSON 데이터베이스: 문서 지향 정보를 저장, 검색 및 관리하도록 설계된 문서 데이터베이스는 행과 열이 아닌 JSON 형식으로 데이터를 저장하는 방식입니다.
  • 자율 운영 데이터베이스: 클라우드를 기반으로 하며, 머신러닝을 사용하여 데이터베이스 튜닝, 보안, 백업, 업데이트 및 기타 데이터베이스 관리자가 전통적으로 수행해 온 일상적인 관리 작업을 자동화합니다.
NoSQL과 Document/JSON 데이터베이스의 차이점?

NoSQL은 "Not Only SQL"의 약자로 전통적인 테이블 기반 관계형 데이터베이스 모델을 넘어서는 매우 다양한 데이터 모델을 처리하도록 설계된 광범위한 데이터베이스 관리 시스템을 의미합니다. NoSQL 데이터베이스는 많은 양의 비정형, 반정형 또는 정형 데이터를 저장하는 데 자주 사용됩니다. 이러한 데이터베이스는 스키마 설계에 유연성을 제공하며 일반적으로 특정 데이터 모델과 액세스 패턴에 최적화되어 있습니다. Document/JSON 데이터베이스는 이 NoSQL 데이터베이스의 한 종류입니다. NoSQL 데이터베이스는 다음과 같은 여러 유형으로 분류할 수 있습니다.

1. Document Stores: 이러한 데이터베이스는 종종 JSON 또는 BSON 형식으로 데이터를 문서로 저장합니다. 예를 들어 몽고DB와 카우치DB가 있습니다.
2. Key-Value Stores: 이러한 데이터베이스는 데이터를 Key-Value Pair로 저장합니다. 예를 들어 Redis와 DynamoDB가 있습니다.
3. Column-Family Stores: 이 데이터베이스들은 데이터를 행이 아닌 열로 저장합니다. 예를 들어 Apache Cassandra와 HBase가 있습니다.
4. Graph 데이터베이스: 이 데이터베이스는 노드, 가장자리 및 속성을 가진 그래프 구조에 데이터를 저장합니다. 예를 들어 Neo4j와 Amazon Neptune이 있습니다.

 

데이터베이스 관리 시스템(DBMS)이란?

데이터베이스에는 일반적으로 포괄적인 데이터베이스 소프트웨어 프로그램이 필요합니다. DBMS는 데이터베이스와 최종 사용자 또는 프로그램 간의 인터페이스 역할을 하여 사용자가 정보의 구성 및 최적화 방법을 검색, 업데이트 및 관리할 수 있게 해줍니다. 또한 DBMS는 데이터베이스의 감독 및 제어가 용이하여 성능 모니터링, 튜닝, 백업, 복구 같은 다양한 관리 작업이 가능합니다.

 

마무리

이번 게시글에서는 데이터베이스의 기초에 대해서 학습해보았습니다. 다음 게시글에서는 관계형 데이터베이스, RDB 에 대해서 알아보겠습니다.

반응형

'Database' 카테고리의 다른 글

[Database] RDB  (0) 2024.07.04