본문 바로가기
Study/CS 전공지식 노트

[CS 전공지식 노트] 4장. 데이터베이스

by Nahwasa 2022. 12. 15.

스터디 메인

 

  이 스터디의 경우 이미 책의 내용이 매우 축약된 내용이므로 책 내용 정리는 크게 의미가 없다고 생각합니다. 따라서 스터디 정리는 추가로 설명한 부분에 대해 작성했습니다.

 

[ 4장 - 데이터베이스 ]

  인기는 MySQL이 많으나, 자바쪽은 오라클을 많이 쓴다.

- 185p 보통 논리모델쪽에서 엔터티, 릴레이션이 물리모델의 테이블을 뜻함. 테이블의 행을 "row, 튜플 레코드", 열을 "칼럼, 필드, 속성(어트리뷰트)" 라고 말함.

 

- 191p 오라클은 VARCHAR2가 권장되는데, 차후 VARCHAR는 오라클쪽에서 변경할 수 있기 때문이라고 함.

 

- 202p 예시가 좀 애매한데, 그림으로 그려보면 이해하기 쉬움. 유저 ID와 수강명이 성취도를 결정하는데, 유저 ID와 수강명의 부분집합인 유저 ID가 다시 유저번호의 결정하므로 나눈 것임.

 

- SQL : RDB에서 자료의 검색과 관리, 스키마 생성과 수정, 객체 접근 조정 관리 등을 위해 고안됨. RDB에 저장된 데이터를 효율적으로 가져오는 것이 목적. 주로 백엔드에서 작성하고 호출.

 

- GQL : GraphQL, API 인터페이스를 위한 쿼리임. 웹 클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적. 주로 프론트엔드(클라이언트)에서 작성하고 호출.

 

- RDB : 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스. 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용한 테이블 간 Join이 가능하다는게 가장 큰 특징

  • 오라클 : 성능 좋고 비쌈. 대용량 데이터 처리와 유지보수에서 장점이 있음. 다양한 DB 통계 정보 지원. ANSI/ISO SQL 뿐 아니라 오라클 SQL도 있음.
  • MS-SQL(SQL Server) : 마소에서 개발한 관계형 DB. MS의 다른 개발 언어와 호환성이 뛰어남. SQL Server 2017 이전까지는 윈도우만 지원하다가, 2017 부터는 리눅스도 지원. 하나의 쿼리에 여러개의 SELECT문을 사용해 여러개의 결과를 한번에 받는 기능도 있음. 가격이 쌈.
  • MySQL : 현재는 오라클이 인수한 상태임. 대부분의 운영체제와 호환되며 현재 가장 많이 사용되는 DB.
  • MariaDB : 오라클에 MySQL이 넘어가면서, 오픈 소스 진영에서 MySQL을 모태로 만든 DB.
  • PostgreSQL : 오픈소스 객체-관계형 DB (ORDBMS). MySQL에 비해 SQL 표준을 더 잘 지원하고, 비교적 쿼리가 복잡해질수록 MySQL보다 성능이 잘 나온다고 함. 다만 기본 CRUD 성능이 다른 DB보다 안좋은편. PostGIS라는 지리적 객체에 대한 지원을 추가하는 확장이 있음.

- NoSQL : RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술. 테이블 간 관계를 정의하지 않음(따라서 JOIN 불가). 대량의 분산된 데이터를 저장하고 조회하는 데 특화 (페타급의 데이터도 저장 가능). 스키마가 유동적임. 칼럼이 각기 다른 데이터 타입이라도 가능.

  • Key-Value : 가장 단순한 형태의 NoSQL. 간단한 API(put, get, delete)만을 제공하므로 배우기 쉬운편. Value는 어떤 형태의 데이터라도 담을 수 있음(이미지나 비디오도 가능). Redis 등
  • Document : Key-Document 형태로 저장. 키-값 모델에서 좀 더 진화된 모델. Value가 계층적인 형태의 도큐먼트(객체)로 변경됨. 질의 결과는 json이나 xml 형태. 도큐먼트 내의 item을 이용한 쿼리가 가능하지만, SQL은 아니고 Xquery 등의 도큐먼트 질의 언어를 따로 익혀야함. MongoDB 등.

 

- 인덱스

  • 해시 테이블 : 자바의 해시맵 생각하면 됨. 등호땐 좋음.

  • B-트리 : Balanced Tree. 삽입, 삭제, 수정 등 모든 연산이 O(logN)
  • B+트리 : B-트리 개선. 모든 데이터가 리프노드쪽에 있고 서로 링크되있어서 풀 스캔 시 좋음.
  • 비트맵 인덱스 : 비트마스킹 생각하면 됨. 분포도가 적을 떄 좋음.

 

