RDB

양치는 하셨나요·2024년 8월 6일
post-thumbnail

진짜..진짜 처음 들어본다. 뭔지 감도 안잡힌다. 마지막 부분이 DB인 만큼 데이터베이스와 관련된 것일 것 같은데.. 그래서 이게 무엇인가..? 차근차근 기초부터 알아보자.
적다보니 그냥 SQL 이었다...


Data

개념

데이터베이스를 알기 전에 Data가 무엇인지 먼저 알고 갈 필요가 있다. 우리가 CS를 공부하며 자주 나오는 Data란 아래와 같은 뜻을 가지고 있다.

다양한 형태로 이뤄져 있는 의미 단위로 연구, 조사 등의 바탕이 되는 재료.

즉, Data는 단순히 다양한 형태로 되어 있는 자료들을 의미한다.

우리는 이런 자료들을 우리가 다루기 쉽고 유의미한 자료가 되도록 가공하여 정보로 만들어 필요하거나 유용한 정보를 얻어낸다.

정보: 무의미한 자료들을 의미있거나 쓸모 있는 내용으로 가공하여 알아볼 수 있는 자료로 만든 것의 집합.

→ 우리는 자료를 정보로 만들어내는 과정들을 보고 있고 이는 곧 Data → information으로 바꾸는 것이다.

분류

  • 정형 데이터: 미리 정해둔 형식과 구조에 따라 지정된 데이터. (CSV, 스프레드시트, RDB 등)
  • 반정형 데이터: 구조에 따라 저장된 데이터지만 데이터의 형식과 구조가 변경될 수 있는 데이터. (HTML, JSON 등)
  • 비정형 데이터: 정해진 구조가 없이 저장된 데이터(동영상, 이미지, 텍스트 데이터 등)

DataBase

개념

위와 같이 우리는 Data를 information으로 만들어내기 위해 Data를 관리할 필요가 있다. 이를 체계화 하여 관리하고 통합하는 데이터의 집합이 바로 DataBase이다.

  • 공유 데이터
    • 특정 조직의 여러 사용자가 함께 소유하고 이용할 수 있는 공유 데이터
  • 통합 데이터
    • 최소의 중복과 통제 가능한 중복만 허용하는 데이터
  • 저장 데이터
    • 컴퓨터가 접근할 수 있는 매체에 저장된 데이터
  • 운영 데이터
    • 조직의 주요 기능을 수행하기 위해 지속적으로 꼭 필요한 데이터

특징

  • 실시간 접근
    • 사용자의 데이터 요구에 실시간으로 응답
  • 계속 변화
    • 데이터의 계속적인 삽입, 삭제, 수정을 통해 현재의 정확한 데이터를 유지
  • 동시 공유
    • 서로 다른 데이터의 동시 사용 뿐만 아니라 같은 데이터의 동시 사용도 지원
  • 내용 기반 참조
    • 데이터가 저장된 주소나 위치가 아닌 내용으로 참조

→ DataBase는 실시간으로 계속 변화하는 데이터를 내용에 따라 참조하고 동시에 공유할 수 있다.


RDB

DB에 대해 알아봤으니 이제 RDB에 대해 알아볼 차례이다. 마찬가지로 개념부터 차례대로 알아본다.

개념

사전적 정의는 아래와 같다.

  • 관계형 데이터베이스(關係形 Database, Relational Database, 문화어: 관계자료기지, 관계형자료기지, RDB)는 키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터베이스이다.

다시 말해, RDB는 관계형 데이터베이스로 키-값 구조로 된 간단한 원칙의 데이터베이스이며 일반적인 서비스에서 가장 많이 사용된다.

RDB는 각 데이터를 Table을 이용해 표 형태의 구조로 저장한다. 이런 Table간의 관계 설정을 통해 Table에 따라 나눠져있는 데이터들을 서로 연결해 관리할 수 있다.

장점

  • 데이터의 분류, 정렬, 탐색 속도가 빠르다.
  • 스키마가 명확하게 정의되어 있다.
    • 스키마는 DataBase의 구조와 제약 조건에 대해 전반적인 명세를 기술한 것이다. 엔티티, 속성 등과 그 사이의 관계 및 데이터들의 제약 조건에 관해 기술한다.
  • 오래 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장한다.
  • 데이터를 중복 없이 한 번만 저장할 수 있다.
  • 유지 보수가 편하다.
  • 정형 정보에 접근하는 가장 효율적이고 유연한 방법이다.

단점

  • 이미 작성된 스키마를 수정하기 어렵다.
  • 시스템이 커지면 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다.
  • 성능 향상을 위해서는 Scale-up만을 지원해 비용이 기하급수적으로 늘어날 수 있다.
  • 다른 DB에 비해 많은 자원이 활용되어 시스템 부하가 높다.

→ 관계형이 아닌 다른 방식의 DB를 구상하게 되었다.


NoSQL

개념

RDB의 단점 및 한계를 극복하기 위해 나온 새로운 DB의 형태이다.

특징

  • RDBMS와 달리 데이터 간의 관계를 정의하지 않는다.
  • RDBMS는 데이터 관계를 외래 키 등으로 정의하고 JOIN 연산을 수행할 수 있지만, NoSQL은 JOIN 연산이 불가능하다.
  • RDBMS에 비해 대용량의 데이터를 저장할 수 있다.
  • 분산형 구조이다.
  • RDBMS와 달리 테이블의 스키마가 유동적이다. 데이터를 저장하는 칼럼이 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다.

장점

  • RDBMS에 비해 저렴한 비용으로 분산처리와 병렬 처리 가능
  • 비정형 데이터 구조 설계로 설계 비용 감소
  • Big Data 처리에 효과적
  • 가변적인 구조로 데이터 저장이 가능
  • 데이터 모델의 유연한 변화가 가능

단점

  • 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
  • 많은 인덱스를 사용하려면 충분한 메모리가 필요. 인덱스 구조가 메모리에 저장
  • 데이터 일관성이 항상 보장되지 않음

어떤 것을 사용할까?

사실 위의 두 DB의 장단점만 본다면 잘 모를 것 같기도 하지만 실제로는 RDB를 더 많이 쓴다고 한다. 그 이유 중 가장 큰 것은 안전한 서버 환경이다. NoSQL은 데이터의 일관성을 보장하지 않고 손실이 발생할 수 있기 때문에 복잡한 로직을 가지더라도 안정성을 가지고 정형화된 데이터를 체계적으로 관리하기 위해 RDB를 사용한다.

물론 빅데이터에 대한 강점과 병렬처리 등을 통한 저렴한 비용을 생각했을 때 NoSQL의 강점이 있고 이를 사용하는 서버도 존재한다. 따라서 둘 중 어떤 방식이 우월하다 라는 느낌 보다는 장단점이 있고 프로젝트가 원하는 방향성에 맞는 DB를 사용한다고 생각하면 편하다.


결론

Data는 무질서한 자료. 이를 필요한 데이터로 정제한 것이 정보(information)

데이터를 체계적으로 저장하고 통합하는 것이 DataBase

RDB는 이런 DB 중 데이터를 key 와 value로 짝지으며 관리하는 DB. 안전한 서버 환경을 구성해 보안과 안전성이 필요할 때 RDB를 사용한다.

profile
프로그래밍을 잘하고 싶어요..

0개의 댓글