본문 바로가기
DB

[DB] 특징, DDL, DML, DCL, RDBMS, NoSQL 질문, 답변

by 오렌지마끼야또 2023. 5. 10.
728x90
반응형

 

 

 

 

데이터 베이스를 사용하는 이유

  • 데이터베이스가 존재하기 이전에는 파일 시스템을 이용하여 데이터를 관리하였다.
  • 파일 처리 시스템의 문제점은 다음과 같다.
  • 1) 중복 : 파일처리시스템은 각 파일마다 필요한 데이터를 각각 가지고 있어야 하므로 전체적인 시간과 노력, 경제비용에 있어서 효율이 없다.
  •  2) 비일관성 : 데이터에 변경사항이 조금만 있어도 각 파일에서 해당되는 데이터를 모두 변경해야 하므로 수정에 문제가 있고, 한꺼번에 수정이 되지 않으면 데이터값이 서로 틀리게 되는 문제점이 있다.
  • 3) 응용 프로그램 개발 문제 : 기존의 파일 시스템은 파일 용도에만 맞춰서 제작되기 때문에 다른 프로그램을 만들때는 다시 데이터베이스 작업을 해야 한다는 문제가 있다
  • 4) 데이터 추가 및 검색의 문제 : 데이터가 여러 파일에 산재하고 또 그 파일마다 데이터베이스 양식이 다르기 때문에 일률적인 검색이나 단순 추가 작업이 어렵다.
  • 이러한 문제을 해결하기 위해 등장한 것이 데이터 베이스이다.

https://yaelimeee.tistory.com/23



 

성능

  • 디스크 I/O를 어떻게 줄이냐에 따라 달려있다.
  • 데이터를 읽는데 디스크 헤더의 위치 이동없이 얼마나 많은 데이터를 한번에 읽고 쓰느냐에 따라 결정된다.
  • 따라서 순차적으로 I/O를 수행하는게 랜덤 I/O보다 빠르다.



 

특징

데이터의 독립성

  • 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
  • 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다.

데이터의 무결성

  • 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무결성을 구현하게 된다.

데이터의 보안성

  • 인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다.

데이터의 일관성

  • 연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다. 또한 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.

데이터 중복 최소화

  • 데이터베이스는 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database





데이터 베이스 언어

DDL (Data Definition Language,  데이터 정의어)

  • 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말함.
  • CREATE, ALTER, DROP

DML (Data Manipulation Language, 데이터 조작어)

  • 데이터베이스의 테이블에 들어 있는 데이터 조회, 삽입, 수정, 삭제 명령어들을 말함. 
  • SELECT, INSERT, UPDATE, DELETE

DCL (Data Control Language, 데이터 제어어)

  • 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어들을 말함.
  • GRANT, REVOKE

 

https://brownbears.tistory.com/180




 

RDBMS 설명

  • DBMS는 DataBase Management System의 약자로 데이터베이스를 관리하는 시스템입니다.
  • 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합입니다.
  • RDB 는 관계형 데이터 모델에 기초를 둔 데이터 베이스이다. 모든 데이터를 2차원의 테이블 형태로 표현합니다.
  • RDBMS는 Relational DataBase Management Sysytem의 약자로 RDB를 관리하는 DBMS 입니다.



 

NoSQL 설명

  • NoSQL은 (Not only SQL)의 약자로 RDB형태의 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 말합니다.
  • 데이터 테이블은 그냥 하나의 테이블이며 테이블 간의 관계를 정의하지 않아 일반적으로 테이블 간 Join도 불가능합니다. 



CAP 이론

  • CAP 이론은 분산 시스템에서 일관성(Consistency), 가용성(Availability), 네트워크 분할 내성(Partition tolerance) 세 가지 요소 중 최대 두 가지를 보장할 수 있다는 이론입니다.
  • 일관성(Consistency) - 모든 노드들이 동일 시간 동일 데이터를 사용자에게 보여줘야 하는 것
  • 가용성(Availability) - 특정 노드에 장애가 발생해도 성공적으로 서비스를 지속하는 것
  • 분할 내성(Partition tolerance) - 연결이 끊어져도 연속해서 동작하는 것




