관계형 데이터베이스란?

데이터가 하나 이상의 열과 행의 테이블(또는 '관계') 에 저장되어

서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고

이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음이다

 

관계는 이러한 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결이다

 

즉 관계형 데이터베이스(RDB)는 테이블, 행, 열의 정보를 구조화하는 방식이다

RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어

여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다

 

관계형 데이터베이스 예시

관계형 데이터베이스 모델을 사용하는 여러 관계형 데이터베이스 관리 시스템(RDBMS)에 대해 알아보자면

RDBMS는 관계형 데이터베이스를 만들고 업데이트하고 관리하는데 사용하는 프로그램이다

MySQL, PostgreSQL, MariaDB, MicrosoftSQL Server, Oracle Database 가 있다

 

Cloud SQL, Cloud Spnner, AlloyDB와 같은 클라우드 기반 관계형 데이터베이스는

데이터베이스 유지보수, 패치, 용량 관리, 프로비저닝, 인프라 지원을 위한 관리형 서비스를

제공하기 때문에 점점 더 많은 인기를 얻고 있다

 

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

관계형 데이터베이스 모델의 주요 이점은 직관적인 데이터 표현 방법을 제공하고

관련 데이터 포인트에 쉽게 액세스 할 수 있다는 점이다

그래서 관계형 데이터베이스는 인벤토리 추적부터 트랜잭션 데이터 처리 및

애플리케이션 로깅에 이르기까지 대량의 구조화된 데이터를 관리해야하는 조직에 많이 사용된다

 

관계형 데이터베이스를 사용하면 데이터를 관리하고 저장할 때 다음과 같은 장점이 있다

 

유연성

전체 데이터베이스 구조를 변경하거나 기존 어플리케이션에 영향을 주지않고

필요할 때마다 간편하게 테이블, 관계를 추가 또는 삭제하고 데이터를 변경할 수 있다

 

ACID 규정 준수

atomicity (원자성)

트랜잭션 수행결과가 모두 커밋되거나 모두 커밋되지 않음을 보장하는 특성

 

Consistency (일관성)

항상 일관된 데이터베이스 상태 보존

데이터는 미리 정의된 규칙에서만 수정이 가능한 특성

 

Isolability (격리성)

연산중간에 다른 트랜잭션 접근 불가

 

Durability (지속성)

결과를 영속적으로 데이터베이스에 저장

 

ACID(원자성, 일관성, 격리성, 지속성) 성능을 지원하므로

오류, 실패, 기타 잠재적 오작동에 관계없이 데이터 유효성을 검사할 수 있다

 

사용 편의성

기술자가 아닌 사용자도 데이터베이스와 상호작용하는 방법을 배울 수 있는

SQL을 사용하여 복잡한 쿼리를 쉽게 실행할 수 있다

 

공동작업

여러 사용자가 동시에 데이터를 운영하고 액세스할 수 있다

기본 제공되는 잠금 기능으로 업데이트 도중 데이터에 동시 엑세스할 수 없다

 

내장된 보안 기능

역할 기반 보안을 통해 데이터 엑세스가 특정 사용자로 제한된다

 

데이터베이스 정규화

데이터 중복성을 줄이고 데이터 무결성을 개선하는 정규화라는

설계 기법을 사용한다

 

NoSQL

관계형 및 비관계형 데이터베이스 (NoSQL 데이터베이스)의 주요 차이점은

데이터를 저장하고 구성하는 방법이다

 

비관계형 데이터베이스는 규칙 기반의 테이블 형식 방식으로 데이터를 저장하지 않는다

 

대신 데이터를 연결되지 않은 개별 파일로 저장하며 문서 또는 리치 미디어 파일과 같은 복잡하고

구조화되지 않은 데이터 유형에 사용할 수 있다

 

즉 스키마도 없고, 관계도 없다

 

관계형 데이터베이스와 달리 NoSQL 데이터베이스는 유연한 데이터 모델을 따르므로

자주 변경되는 데이터를 저장하거나 다양한 유형의 데이터를 처리하는 어플리케이션에 적합하다

 

NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가가 가능하다

 

문서는 JSON과 비슷한 형태로 가지고 있다

 

관계형 데이터베이스처럼 여러 테이블에 나누어 담지 않고

관련 데이터를 동일한 컬렉션에 넣는다

 

따라서 여러 테이블에 조인할 필요없이 이미 필요한 모든 것을 갖춘 문서를

작성하는것이 NoSQL이다 (NoSQL에는 조인이라는 개념이 존재하지 않는다)

 

조인하고 싶을때는 컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에

속하는 데이터를 정확하게 산출하도록 한다