데이터베이스(DB) 속성 정리

random-olive·2022년 10월 20일
  • DB 데이터베이스 : 통합하여 관리되는 데이터의 집합
    • 일반적으로 응용 프로그램과의 별개의 미들웨어를 통해 관리된다.

    • DB 자체만으로는 거의 아무 것도 못해서, 그걸 관리하는 시스템과 통합돼 제공된다 (DBMS: DB 관리 시스템)

    • 컴퓨터로 하는 일에서 대부분 차지하는 작업은 정렬/탐색인데, 이 두 작업을 가장 전문적으로 처리하는 건 DB이다.

    • 종류

      • 관계형 데이터베이스 (Relational DBMS)
        • SQL(Structured Query Language) : RDBMS를 사용하기 위한 표준 언어 사용
          • 데이터를 table 형태로 저장하고, 종속성을 Relation으로 표현
          • Table의 모든 row는 같은 길이의 column을 가지고 있으며, 이 column의 구조와 데이터 간의 관계가 table Schema로 사전 정의된다.
          • 역사가 오래된 방식, 가장 신뢰성이 높고, 데이터의 분류, 정렬, 탐색 속도가 빠르다.
          • 고도로 정교한 검색 쿼리를 제공
          • Transaction 지원이 매우 강력하여 신경만 제대로 써주면 데이터가 안 들어가는 경우는 있어도 잘못 들어가는 경우는 없다. (송금 예시)
          • 데이터 무결성을 보장한다 (네트워크 이상, 데이터비트 오염, 하드디스크 이상, 동시성 문제 등 상황 고려)
          • 다른 DBMS는 이 정도의 데이터 무결성을 보장하지 못한다.
          • 단점은 스키마를 수정하기 어렵고, 데이터가 2차원 표 형태로만 출력되어서 트리 구조로 조직화되는 객체들과 궁합이 잘 맞지 않는다. 이 문제는 ORM(Object-Relation Mapping) 기법으로 어떻게 처리하고 있으나, 다른 종류인 객체형, 문서형 DB가 더 객체 친화적이므로 고민해볼 필요가 있다.
          • 읽기 작업은 부하분산이 잘 되지만, 쓰기는 고도의 기술력, 전략 필요.
      • 비관계형 데이터베이스 (NoSQL이라 불리기도 함)
        • 키-값형 (KV store)

          • 모든 데이터를 KV쌍 (Value: any object)으로 매핑
          • 보통 특정 값 하나를 찾아내는 데에는 가장 뛰어난 성능을 보인다.
          • 데이터를 그룹화, 정렬하는 기능은 없다시피하다.
          • 웹 캐시, 세션 데이터, 쇼핑몰의 장바구니 데이터를 담는 것 등에 최적인 DB
          • DB크기가 상대적으로 작아 메모리에 통째로 올려놓고 구동도 쉬워서, 인-메모리 DB로 많이 이용되며, HDD에 부담을 상당히 덜어주면서 반응이 빨라 일종의 임시 데이터 저장소 격으로 잘 쓰이는 듯.
        • 객체형 (Object DBMS)

          • DB에서도 객체지향을 구현
          • 쿼리 사용이 복잡해서 주류로 사용되지는 않음
        • 문서형

          • MongoDB의 방식
          • 객체형과 비슷, 스키마: optional
          • 스키마가 없어서 index 필드를 제외하고 필드를 마음대로 넣거나 뺄 수 있음
          • ODBMS와 같이 데이터를 따로 매핑할 필요없이 그냥 집어넣으면 알아서 잘 저장되어서
            주목받고는 있지만, 데이터를 그대로 뽑는 게 아니라 가공하려면 잘 되지 않는다.
          • 또한, 데이터를 지속적으로 쌓아 올리는 응용 (예: 금융거래 기록 저장) 성능 아주 떨어짐
          • 데이터의 스키마가 자주 바뀌고 데이터가 다계층의 객체 형태이면서 대부분의 업무가 갱신, 삽입(문서단위), 조회에 집중되어있고 통계연산이 안 쓰이는 곳에서 쓰기 좋다. (가끔 통계 연산이 필요하면 필요 데이터를 RDBMS에 옮기고 SQL로 처리한다., map/reducd를 쓰든지)
          • 문서 자체의 CRUD는 수월하지만, 한 문서 안의 데이터가 변경되거나 문서간의 값을 통계처리하는 게 힘든 것 같음
        • Column Family형


    • 특징

      • 데이터의 특성, 실체 상호간의 의미 관계와 형식 관계를 기술한 개념적인 구조에 따라서 편성된 데이터의 집합이다.
      • 동시성 제어 : 다수의 사용자에게 동시 접근을 허용
      • 자기기술성 : 단일 응용 프로그램 내에서 데이터를 관리하는 방식과 달리, DBMS는 데이터 저장구조를 수정해도 응용 프로그램에 영향을 미치지 않는다 (데이터/구조적 종속 없이 가능케 해줌)
      • 추상화 : 복잡한 DB의 구조에 대한 정보를 감추고, 각 사용자에게 뷰를 제공
      • 중복의 최소화 : 동일한 내용의 데이터 중복 x, 다양한 접근 방식이 마련되어있어야 하며, 검색이나 갱신이 효율적으로 이루어질 수 있게 한다.
      • 주기억장치가 아니라 보조기억장치에 저장된다.

    • DB 보안의 3요소 → 권한자만 다룰 수 있게 해서 이 3가지 요소가 상실되게 하는 것을 방지

      • 무결성 (integrity) : DB를 사용하려면 자료에 오류가 없어야 한다. 최초에 오류가 없더라도 추가, 갱신, 삭제 등으로 오류가 발생 가능하니, 권한자만 자료를 수정하도록 가능해야 한다.
      • 가용성 (availability) : 권한을 가진 사용자가 DB에 접근할 수 있도록 하는 것. 즉, 권한자의 접근을 거부하면 안된다.
      • 기밀성 (confidentiality) : DBMS가 기술적으로 위부위협으로부터 자료 기밀을 보호해야 한다는 뜻. 권한없는 사용자에게 자료노출을 방지하는 기능
        • 방어수단은 접근제어, 추론제어, 흐름제어, 암호화 등을 사용한다.

    • 설계방법

      • 요구조건 분석
      • 개념적 설계 : 개체-관계모델(ERD) 사용
      • 논리적 설계 : 본격적인 Schema 설계 - 설계도 / 제약조건 제작
      • 물리적 설계 : 알고리즘 개선
      • 구현 : 실제 자료를 채워넣음 (RDBM 모델에서는 relation instance라고 함)
      • 운영 및 개선

