[Spring#61] RDBMS vs NoSQL / MVC

김한준 Hanjun Kim·2024년 1월 5일
1

내일배움캠프

목록 보기
62/70

RDBMS vs NoSQL

DBMS : DataBase Management System의 약자로 데이터베이스를 관리하는 시스템이다.
RDB : 관계형 데이터 모델에 기초를 둔 데이터 베이스이다.

RDBMS : Relational DataBase Management System의 약자로 관계형 모델을 기반으로 하는 DBMS 유형이다.
RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다.
데이터가 미리 정의된 열과 테이블 간의 관계가 있는 테이블로 구성되는 구조화된 테이블 형식 데이터 모델을 따릅니다.

장점
1. 스키마에 맞추어 데이터를 관리하기 때문에 명확한 데이터 구조를 가지고 있다.
(스키마 : 데이터가 다른 테이블 또는 다른 데이터 모델과 어떻게 관련되어 있는지를 설명하는 데이터베이스의 "청사진"으로 간주됩니다.)

단점
1. 테이블 간 관계를 맻고 있어 시스템이 커질 경우 Join문이 많은 복잡한 쿼리가 만들어진다.
2. 성능 향상을 위해서는 비용이 늘어날 수 있다.
3. 스키마로 인해 데이터가 유연하지 못하다.

NoSQL : NoSQL은 비관계형 데이터베이스로 SQL, 즉, 관계형 데이터베이스를 제외한 나머지 유형을 말합니다.

장점
1. 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가지고 있다.
2. 데이터 분산이 용이하며 Scale-up과 Scale-out이 모두 가능하다.

단점
1. 데이터 중복이 발생할 수 있으며 변경 될 경우 수정을 모든 컬렉션에서 수행해야 한다.
2. 스카마가 없기 때문에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정이 어려울 수 있다.

예)
RDBMS: MySQL, PostgreSQL, Oracle 데이터베이스, Microsoft SQL Server.
NoSQL: MongoDB(문서 지향), Redis(키-값), Cassandra(열 계열), Neo4j(그래프).


MVC

MVC(모델-뷰-컨트롤러) 패턴은 소프트웨어 디자인 패턴으로, 소프트웨어 애플리케이션을 세 가지 주요 부분으로 나누어 개발하는 방식을 기술합니다. 이 패턴은 애플리케이션의 구성 요소를 분리하여 코드의 구조를 개선하고 유지보수성을 향상시킵니다.

  1. 모델 (Model):

애플리케이션의 데이터와 비즈니스 로직을 담당합니다.
데이터의 상태를 유지하고 업데이트하는 역할을 합니다.
사용자 인터페이스나 컨트롤러와 독립적으로 데이터를 관리합니다.

처리한 작업의 결과 데이터를 클라이언트에게 응답을 돌려주어야 하는데, 이때 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 Model이라 합니다.

  1. 뷰 (View):

뷰는 모델의 데이터를 사용자에게 표시하는 역할을 합니다.
사용자 인터페이스를 생성하고 모델의 데이터를 시각적으로 표현합니다.
사용자 입력을 받아 컨트롤러에 전달하고, 모델의 변경 사항을 감지하여 업데이트합니다.

  1. 컨트롤러 (Controller):

컨트롤러는 사용자 입력을 처리하고 모델 또는 뷰를 업데이트하는 역할을 합니다.
사용자와 상호작용하며, 사용자 입력을 해석하여 모델이나 뷰에게 전달합니다.
모델과 뷰 간의 통신을 조율하여 애플리케이션의 흐름을 관리합니다.

MVC 패턴의 작동 과정:

  1. 사용자는 뷰를 통해 애플리케이션에 입력을 제공합니다.
  2. 뷰는 컨트롤러에게 사용자 입력을 전달합니다.
  3. 컨트롤러는 입력을 해석하고 필요한 작업을 수행합니다.
  4. 컨트롤러는 모델을 업데이트하거나 모델의 상태를 조회합니다.
  5. 모델의 변경이 발생하면, 이를 감지하고 뷰에게 알립니다.
  6. 뷰는 모델의 변경 사항을 반영하여 사용자에게 새로운 정보를 표시합니다.

