개발면접 정리
Primary Key
: 테이블에서 각 Row(행)을 유일하게 구분하는 Column-Key
Foreign Key
: 하나의 테이블에 있는 Column(열)으로는 그 의미를 표현할 수 없는 경우,
다른 테이블의 Primary-Key Column의 값을 반드시 참조해야 하는 Key
ER(Entity-Relation)모델
: 개체-관계 모델, 데이터베이스를 설계할 때 사용하는 모델 중 하나
: 관계 데이터베이스 관계 모델에서 관련된 테이블 간의 일관성(데이터 무결성)을 말함
: 사용자의 실수로 관련 데이터가 삭제되거나 수정되는 것을 막아줌
: 참조 무결성 제약 조건
: 데이터의 무결성으로 인하여 데이터 작업시에 문제가 생기면, 데이터 작업을 하기 이전 시점으로 모든 데이터를 원상 복구 하는 것
: 모두 실행되거나 모두 실행되지 않거나를 뜻함
가장 큰 차이점으로는 비용이 있다. 오라클은 충분히 큰 예산과 복잡한 비즈니스 요구에 맞춰 기업고객들을 위해 설계되었다. MySQL은 가장 일반적으로 데이터베이스 기반 웹 사이트 및 Non-Critical 애플리케이션에 사용되는 저가의 데이터베이스 이다.
오라클은 유료인만큼 유용한 기능이 많다. 내장함수, 성능, 대용량 처리에 좋은 파티션 시스템, 힌트 대신 무겁다.
트랜잭션(전부 아니면 무): 전체 트랜잭션이 하나의 단위로 기록. 실패 시 전체 롤백
정규화: DB설계 시 중복을 최소화해서 구조화하는 프로세스
장점
데이터의 성능이 일반적으로 좋아 정렬, 탐색, 분류가 빠름. 신뢰성이 높아 데이터의 무결성을 보장. 정규화에 따른 갱신 비용을 최소화
단점
기존에 작성된 스키마를 수정하기 어려움
데이터베이스의 부하를 분석하기 어려움
빅데이터를 처리하는데 매우 비효율적임
거대한 Map으로서 key-value 형식을 지원함. 관계형 db와 달리 PK,FK JOIN등 관계를 정의하지 않음. 스키마에 대한 정의가 없다.
장점
대용량 데이터 처리를 하는데 효율적임. 읽기 작업보다 쓰기 작업이 더 빠르고 관계형 데이터베이스에 비해 쓰기와 읽기 성능이 빠름. 데이터 모델링이 유연함. 뛰어난 확장성으로 검색에 유리함.
최적화된 키 값 저장 기법을 사용하여 응답속도나 처리효율 등에서 성능이 뛰어남.
복잡한 데이터 구조를 표현할 수 있음.
단점
쿼리 처리시 데이터를 파싱 후 연산을 해야해서 큰 크기의 document를 다룰 때는 성능이 저하됨.
객체지향 언어인 자바의 관계형 DB 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크
COMMIT
: 작성한 쿼리문에서 UPDATE, DELETE, INSERT를 수행했을 때, 그 쿼리문 수행결과에 대한 확정을 지음
ROLLBACK
: 쿼리문 수행결과에 대한 번복을 함
: 쿼리문 수행 이전으로 원상복귀 하겠다는 뜻
DML
: 데이터베이스에 들어있는 데이터를 조작, 조회, 검색하기 위한 명령어 [ SELECT, DELETE, UPDATE, INSERT ]
DDL
: 테이블 구조를 정의하는데 사용되는 명령어 [CREATE, ALTER, DROP, TRUNCATE(초기화) ]
DCL
: 데이터베이스에 접근하거나 객체에 권한을 주는 등 역할을 하는 언어 [ COMMIT, ROLLBACK, GRANT, REVOKE ]
: DML(데이터 조작어)가 수행됐을때 데이터베이스에서 자동으로 동작하도록 작성된 프로그램.
INNER JOIN
: 2개 이상의 테이블에서 교집합만을 추출
LEFT JOIN
: 2개 이상의 테이블에서 FROM에 해당하는 부분을 추출
RIGHT JOIN
: 2개 이상의 테이블에서 FROM과 JOIN하는 테이블에 해당하는 부분을 추출
OUTER JOIN
: 아웃터 조인 or 풀조인이라고 불림
: 2개 이상의 테이블에서 모든 테이블 해당하는 부분을 추출
: 트랜잭션 장애 - 트랜잭션을 정상적으로 완료하지 못함
: 시스템 장애 - 하드웨어, 소프트웨어 고장으로 인한 장애
: 디스크 장애 - 디스크 스토리지 일부 or 전체 붕괴로 인한 장애
: 검색 속도를 높이기 위한 기술
: 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데 빠름.
: DML ( 데이터 조작어 ) 하는 경우에는 쿼리문 실행 속도가 느려짐.
즉, 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능.
사용하기 좋은 예) WHERE절에서 자주 사용되는 Column, 외래키가 자주 사용되는 Column,
JOIN에 자주 사용되는 Column,
피해야 하는 경우) Data중복도가 높은 Column,
DML이 자주 일어나는 Column.
냥냥 냥냥 냥냥 냥냥
좋은 내용 감사합니다 멋지네요! 저도 개발 공부하는 중인데, https://quantpro.co.kr/ 해당 사이트 퀀트 내용 어떤지 의견주시면 감사하겠습니다!