추가.

  • Mapping : 하나의 값을 다른 값으로 대응시키는 것

  • Transaction : DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한, 한꺼번에 모두 수행되어야 할 일련의 연산들 (Commit되거나 Rollback된다)

  • Entity, DAO, DTO from Spring Boot - Spring Data JPA

    • Spring : Java 기반의 웹 어플리케이션을 만들 수 있는 프레임워크
    • Spring boot : Spring을 더 쉽게 이용하기 위한 도구
    • Bean : Spring에서 생성되고 관리되는 자바 객체
    • Spring Data JPA(Java Persistence API) : ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음 (구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크)
      반복적인 CRUD SQL을 처리해준다.
    • Entity 클래스 : DB의 column들을 필드로 가지는 객체
    • DAO(Data Access Object): 실제로 DB의 data에 접근하는 객체
    • DTO(Data Tranfer Object) : 계층간 데이터 교환을 하기 위해 사용하는 객체: 로직을 가지지 않는 순수한 Object
    • 브라우저에서 data를 입력하면 form에 있는 data를 DTO에 넣어서 전송함
    • DTO를 받은 서버가 DAO를 이용하여 DB로 데이터를 집어넣는다.
  • ERD (Entity Relationship Diagram)
    : 테이블간의 관계를 설명해주는 다이어그램. DB의 구조를 한 눈에 파악 가능

  • Schema : DB의 구조, 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합

  • 인-메모리 DB : 매우 고속으로 동작, 데이터의 안정성을 전혀 보장하지 않아서, 장바구니같이 날아가도 상관없는 데이터면서, 반응이 즉시 와야하는 데이터에 주로 선택된다.

profile
Doubts kills more dreams than failure ever will

0개의 댓글