저장 방식에 따른 NoSQL 분류

1. Key-Value DataBase

  • Key&Value라고 많이 말하며 Key와 Value의 쌍으로 저장된다.
  • Key는 Value에 접근하기 위한 용도로 사용되고, 값은 어떠한 형태의 데이터라도 담을 수 있다. 심지어 이미지나 비디오도 가능하다. 또한 간단한 API를 제공하는 만큼 질의의 속도가 굉장히 빠른 편이다.
  • Key-Value 모델로는 Redis, Riak, Amazon Dynamo DB 등이 있다.

 

2. Document DataBase

  • Key와  Document의 형태로 저장된다. 
  • Key-Value와 다른 점은 Value가 계층적인 형태인 Document로 저장된다는 것이다. 객체지향에서의 객체와 유사하며, 하나의 단위로 취급되어 저장된다. 
  • Key-Value 모델과 동일하게 검색에 최적화되어있다. 단점은 상용이 번거롭고 쿼리가 SQL과는 다르다는 점이다.
  • Document 모델에서는 질의의 결과가 JSON이나 xml형태로 출력된다.
  • Document 모델로는 MongoDB, CouthDB 등이 있다.

 

3. Wide Column DataBase

  • Column-family Model 기반의 DataBase로 다른 모델들은 Key-Value 값을 이용해 필드를 결정한다면, 이 모델은 키에서 필드를 결정한다. 키는 Row와 Column-family, Column-name을 가진다.
  • 연관된 데이터들은 같은 Column-family 안에 속해 있고, 각자의 Column-name을 가진다.
  • 관계형 모델로 설명하자면 어트리뷰트가 계층적인 구조를 가지고 있는 셈이다. 저장된 데이터는 하나의 커다란 테이블로 표현이 가능하고, 질의는 Row, Column-family, Column-name을 통해 수행된다.
  • Column DataBase 모델로는 HBase, Hypertable 등이 있다.

 

4. Graph DataBase

  • Graph DataBase는 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장하는 DataBase이다.
  • 개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있으며, 데이터 간의 관계가 키일 경우에 적합하다. 예를 들면 페이스북이나 인스타와 같이 SNS에서 나와 연관된 친구를 찾아주는 것에 적합하다. 연관된 데이터를 추천해주는 추천 엔진이나 패턴 인식 등의 DataBase로도 적합하다.
  • Graph DataBase 모델로는 Neo4J가 있다.

 

https://gomtaetae.tistory.com/entry/DBMS%EC%99%80-RDBMS-NoSQL%EC%9D%B4%EB%9E%80





RDBMS와 NoSQL의 차이에 대해 설명해주세요.

  • 데이터 모델 : RDBMS는 관계형 데이터 모델을 사용하며, 데이터가 테이블로 구성되어 있습니다. 반면에 NoSQL은 다양한 비관계형 데이터 모델을 사용하며, 데이터가 문서, 키-값, 열 지향, 그래프 등의 형태로 구성됩니다.
  • 쿼리 언어 : RDBMS는 SQL(Structured Query Language)을 사용하여 데이터 검색과 조작을 수행합니다. NoSQL은 SQL을 사용하지 않거나, SQL과 다른 문법을 사용하여 데이터 검색과 조작을 수행합니다.
  • 수평적 확장 : RDBMS는 수직적 확장(Vertical Scaling)에 적합합니다. 즉, 더 많은 하드웨어 리소스(메모리, CPU 등)를 추가하여 데이터베이스 성능을 개선합니다. 반면에 NoSQL은 수평적 확장(Horizontal Scaling)에 적합합니다. 즉, 여러 대의 서버를 추가하여 데이터베이스를 분산 처리하고, 성능을 개선합니다.




그렇다면 RDBMS와 NoSQL은 어느 경우에 적합한가요?

  • RDBMS는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋습니다. 또한 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합합니다. 
  • NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋습니다. 또한 단점에서도 명확하듯이 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 합니다. 이러한 특징들을 기반으로 Update가 많이 이루어지지 않는 시스템이 좋으며 또한 Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 해서 Database를 Scale-Out를 해야 되는 시스템에 적합합니다.

 

https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

728x90
반응형

댓글