- 자바와 DB

  • JDBC : 이하 모든 자바 데이터베이스 접속의 기본 기술로, 자바에서 제공하는 API임. 이것만 가지고도 당연히 DB 다루는거 다 가능함.
  • ORM은 자바 객체를 데이터베이스 객체로 매핑해줘서 SQL을 자동생성해주는 방식. SQL Mapper는 SQL을 명시해줘야함.
  • SQL Mapper : MyBatis 등 (기존 아파치 iBatis에서 구글로 이전되면서 이름 및 기능 바뀜)
  • ORM : JPA(자바 ORM 기술에 대한 자바의 API 표준 명세), Hibernate(JPA의 구현체 중 하나.) 등

 

- Data Replication

  • 두 개 이상의 db를 Master/Slave로 나눠서 동일한 데이터를 저장하는 방식

 

- 샤딩

  • 같은 테이블 스키마를 가진 데이터를 다수의 db에 분산해서 저장하는 방법

 

 

[ References ]

https://www.jetbrains.com/ko-kr/lp/devecosystem-2021/

 

The State of Developer Ecosystem in 2021 Infographic

The State of Developer Ecosystem 2021 is a detailed report about the programming community, which covers the latest trends in languages, tools, technologies, and lifestyles of developers.

www.jetbrains.com

https://survey.stackoverflow.co/2022/#overview

 

Stack Overflow Developer Survey 2022

In May 2022 over 70,000 developers told us how they learn and level up, which tools they’re using, and what they want.

survey.stackoverflow.co

https://pythontoomuchinformation.tistory.com/528

 

RDBMS와 NoSQL의 차이점 및 장단점

들어가기 전에 DBMS DataBase Management System 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어. SQL Strucured Query Language 관계형 데이

pythontoomuchinformation.tistory.com

https://tech.kakao.com/2019/08/01/graphql-basic/

 

GraphQL 개념잡기

GraphQL은 페이스북에서 만든 쿼리 언어입니다. GrpahQL은 요즘 개발자들 사이에서 자주 입에 오르내리고 있으나, 2019년 7월 기준으로 얼리스테이지(early-stage)임은 분명합니다. 국내에서 GraphQL API를 O

tech.kakao.com

https://jh2021.tistory.com/12

 

Spring Boot에서 GraphQL 활용법

Spring Boot를 활용하여 RESTAPI를 다룰 수 있으며 REST가 무엇인지, 클라이언트와 서버가 통신하는 HTTP에 대해 학습한 지식이 있을 때 유용합니다. 이 글을 읽기 전 사전에 RESTAPI 그리고 HTTP메서드를

jh2021.tistory.com

https://code-lab1.tistory.com/53

 

[DB] NoSQL이란?, NoSQL 특징, NoSQL 종류, NoSQL 장점

NoSQL이란? NoSQL은 비관계형 데이터베이스를 지칭한다. 즉, 관계형 데이터 모델을 지양 하며 대량의 분산된 데이터를 저장하고 조회하는 데 특화되었으며 스키마 없이 사용 가능하거나 느슨한 스

code-lab1.tistory.com

https://velog.io/@savernet/DB-DBMS별-차이

 

[DB] DBMS별 특징과 차이

각 DBMS별로 어떤 차이가 있는지 알아보도록 하겠습니다.

velog.io

https://hanamon.kr/데이터베이스-트랜잭션의-acid-성질/

 

[데이터베이스] 트랜잭션의 ACID 성질 - 하나몬

트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛을 말한다. 데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다. ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안

hanamon.kr

 

https://nesoy.github.io/articles/2018-02/Database-Replication

 

Database의 리플리케이션(Replication)이란?

 

nesoy.github.io

https://nesoy.github.io/articles/2018-05/Database-Shard

 

Database의 샤딩(Sharding)이란?

 

nesoy.github.io

https://sabarada.tistory.com/91

 

어떤 DB를 사용해야 할까 ? CAP 이론

안녕하세요. 현재 세상에는 수많은 데이터를 저장할 수 있는 서비스가 많이 나와있습니다. 그런데 이런 와중에 내가 만드는 시스템은 어떤 Database를 사용해야 좋을까요? 확장성은 어느정도로 가

sabarada.tistory.com

https://hahahoho5915.tistory.com/63

 

[간단정리] GraphQL이란? (REST api와 차이점)

개요 GraphQL 간단하게 알아보기 GraphQL GraphQL 은 API를 위한 쿼리 언어(Query Language)이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임입니다. GraphQL은 특정한 데이터베이스나 특정한

hahahoho5915.tistory.com

https://logicalread.com/oracle-11g-hash-indexes-mc02/#.Y4NnfnZByUk

 

Understanding Hash Indexes in Oracle 11g

Using Oracle hash index for an exact match in WHERE clause lets Oracle access data by performing one hash function and one I/O instead of multiple I/Os.

logicalread.com

댓글