일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- airflow.cfg
- TIL
- dockerfile
- sql
- 운영체제
- linux
- 데이터 엔지니어링
- 종류
- S3
- airflow
- TCP
- 컴퓨터 네트워크
- 가상환경
- 데이터 웨어하우스
- 파이썬
- http
- 컴퓨터네트워크
- HADOOP
- Docker
- PYTHON
- Go
- 데이터 파이프라인
- 자료구조
- AWS
- 정리
- Django
- redshift
- 데이터베이스
- 데브코스
- 데이터엔지니어링
- Today
- Total
목록Data Engineering/Database (19)
홍카나의 공부방
총을 쏠 때 방아쇠(트리거)를 당기면 총알이 총구에서 발사되기까지 총기 내부에서 여러 많은 과정을 거쳐서 총알이 나가지요? 이처럼 데이터베이스의 트리거는 특정한 테이블에서 특정한 이벤트가 일어날 때 자동으로 실행되는 작업들을 의미합니다. 트리거는 데이터베이스의 테이블에서 데이터 조작(INSERT, DELETE, UPDATE 등)이 수행될 때 트리거에 정의한 동작들을 실행시킵니다. 트리거는 데이터의 일관성, 무결성을 유지하기 위한 목적과 자동화의 목적으로 사용할 수 있어요. 예를 들어, 데이터를 삭제하려고 할 때 참조되는 다른 테이블의 레코드도 삭제한다는 등의 작업을 할 수 있겠지요. 많이 작성하면 유용하게 쓰이겠지만, 그만큼 복잡해져서 유지 보수가 어려워질 수 있겠지요? 사용법은 다음과 같습니다. 저는 ..
데이터베이스 삭제 명령어 DELETE, DROP, TRUNCATE 모두 DB에서 객체를 삭제하는 데 사용하는 명령어다. 하지만 각각의 명령어는 세세한 차이점을 가지고 있다. DELETE DELETE 문은 테이블에서 특정 레코드를 삭제하는 데 사용하는 구문이다. WHERE 절을 사용하여 특정 조건의 레코드를 삭제할 수도 있고, 모든 레코드를 삭제할 수도 있다. DELETE된 데이터는 COMMIT(END) 명령어를 실행하기 이전에 ROLLBACK 명령어를 이용하여 복구할 수 있다. 위 사진에서 보는 것처럼, DELETE 이후 테이블 구조(필드의 정의, 도메인, 제약 조건 등)는 그대로 유지된다. 처리 속도는 TRUNCATE나 DROP문 보다 느리다. DELETE FROM ex_table; DELETE FRO..
해싱 방법 해시 함수를 이용해서 키 값 input에 대한 목표 레코드의 주소로 한 번에 찾아가는 방법이다. 직접 탐색에는 힙이나 B+tree에 비해서 훨씬 빠를 것이다. 여러 해싱 방법 중에서 버킷 해싱이라는 방법이 있다. 여기서 버킷은 하나의 주소를 가지면서 하나 이상의 레코드를 저장할 수 있는 파일의 한 구역을 지칭한다. 각 버킷은 연결 리스트와 같은 자료 구조로 구현된다. 버킷 해싱은 키를 넣으면 해시 함수를 거쳐서 버킷 주소를 알려주는 구조다. 만약 해시 함수가 출력 값을 고르게 분포하지 않을 경우, 서로 다른 데이터가 같은 버킷에 할당되는 충돌 현상이 발생한다. 해시 충돌은 어쩔 수 없이 벌어지는 현상이다. 해시 함수의 출력 값이 무한하지 않기 때문이다. 이러면 특정 버킷이 오버플로우 될 수 있..
B+ 트리 MySQL은 B+트리로 인덱스가 구현되어 있다. B+ 트리는 인덱스 세트와 순차 세트라는 2가지 세트를 만든다. 인덱스 세트는 내부 노드로, 리프에 있는 키들에 대한 경로만 제공한다. 모든 키 값은 순차 세트(리프 노드)에 있다. 인덱스 세트는 직접 탐색을 지원하며, 순차 세트는 순차 탐색을 지원한다. B+ 트리는 B트리와 다르게 Best도 없고 Worst도 없다. 탐색은 무조건 O(log N)이다. B+ 트리의 루트 및 내부 노드 구조에는 레코드에 대한 포인터 값이 제외되어 있다. 반대로 리프 노드는 루트 및 내부 노드와 다르게 서브트리에 대한 포인터가 없다. 대신 레코드에 대한 포인터 값이 있고, 다음 리프노드에 대한 포인터가 존재한다. 순차 세트의 모든 리프 노드는 링크드 리스트 형태로 ..