Cs는 Computer Science로 직역하면 컴퓨터 과학이다.
이렇게 컴퓨터에 관련된 모든 것을 CS라 한다.
"개발자는 컴퓨터가 아니라 코드로 프로그래밍을 짜는거니까 몰라도 되지않을까?"
나는 요리사가 되기위해서 한식과 양식 조리법만 배우면 되지 왜 각 음식의 상성과 재료의 속성 조미료의 관계 그리고 식당이 돌아가는 방식과 운영 노하우를 알아야하지? 하는것과 같고 생각한다.
물론 김치찌개만 잘 끓여서 김치찌개 가게를 열 수는 있다. 하지만 유명한 쉐프들은 각 음식의 상성과 재료의 속성을 이해하고 음식을 디벨롭시키고. 가게 운영방식과 노하우를 통해 효율적으로 가게를 운영한다.
데이터를 규칙을 통해 구조화된 틀로 저장한 형태.
말 그대로 데이터베이스를 직관적이고 쉽게 관리하기 위해 만들어진 시스템이다.
데이터베이스에서 저장할 대상이 되는 개체를 뜻한다. 쉽게 말해서 사용자와 게시글을 데이터로 관리할려면 각각 사용자와 데이터 엔티티를 만들어야 한다.
릴레이션은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다.
데이터베이스의 종류는 크게 “관계형 데이터베이스(MySQL)”와”NoSQL 데이터베이스로(MongoDB)”로 나눌 수 있다. 두 테이블의 차이는 구조설계가 다르다.
데이터베이스의 테이블들은 여러 관계를 맺는다.
ERD는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션의 관계를 정의한 것이다.
건축의 골조와 같은 개념으로 서비스 구축 단계에서 ERD의 정의에 따라 서비스의 품질이 결정된다.
시스템 요구 사항 > ERD > 데이터베이스
트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다.
데이터베이스에 접근하는 방법은 쿼리. 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.
원자성, 일관성, 독립성, 지속성이 있으며 이를 ACID특징이라 한다.
10원을 가진 A가 0원을 가진 B에게 5원을 이체한다.
위 과정의 결과만을 나타낸다.
롤백시 어떻게 해야 할 것인지에 대한 방법이 있어야하며, 외부 API를 호출하는 것이 있으면 안된다.
10원이 있는 A는 인출과 송금이 가능. 0원이 있는 B는 인출과 송금이 불가능.
실행 중인 트랜잭션의 중간결과를 다른 트랜잭션이 접근할 수 없다.
동시성이 강해지면 격리성이 약해지고 그 반대도 똑같다.
(격리성높음)
↑ SERIALIZABLE(팬텀 리드)
REPEATABLE_READ(반복 가능하지 않은 조회)
READ_COMMITTED(더티리드)
↓ READ_UNCOMMITTED
(격리성낮음)
특징
특징
*스키마 : 데이터베이스에서 데이터의 구조를 정의한 것. 데이터가 어떻게 구성되고 어떤 형태로 저장될지에 대한 초기 도면 같은 역할.
E) 학생 테이블의 스키마
학생 이름 : 텍스트
나이 : 숫자
학번 : 고유 숫자
*샤딩 : 대규모 데이터를 여러 개의 서버에 나누어 저장하는 분산 데이터베이스 기술.