Post

TIL(20240718) [NoSQL,RDBMS 그리고 MVC패턴 기술면접 준비]


  1. NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요.
    • RDBMS는 관계형 데이터베이스를 의미하며 종류로는 oracleDB,MySQL,mariaDB 등이 있습니다. RDBMS는 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 가지고 있기에 데이터 무결성을 보장하고 있습니다. 이러한 특징으로 데이터가 자주 변경이 이루어지는 시스템에 적합하다고 볼 수 있고 테이블과 테이블간의 관계를 맺고 있어 fk외래키를 이용해 join문으로 한 테이블에서 가져오지 못하는 데이터를 가져올 수 있게되는데, 시스템이 커질 경우에는 join문이 많은 복잡한 쿼리가 만들어질 수 있다는 것과 스키마로 인하여 데이터가 유연하지 못하다는 것,스키마 변경이 어렵다는 것이 단점이 될 수 있습니다. NoSQL는 RDBMS와 달리 테이블 간 관계를 정의하지 않기에 join문도 불가능 합니다. 이 말은 즉, 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있다는 것을 의미하는데(데이터 구조 보장X), 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있게 됩니다. 하지만 이러한 경우에서 데이터의 중복이 발생할 수 있고, 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행을 해야하는 상황이 발생하므로 데이터가 잦은 변경이 이루어지지 않은 시스템이 좋고 수평적 확장이 가능하다는 점에서 빅데이터를 저장해야하는 시스템에 적합하다고 알고 있습니다.
  • NoSQL은 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장기술을 의미한다. NoSQL은 테이블간의 관계를 정의하지 않는다. (특징) 1) key-value타입 : 대표적으로 redis, dynamo db 2) Document 타입 : key와 document의 형태로 저장 value형태가 document타입으로 저장되는 것인데, 여기서 document 는 객체지향에서의 객체와 유사함(하나의 단위로 저장) : mongoDB 3) wide column 타입 : HBase 4) graph 타입 : 그래프 구로를 사용하여 데이터를 표현하고 저장하는 db , 주로 소셜네트워크에서 많이 사용되며 연관된 데이터를 추천해주는 추천엔진등의 데이터베이스로 적합 : Neo4J
  • RDBMS (종류) oracle, Mysql, mariaDB (특징) 1) 모든 데이터를 2차원 테이블로 표현하며 2) 테이블은 Row,Column으로 이루어진 기본데이터 저장단위 3) 상호관련성을 가진 테이블의 집합 4) 확장도 용이하며 5) ER(Entity Relationship) 모델 6) ER모델에 따라 데이터베이스가 만들어진다. 7) R은 관계형을 의미하는데 보통 테이블 하나로 답을 얻을 수 없는 상황에서 이 관계성을 사용해 복잡한 요구를 실현할 수 있다.(외래키fk) SQL은 이 부분을 지원해주며 관계형을 지원하기 위한 트랜잭션 AICD 속성의 개념도 도입되어있음. 8) MS(관리시스템) : insert, select, update, delete할 수 있도록 해주는 소프트웨어 SQL을 지원해준다.
  1. mvc 패턴에 대해서 설명해주세요.
    • MVC패턴은 Model-View-Controller로 이루어진 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 사용되는 소프트웨어 디자인 패턴입니다. 즉 비지니스 로직과 화면을 구분하는데 중점을 두고 있으며 이러한 구분을 관심사 분리를 통해서 어플리케이션을 낮은 결합도로 모듈화 할 수 있고, 코드의 재사용성과 유지보수 측면에서 용이하다고 볼 수 있습니다. MVC패턴의 3가지 구성요소는 상호작용을 하며 각 요소들은 명확하게 정의된 자신들의 역할을 수행하게 됩니다. 사용자가 view를 통해서 요청하면 view는 컨트롤러에 이러한 사항을 전달합니다. controller는 전달받은 요청을 확인하고 model에게 해당 요청에 대한 처리사항을 전달하여 model는 해당 요청에 대한 데이터의 비지니스 로직을 수행하게 됩니다. 다시 요청된 처리 결과값을 controller에게 다시 전달하고 controller는 이를 받아 view에게 전달하며 view는 해당 결과값을 사용자에게 보여지는 화면을 업데이트 하게 됩니다. (MVC 패턴을 사용하여 관심사 분리로 인해 애플리케이션은 더욱 모듈화되고, 유지 관리 및 확장 가능해집니다.)
This post is licensed under CC BY 4.0 by the author.