2022.09.19 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 1-1. 디자인 패턴(1)
2022.09.20 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 1-1. 디자인 패턴(2)
2022.09.20 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 1-2. 프로그래밍 패러다임(함수형,객체지향,절차적프로그래밍)
2022.09.22 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 2-1. 네트워크의 기초(토폴로지&성능분석 명령어)
2022.09.23 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 2-2. TCP/IP 4계층 모델
2022.09.27 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 2-3. 네트워크 기기(스위치 등)/IP주소
2022.10.02 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 2-4.HTTP
2022.10.04 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 3-1. 운영체제의 구조와 역할 및 컴퓨터의 구조
2022.10.07 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 3-2. 메모리계층 및 메모리 관리
2022.10.14 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 3-3. 프로세스와 스레드(2): 멀티프로세싱
2022.10.24 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 3-4. CPU 스케줄링 알고리즘
2022.10.27 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 4-1. 데이터베이스의 기본(엔터티의 관계, 데이터 타입 최적화, 관계, 키)
2022.10.28 - [소소한 CS 지식/면접을 위한 CS 전공지식 노트] - 4-2. ERD와 정규화 과정
4-1. 관계형 데이터베이스(RDBM)
행과 열을 가지는 표 형식 데이터를 저장하는 형식의 데이터베이스이며 SQL이라는 언어를 써서 조작한다.
- 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류
- 테이블(table)로 이루어져 있고, 이 테이블은 키(key)와 값(value)의 관계를 나타낸다. 테이블을 조인해 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다.
- 관계형 데이터베이스는 위와 같이 구성된 테이블이 다른 테이블과 관계를 맺고 모여있는 집합체이다.
관계형 데이터베이스(RDBMS)
관계형 데이터베이스를 만들고 업데이트하고 관리하는 데 사용하는 프로그램
- MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, MSSQL 등이 있다.
- 관계형 데이터베이스의 경우 표준 SQL은 지키기는 하지만, 각각의 제품에 특화시킨 SQL을 사용한다.
- ex) 오라클의 경우 PL/SQL 이라고 하며 SQL Server에서는 T-SQL, MySQL은 SQL을 사용한다.
MYSQL
대부분의 운영체제와 호환되며 현재 가장 많이 사용하는 RDBMS
- 5천건 이하의 데이터를 다루는데 적합하며, 속도, 안정성, 확장 가능성을 가장 추구하는 DBMS
- C, C++로 만들어졌고 MyISAM 인덱스 압축 기술, B-트리 기반의 인덱스, 스레드 기반의 메모리 할당 시스템, 매우 빠른 조인, 최대 64개의 인덱스를 제공한다.
- 대용량 데이터베이스를 위해 설계되어 있고 롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공하며 많은 서비스에서 사용한다.
MySQL 스토리지 엔진 아키텍처
MySQL은 다른 DBMS에 비해 구조가 독특하고 다른점 때문에 다른 DBMS에서는 가질수 없는 많은 장점을 누릴 수 있다. 반대로 다른 DBMS 에서는 문제가 되지 않거나 생각치 않아도 될 부분이 가끔 문제가 될수도 있다.
MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분 할 수 있다.
각 스토리지 엔진은 성능 향상을 위해 각각의 다른 형태의 캐시 기능을 내장하고 있다.
데이터베이스의 심장과도 같은 역할을 하는 곳이 스토리지 엔진인데, 모듈식 아키텍처로 쉽게 스토리지 엔진을 바꿀 수 있고, 데이터 웨어하우징, 트랜잭션 처리, 고가용성 처리에 강점을 두고 있다.
- 스토리지 엔진 위에는 커넥터 API 및 서비스 계층을 통해 MySQL 데이터베이스와 쉽게 상호 작용할 수 있다.
- MySQL은 쿼리 캐시를 지원해서 입력된 쿼리 문에 대한 전체 결과 집합을 저장하기 때문에 사용자가 작성한 쿼리가 캐시에 있는 쿼리와 동일하면 서버는 단순히 구문 분석, 최적화 및 실행을 건너뛰고 캐시의 출력만 표시한다.
데이터웨어하우징: 데이터웨어하우스를 구축하고 활용하는 일련의 과정으로, 전사적인 아키텍처상에서 의사결정을 지원하기 위한 환경을 구축한다.
데이터웨어하우스: 사용자의 의사결정에 도움을 주기 위해 다양한 시스템에서 데이터를 추출, 변환, 요약해 능동적으로 사용자한테 제공할 수 있는 데이터베이스의 집합체
PostgreSQL
MySQL 다음으로 개발자들이 선호하는 데이터베이스 기술로 널리 인정받고 있다.
- 디스크 조각이 차지하는 영역을 회수할 수 있는 장치인 VACUUM이 특징이다. 최대 테이블의 크기는 32TB이고 SQL 뿐만 아니라 JSON을 이용해서 데이터에 접근할 수 있다.
- 지정 시간에 복구하는 기능, 로깅, 접근 제어, 중첩된 트랜잭션, 백업 등을 할 수 있다.
- 복잡한 쿼리와 대규모 데이터베이스를 다룰 수 있는 기능이 풍부한 데이터베이스
4-2. NoSQL 데이터베이스
NoSQL(Not only SQL)이라는 슬로건에서 태어난 데이터베이스로 SQL을 사용하지 않는 데이터베이스를 말하며, 대표적으로 MongoDB와 redis 등이 있다.
- 기존의 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 사용하고, 데이터의 저장 및 검색을 위한 특화된 메커니즘을 제공한다.
- 이를 통해 NoSQL 데이터베이스는 단순 검색 및 추가 작업에 있어서 매우 최적화된 키 값 저장 기법을 사용해, 응답속도나, 처리 효율 등에 있어서 매우 뛰어난 성능을 나타낸다.
- 즉 초고용량 데이터 처리 등 성능에 특화된 목적을 위해, 비관계형 데이터 저장소에, 비구조적인 데이터를 저장하기 위한 분산 저장 시스템
MongoDB
Humongous를 줄인 표현, 즉 '겁나 큰 DB'라는 뜻
JSON을 통해 데이터에 접근할 수 있고, Binary JSON 형태(BSON)로 데이터가 저장되며 와이어드타이거 엔진이 기본 스토리지 엔진으로 장착된 키-값 데이터 모델에서 확정된 도큐먼트 기반의 데이터베이스
- MongoDB는 가장 기본적인 데이터를 Document라고 부른다. 이는 MySQL 같은 RDBMS에서는 row에 해당한다. 이 Document의 집합을 Collection이라고 하는데 RDBMS에서는 Table에 해당된다. Collection의 집합은 DB이고, 이는 RDBMS에서도 동일하다.
- 확장성이 뛰어나며 빅데이터를 저장할 때 성능이 좋고 고가용성과 샤딩, 레플리카셋을 지원한다. 또한 스키마를 정해 놓지 않고 데이터를 삽입할 수 있기 때문에 다양한 도메인의 데이터베이스를 기바능로 분석하거나 로깅 등을 구현할 때 강점을 보인다.
MongoDB는 도큐먼트를 생성할 때마다 다른 컬렉션에서 중복된 값을 지니기 힘든 유니크한 값인 ObjectID가 생성된다.
- ObjectId는 기본키로 유닉스 시간 기반의 타임스탬프(4바이트), 랜덤 값(5바이트), 카운터(3바이트)로 이루어져 있다.
- ObjectId는 RDBMS의 PK와 같이 고유한 키를 의미하는 데 DBMS에서의 PK는 DBMS가 직접 부여한다면 ObjectId는 클라이언트에서 생성한다.
- ObjectId를 넣지 않고 저장한다면 데이터가 그대로 저장된다.
redis
인메모리 데이터베이스이자 키-값 데이터 모델 기반의 데이터베이스 => 고성능 키-값 저장소로 문자열, 리스트, 해시, 셋, 정렬된 셋 형식의 데이터를 지원하는 NoSQL
- 인메모리 데이터베이스: 모든 데이터를 메모리에 저장하고 조회한다.
- redis는 다양한 자료구조를 지원하는데, 기본적인 데이터 타입은 문자열(String)이고, 최대 512MB까지 저장할 수 있다. 이외에도 set, hash 등을 지원한다.
- pub/sub 기능을 통해 채팅 시스템, 다른 데이터베이스 앞단에 두어 사용하는 캐싱 계층, 단순한 키-값이 필요한 세션 정보 관리, 정렬된 셋(sorted set) 자료 구조를 이용한 실시간 순위표 서비스에 사용한다.
- 다양한 자료구조를 지원하게 되면 개발의 편의성이 좋아지고 난이도가 낮아진다는 장점이 있다.
'cs > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
4-5. 인덱스 (0) | 2022.11.04 |
---|---|
4-3. 트랜잭션과 무결성 (0) | 2022.10.31 |
4-2. ERD와 정규화 과정 (0) | 2022.10.28 |
4-1. 데이터베이스의 기본(엔터티의 관계, 데이터 타입 최적화, 관계, 키) (0) | 2022.10.27 |
3-4. CPU 스케줄링 알고리즘 (0) | 2022.10.24 |