240105 TIL - NoSQL, RDBMS, MVC패턴

HR J·2024년 1월 5일
0

스프링 개념 정리

목록 보기
1/7

본격적으로 Spring 최종 팀프로젝트를 시작하면서, 매일 개념을 다시 한 번 다지는 시간을 가져보기로 했다.

NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명하라.

  1. 관계형 데이터베이스 (Relational Database): RDBMS는 데이터를 테이블 형태로 저장하며, 이러한 테이블 간의 관계를 통해 데이터를 구성함.
  2. Schema (스키마): RDBMS에서는 데이터의 구조가 사전에 정의된 스키마에 따라야 합니다. 이는 데이터베이스 테이블, 열, 데이터 유형 등을 정의하는 데 사용됨.
  3. Table (테이블): 데이터가 행과 열의 형태로 구성된 테이블에 저장됩니다. 각 행은 레코드를 나타내며, 각 열은 해당 레코드의 속성을 나타냄.
  4. SQL (Structured Query Language): RDBMS에서 데이터를 조작하기 위한 표준화된 언어로, SQL을 사용하여 데이터 검색, 삽입, 업데이트, 삭제 등의 작업을 수행할 수 있음.

<장점>

  • 데이터 일관성: RDBMS는 ACID 속성을 준수하여 데이터 일관성을 보장.
  • 복잡한 쿼리 처리: 복잡한 쿼리를 처리하고 다양한 연산을 수행하는 데 효과적.
    <단점>
  • 확장 어려움: 수평적 확장이 어려워 대규모 데이터 처리에 한계가 있음.
  • 고정된 스키마: 스키마가 고정되어 있어 데이터 모델 변경이 어려울 수 있음.

NoSQL (비관계형 데이터베이스):

  1. 대용량데이터 (Big Data): NoSQL은 대용량 및 분산 데이터를 처리하는 데 특화됨.
  2. 비규격화 (Schema-less): NoSQL은 유연한 데이터 모델을 제공하며, 스키마가 사전에 정의되지 않아도 데이터를 저장하고 검색할 수 있음.
  3. Key, Value: NoSQL 데이터베이스는 주로 Key-Value, Document, Column-family, 또는 Graph 형태의 모델을 사용하여 데이터를 저장.

<장점>

  • 유연성: 스키마의 자유로움으로 데이터 모델을 쉽게 변경하고 대처할 수 있음.
  • 확장성: 수평적 확장이 용이하며, 대규모 데이터 처리에 효과적.
    <단점>
  • 일관성 보장의 어려움: NoSQL은 일관성, 가용성, 분할 허용성 중에서 선택할 수 있는데, 모든 속성을 동시에 보장하기 어려울 수 있음.
  • 표준화 부족: 특정 NoSQL 데이터베이스 간에 표준화가 부족하여 개발자들이 각각의 데이터베이스에 맞게 학습해야 할 필요가 있음.

MVC패턴에 대해서 설명하라.

Spring에서의 MVC 패턴은 Model, View, Controller 세 가지 구성 요소로 이루어져 있음. 이러한 패턴은 소프트웨어를 구조화하고 각 역할을 분리하여 유지보수성을 향상시키는 데 도움이 됨.

Model (모델)

  1. 역할: 비즈니스 로직과 데이터 처리를 담당.

  2. 특징
    1) 데이터의 상태를 나타내는 객체 또는 클래스로 구성.
    2) 데이터베이스와의 상호 작용, 데이터의 가공 및 처리 등을 담당.
    3) View나 Controller에 대한 정보를 포함하지 않아야 함.
    ex. 예시(Spring) - JPA 엔터티 클래스, 비즈니스 로직을 담당하는 서비스 클래스 등.

View (뷰)

  1. 역할: 사용자에게 보여지는 화면을 담당.

  2. 특징
    1) 사용자 인터페이스를 나타내는 부분으로, HTML, JSP, Thymeleaf 등을 통해 구현.
    2) 사용자에게 정보를 표시하고 사용자의 입력을 받아 Controller에 전달.
    3) Model의 데이터를 표시하기 위해 Model과 상호 작용할 수 있습니다.
    ex. 예시(Spring) - Thymeleaf, JSP, HTML 등의 템플릿 엔진을 사용하여 구현된 뷰 페이지가 해당.

Controller (컨트롤러)

  1. 역할: 사용자의 입력을 받아 해당 요청에 대한 처리를 진행하고, 그 결과를 Model 또는 View에 전달합니다.

  2. 특징:
    1) 클라이언트로부터 요청을 받아 그에 따른 비즈니스 로직을 호출하고, Model에 데이터를 전달합니다.
    2) 사용자의 입력을 검증하고 필요한 서비스를 호출하여 비즈니스 로직을 수행합니다.
    3) 처리 결과를 View에 전달하여 사용자에게 응답합니다.
    ex. 예시(Spring) - Controller 어노테이션을 사용한 컨트롤러 클래스가 해당. 사용자의 요청을 처리하고, 비즈니스 로직을 호출하여 결과를 Model에 담아 View에 전달.

이러한 MVC 패턴은 각각의 역할을 분리함으로써 시스템을 모듈화하고 유연성을 높이며, 유지보수 및 확장이 쉽도록 구조화하는데 도움을 줌.

profile
Newbie Engineer&Programmer

0개의 댓글