이러한 분리된 구성 요소는 각각의 역할에만 집중할 수 있도록 해줍니다. 모델은 데이터 관리 및 비즈니스 로직에 중점을 두고, 뷰는 사용자 인터페이스에, 컨트롤러는 사용자 입력 및 애플리케이션의 흐름을 관리하는 데 중점을 둡니다. 이로써 코드의 유지보수성이 향상되고, 애플리케이션의 확장이 용이해집니다.

궁금한것

모델2?
front-controller 패턴?
spring에서는 dispather servlet이 된것


Spring MVC

Spring MVC는 MVC 패턴을 기반으로 하며, 웹 애플리케이션에서 모델, 뷰, 컨트롤러를 분리하여 개발할 수 있도록 지원합니다.

  1. DispatcherServlet:

Spring MVC의 핵심 컨트롤러로, 클라이언트의 모든 요청을 받아들이고 처리하는 역할을 합니다.
웹 애플리케이션의 전반적인 요청과 응답 흐름을 관리합니다.
Handler Mapping을 사용하여 요청을 처리할 적절한 핸들러(컨트롤러)를 찾아줍니다.

  1. Controller:

사용자의 입력을 처리하고, 비즈니스 로직을 수행하는 부분입니다.
@Controller 어노테이션을 사용하여 선언하거나, 인터페이스를 구현하는 방식으로 작성할 수 있습니다.
사용자의 요청에 따라 적절한 모델을 호출하고, 그 결과를 보여줄 뷰를 결정합니다.

  1. Model:

비즈니스 로직을 처리하거나 데이터를 저장하는 역할을 하는 객체입니다.
사용자의 입력이나 요청에 따라 데이터를 조작하고, 그 결과를 뷰에 전달합니다.
Model 인터페이스나 ModelMap 객체를 사용하여 데이터를 뷰로 전달합니다.

  1. View:

사용자에게 보여지는 부분으로, 화면을 생성하고 표시하는 역할을 합니다.
JSP, Thymeleaf, FreeMarker 등 다양한 템플릿 엔진을 사용하여 구현할 수 있습니다.
뷰는 모델에서 전달받은 데이터를 사용하여 동적으로 페이지를 생성합니다.

  1. Handler Mapping:

요청된 URL과 해당 URL을 처리할 핸들러(컨트롤러) 사이의 매핑을 제공합니다.
요청이 들어올 때 DispatcherServlet은 Handler Mapping을 통해 어떤 핸들러가 처리할지 결정합니다.

  1. View Resolver:

뷰 이름을 기반으로 실제 뷰 객체를 찾아주는 역할을 합니다.
뷰 리졸버는 뷰의 논리적인 이름과 실제 뷰의 경로 및 형식을 연결합니다.

동작 과정:

  1. 클라이언트가 웹 애플리케이션에 요청을 보냅니다.
  2. DispatcherServlet이 요청을 받아 Handler Mapping을 통해 적절한 컨트롤러를 선택합니다.
  3. 선택된 컨트롤러가 요청을 처리하고 비즈니스 로직을 실행합니다.
  4. 컨트롤러는 Model을 이용하여 처리 결과를 담아서 반환합니다.
  5. DispatcherServlet은 View Resolver를 통해 적절한 뷰를 선택하고, 모델의 데이터를 전달합니다.
  6. 선택된 뷰는 최종적으로 응답을 생성하여 클라이언트에게 전송됩니다.

Spring MVC는 확장성이 높고 다양한 설정 옵션을 제공하여 다양한 웹 애플리케이션의 요구에 맞춰 개발할 수 있습니다.

MVC - 모델1, 모델2, Spring MVC 차이점
https://engkimbs.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81Spring-MVC-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EC%84%A4%EA%B3%84-%EA%B5%AC%EC%A1%B0

profile
개발이 하고싶은 개발지망생

0개의 댓글