1.NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요.
RDBMS (관계형 데이터베이스)
특징:
1.정형 데이터 저장: 정해진 스키마에 따라 데이터를 정형으로 저장하며, 각 테이블 간에 관계를 맺습니다.
2.SQL 쿼리 사용: 구조화된 쿼리 언어(SQL)를 사용하여 데이터를 조작하고 관리합니다.
3.ACID 특성: Atomicity, Consistency, Isolation, Durability와 같은 ACID 특성을 보장합니다.
4.복잡한 JOIN 지원: 여러 테이블 간의 조인 연산을 지원하여 데이터를 효율적으로 연결할 수 있습니다.
장점:
1.데이터 일관성: ACID 특성으로 데이터 일관성이 보장됩니다.
2.복잡한 쿼리 지원: 복잡한 쿼리와 JOIN 연산을 효과적으로 처리합니다.
3.데이터 무결성: 무결성 제약 조건을 통해 데이터의 정확성과 일관성을 유지합니다.
단점:
1.확장 어려움: 수직 확장만 가능하며, 대용량 트래픽 처리가 어려울 수 있습니다.
2.고정된 스키마: 변경이 필요한 경우 스키마를 수정하고 데이터를 재구성해야 합니다.
3.비용 및 복잡성: 대형 시스템에서 관리 및 유지보수가 복잡하며, 비용이 높을 수 있습니다.
NoSQL (비관계형 데이터베이스)
특징:
1.비정형 데이터 저장: 유연한 스키마를 사용하여 다양한 형식의 데이터를 저장할 수 있습니다.
2.NoSQL 쿼리 언어: 다양한 NoSQL 데이터베이스는 SQL이 아닌 자체 쿼리 언어를 사용합니다.
3.ASE 특성: NoSQL은 일관성(Consistency) 대신 유연성(Availability, Soft-state, Eventually consistent)을 강조합니다.
4.수평 확장: 분산 데이터베이스로 수평 확장이 용이하며, 대용량 데이터 처리에 효과적입니다.
장점:
1.확장 용이성: 대용량 데이터 처리와 분산 시스템에 용이합니다.
2.유연한 스키마: 데이터 모델이 동적으로 변경 가능하므로 스키마 수정이 간단합니다.
4.비용 효율성: 대용량 데이터 저장 및 처리에 대한 비용이 RDBMS에 비해 낮을 수 있습니다.
단점:
1.데이터 일관성 문제: NoSQL은 일관성을 포기할 수 있으므로 데이터의 일관성을 보장하기 어렵습니다.
2.쿼리 기능 제한: 일부 NoSQL 데이터베이스는 기능이 제한될 수 있고, 특별한 목적에 적합한 데이터 모델을 제공합니다.
3.문서화 부족: NoSQL 데이터베이스에 대한 문서화 및 표준화 부족으로 학습 곡선이 높을 수 있습니다.
4.어떤 데이터베이스 시스템을 선택할지는 프로젝트의 요구사항, 확장성 필요성, 일관성 및 복잡성 등 여러 요소에 따라 결정되어야 합니다.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.mvc 패턴에 대해서 설명해주세요.
Model (모델):
애플리케이션의 데이터와 비즈니스 로직을 나타냅니다.
데이터의 상태를 유지하고 이에 따른 동작을 정의합니다.
사용자 인터페이스(UI)나 컨트롤러와 독립적으로 존재하며, 데이터의 변경이나 업데이트에 대한 로직을 처리합니다.
View (뷰):
사용자 인터페이스(UI)를 나타냅니다.
모델의 상태를 사용자에게 표시하고, 사용자의 입력을 컨트롤러로 전달합니다.
모델의 상태가 변경되면, 뷰는 갱신되어 새로운 정보를 표시합니다.
Controller (컨트롤러):
사용자 입력을 처리하고, 그에 따라 모델을 업데이트하거나 뷰를 갱신합니다.
모델과 뷰 간의 상호 작용을 관리하여 사용자의 입력에 따라 올바른 동작이 수행되도록 합니다.
모델과 뷰를 분리하여 서로 영향을 주지 않도록 합니다.
MVC 패턴의 동작 흐름:
사용자가 UI로부터 입력을 하면, 컨트롤러가 이를 수신합니다.
컨트롤러는 입력에 따라 모델을 업데이트하거나 상태를 변경합니다.
모델이 변경되면, 모델은 등록된 뷰에게 상태 변경을 알립니다.
뷰는 모델의 상태를 쿼리하여 새로운 데이터를 가져옵니다.
뷰는 새로운 데이터를 기반으로 UI를 업데이트합니다.
장점:
1.각 부분이 독립적으로 존재하므로 유지보수와 확장이 쉽습니다.
2.코드 재사용이 증가하며, 각 부분은 단일 책임 원칙을 따라 독립적으로 변경 가능합니다.
단점:
1.복잡한 프로젝트에서는 구현 및 유지보수가 어려울 수 있습니다.
2.초반 학습 곡선이 존재하며, MVC를 올바르게 구현하기 위한 경험이 필요합니다.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'내일배움캠프 스프링3기' 카테고리의 다른 글
2024-01-10 TIL (0) | 2024.01.10 |
---|---|
2024-01-08 TIL (1) | 2024.01.08 |
2024-01-04 TIL (0) | 2024.01.04 |
24-01-02 TIL (0) | 2024.01.02 |
과제제출 (0) | 2023.12.20 |