일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- HAVE A GOOD DAY
- SSAFY 10기 화이팅
- 아자아자 화이팅
- 우유가옆으로넘어지면아야
- SSAFY 화이팅
- 텐션 업 10기 화이팅
- 네트워크
- 수학
- SeongSeobDang
- Have a good day :)
- 우유아야
- SSAFY 테스트
- Have a nice day.
- Hamming weight
- 모르고리즘
- have a nice day
- 우유가 옆으로 넘어지면 아야
- 코로나 싫어요
- SSAFY IM/A
- I am Korean
- BFS
- DFS
- amazon
- DP
- 텐션 업 10기!
- 자고 싶다
- LeetCode #릿코드 #좋은 하루 되세요 #Have a nice day
- Java 환경 설정
- 자료구조
- Today
- Total
Hope Everyone Is Happy
4. 데이터베이스의 종류 본문
본 게시글은 책 : 면접을 위한 CS 전공지식 노트 (출판사 : 길벗, 주홍철 지음) 을 참조하여 작성하였습니다. + 구글링
◆ 관계형 데이터베이스 (RDBMS)
- 관계형 데이터베이스는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스
- SQL이라는 언어를 써서 조작
- MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등 다양하게 존재
- 표준 SQL은 지키지만, 각각의 제품에 특화시킨 SQL을 사용
ex) 오라클의 경우 PL/SQL이라고 하며 SQL Server에서는 T-SQL, MySQL은 SQL을 사용
- MySQL
: 대부분의 운영체제와 호환되며 현재 가장 많이 사용하는 데이터베이스
: 스택 오버플로우에서 조사한 결과(2021)에서 MySQL은 아직 많이 사용되고 있는 DB인 것을 확인
: C, C++로 만들어졌으며 MyISAM 인덱스 압축 기술, B-트리 기반의 인덱스, 스레드 기반의 메모리 할당 시스템, 매우 빠른 조인, 최대 64개의 인덱스를 제공
: 대용량 데이터베이스를 위해 설계되어 있고 롤백, 커밋, 이중 암호, 보안 등의 기능을 제공, 많은 서비스에서 사용
: MySQL의 스토리지 엔진 아키텍쳐
: DB의 심장과도 같은 역할을 하는 곳이 바로 스토리지 엔진
: 모듈식 아키텍처로 쉽게 스토리지 엔진을 바꿀 수 있으며 데이터 웨어하우징, 트랜잭션 처리, 고가용성 처리 등에 강점
: 스토리지 엔진 위에는 커넥터 API 및 서비스 계층을 통해 MySQL 데이터베이스와 쉽게 상호 작용
: 쿼리 캐시를 지원해서 입력된 쿼리문에 대한 전체 결과 집합을 저장
: 사용자가 작성한 쿼리가 캐시에 있는 쿼리와 동일하면 서버는 단순히 구문 분석, 최적화 및 실행을 건너뛰고 캐시의 출력만 표시
- PostgreSQL
: MySQL 다음으로 개발자들이 선호하는 데이터베이스 기술로 널리 인정
: 디스크 조각이 차지하는 영역을 회수할 수 있는 장치인 VACUUM이 특징
: 최대 테이블의 크기는 32TB이며 SQL뿐만 아니라 JSON을 이용해서 데이터에 접근 가능
: 지정 시간에 복구하는 기능, 로깅, 접근 제어 중첩된 트랜잭션, 백업 등 가능
◆ NoSQL 데이터베이스 (Not only SQL)
- Not Only SQL이라는 슬로건에서 생겨난 데이터베이스
- SQL을 사용하지 않는 데이터베이스, 대표적으로 MongoDB와 redis등 존재
- MongoDB
: JSON을 통해 데이터에 접근, Binary JSON 형태 (BSON)로 데이터가 저장됨
: 와이어드타이거 엔진이 기본 스토리지 엔진으로 장착된 키(Key)-값(Value) 데이터 모델에서 확장된 도큐먼트 기반의 데이터베이스
: 확장성이 뛰어나며 빅데이터를 저장할 때 성능이 좋고 고가용성과 샤딩, 레플리카셋을 지원
: 스키마를 정해 놓지 않고 데이터를 삽입 할 수 있기 때문에 다야안 도메인의 데이터베이스를 기반으로 분석하거나 로깅 등을 구현할 때 강점
: 도큐먼트를 생성할 때 마다 다른 컬렉션에서 중복된 값을 지니기 힘든 유니크한 값인 ObjectID가 생성
ex) MongoDB ObjectID - 5f4947594342bf9a4ea20b9e ( 타임스탬프, 랜덤 값, 카운터 )
: 이는 기본키로 유닉스 시간 기반의 타임스탬프(4byte), 랜덤값(5byte), 카운터(3byte)로 구성
- redis
: 인메모리 데이터베이스이자 키-값 데이터 모델 기반의 데이터베이스
: 기본적인 데이터 타입은 문자열(string)이며 최대 512MB까지 저장 가능
: 이외에도 셋(set), 해시(hash)등을 지원
: pub/sub 기능을 통해 채팅 시스템, 다른 데이터베이스 앞단에 두어 사용하는 캐싱 계층, 단순한 키-값이 필요한 세션 정보 관리, 정렬된 셋 (sorted set) 자료 구조를 이용한 실시간 순위표 서비스에 사용
위의 글과 관련하여 추가적인 내용이나 피드백은 언제나 환영입니다 :)
'※ CS 스터디 > 데이터베이스' 카테고리의 다른 글
7. 조인의 원리 (0) | 2023.08.29 |
---|---|
6. 조인(Join)의 종류 (0) | 2023.08.29 |
3. 트랜잭션과 무결성 (0) | 2023.08.23 |
2. ERD와 정규화 과정 (0) | 2023.08.23 |
1. 데이터 베이스의 기본 (0) | 2023.08.23 |