이카's
반응형
[DB] Transaction Isolation Level (트랜잭션 고립 수준)
SW/Data Base 2022. 1. 16. 15:48

Transaction Isolation Level Concurrency control에서는 상황3을 다뤘다. 상황3 은 T1, T2가 모두 쓰기를 할 때 하지만 Transaction Isolation Level에서는 상황2를 다룬다. T1 읽기, T2 쓰기 상황2 에서 Lock을 사용하여 해결하는 것도 가능하나, 두 트랜잭션의 동시 진행 정도를 과도하게 막기 때문에 Performance issue가 발생한다. 이를 완하하기 위해 다른 방법을 찾을 필요가 있어 Isolation level이 있다. Read Error 트랜잭션1이 읽기, 트랜잭션2가 쓰기인 시나리오에서 트랜잭션1의 읽기 도중 문제가 발생한다. 아래 모든 시나리오는 T1-read T2-write로 생각한다. Dirty read T1, T2가 ..

[DB] Transaction Concurrency control (동시성 제어)
SW/Data Base 2022. 1. 16. 15:46

Concurrency control 트랜잭션이 동시에 수행 될 때, 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS의 기능을 동시성 제어(Concurrency control)이라고 한다. 동시성 제어 시나리오 상황 트랜잭션1 트랜잭션2 상황1 읽기 읽기 상황2 읽기 쓰기 상황3 쓰기 쓰기 읽기만 한다면 크게 문제가 없지만 문제는 상황2, 상황3에서 나타난다. 상황2는 Isoltion level에서 다루고 동시성 제어에서는 상황3을 살펴보자 갱신손실 문제 갱신손실(lost update) 문제는 두 개의 트랜잭션이 한 개의 데이터를동시에 갱신할 때 발생한다. 작업 설명 T1(트랜잭션1)은 예금을 인출하는 작업 T2(트랜잭션2)는 입금하는 작업 T1은 계좌 X에서 100을 뺀다. T2는 계좌..

[DB] Transaction
SW/Data Base 2022. 1. 16. 15:45

트랜잭션 DBMS가 데이터 베이스를 다룰 때 사용하는 작업 단위 ACID 성질 원자성(Atomicity) : 트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 않아야 한다. 어중간한 일이 없어야 한다. all of nothing TCL : COMMIT, ROLLBACK은 트랜잭션 제어 명령어 SAVE : SAVEPOINT를 이용해 트랜잭션이 길어질 경우 중간에 값을 저장하는 역할 일관성(Consistency) : 트랜잭션을 수행하기 전, 수행한 후 데이터베이스는 항상 일관된 상태를 유지해야 한다. 예 판매자 계좌 10만원 구매자 계좌 10만원 인 경우 계좌이체 시 트랜잭션이 실행 중일 때, 판매자계좌 + 구매자계좌 = (20만원x 19만원o)으로 나오게 된다. (일관성 없는 상태) 독립성(I..

[자료구조] 스택, 큐, 트리, 그래프 정리
SW/자료구조 2021. 6. 22. 22:32

자료구조 공부 목표 자료구조 개념 및 설명 stack, queue, tree, graph 개념 이해 기본 개념과 구조를 파악 및 목적을 이해 상황에 맞는 자료구조를 떠올릴 수 있다. tree 및 graph 탐색 기법 이해 BST 이해 BFS, DFS 개념 이해 자료구조란? 쉽게 말해 데이터들의 구조이다. 수많은 데이터들을 어떻게 저장하고, 어떻게 위치를 새우냐에 따라 사용하는 방법이 다를 것이다. 데이터 : 문자, 숫자, 그림, 영상 등 다양한 정보의 집합 자료구조 종류 자료구조 단순구조 정수 / 실수 문자 / 문자열 2진수 선형구조 (선 모양으로 생긴 자료 구조) 리스트(배열) 연결 리스트 단순 / 이중 / 원형 덱 / 스텍 / 큐 비선형구조 트리 일반 트리 / 이진 트리 그래프 방향 그래프 / 무방향..

[재귀] with JS
SW/알고리즘 2021. 6. 16. 09:56

재귀 공부 목표 재귀적 사고 쪼개어 생각하기 함수 자신의 재귀적 호출 탈출 조건 재귀 활용(트리 구조) 트리 구조 json 구조 dom 구조 재귀 함수 재귀란? 재귀 함수 언제 사용해? 재귀 함수 사용 연습 문제를 쪼개서 생각하기 하나의 배열이 있고, 그 배열의 합을 구하는 함수를 만든다고 가정하자 내가 생각한 공식은 반복문 이었다. arr = [1, 2, 3, 4, 5] let sum = 0 for (let i = 0; i < arr.length; i++) { sum += arr[i] } console.log(sum); 하지만 반복문 없이 단순히 arr의 원자의 합을 구한다고 생각해 보자 한번에 합을 계산하는 것보다 하나씩 쪼개서 계산하는게 더 쉬울 것이다. [1] sum = 1 [1, 2] sum =..

article thumbnail
자료구조 정리 #2 트리(Tree), 그래프(Graph), DFS, BFS
SW/자료구조 2020. 11. 27. 14:19

비선형구조 1. 트리 (Tree) 사이클(순환)이 없는 연결된 그래프입니다. 트리를 구성하는 노드 간에는 단순 경로가 존재하는 특징이 있습니다. 여기서 단순 경로란 지나왔던 접점을 다시 지나지 않는 경로 입니다. 우리가 주로 쓰는 간단한 예시로는 폴더 구조가 있습니다. 트리는 일반트리와 이진트리가 있습니다. 차이로는 이진트리는 2개 이상의 노드가 존재하지 않는 구조라 생각하면 쉽습니다. ( 이진트리 - 각 노드가 최대 두개의 자식을 갖는 트리 ) 트리의 큰 특징으로는 1. 방향성 있음. 2. 각 노드는 어떤 자료형으로도 표현이 가능 3. 사이클이 존재 할 수 없다.(하나의 연결 그래프) 4. 트리는 이진 트리, 이진 탐색 트리, 균형트리 등이 있습니다. 2. 그래프 (Graph) 그래프란? 노드와 노드를..

article thumbnail
자료구조 정리 #1 배열(Array), 리스트(LinkedList), 큐(Queue), 스택(Stack)
SW/자료구조 2020. 11. 12. 02:11

- 자료구조의 분류 선형구조 1. 배열 (Array) (선형 리스트) 배열의 특징은 논리적 순서와 물리적 순서가 일치한다. 즉, index값을 통해 원소 접근이 용이하며, 구현이 쉽다. 하지만 단점으로 삽입, 삭제 등에 대한 연산에 필요한 Cost가 높다. 삭제를 하는 경우 순서를 맞추기 위해 뒤의 원소들을 앞으로 Shift 연산을 해줘야 한다. 삭제 1 2 3 4 5 1 2 삭제 4 5 1 2 4 5 1 2 4 5 2. 연결 리스트(LinkedList) 배열의 삽입/삭제의 단점을 극복하고자 만든 개념이 리스트이다. 배열은 논리적, 물리적 저장이 순서대로 되어 있다. 하지만 리스트는 논리적으로는 순서대로 되어 있으나 물리적으로는 순서대로 되어있지 않다. 대신 각 원소가 index위치에 ..

article thumbnail
[알고리즘/퀵정렬] #Quick_Sort / in Python
SW/자료구조 2020. 10. 8. 13:31

퀵 정렬 - 숫자를 오름차순으로 정렬하는 프로그램 - 기존 선택, 버블, 삽입은 N^2이라는 시간 복잡도를 가지고 있다. - 데이터가 무수히 많아 짐에 따라 좀 더 빠른 정렬을 생각 해볼 필요가 있다. - 이때 생각해낸 것이 퀵정렬이다. - 특정한 배열이 있을 때 "분할 정복" 알고리즘을 쓴다 & 재귀 알고리즘을 이용한 정렬이다. 기본원리 가운데 pivot값을 정한 후 작은값 + pivot값 + 큰값 같은 형식으로 정리하는 원리 이다. 코드는 직관성 있고 이해하기 쉽지만 효율적이지 않다. -메모리 사용 측면에서 좋지 못한 코드이다. 리스트의 정 가운데 있는 값을 pivot 값을 선택합니다. 시작 인덱스(low)는 계속 증가 시키고, 끝 인덱스(high)는 계속 감소 시키기위한 while 루프를 두 인덱스..

[알고리즘/삽입정렬] #Insertion_Sort / in Python
SW/자료구조 2020. 10. 7. 14:54

삽입 정렬 - 숫자를 오름차순으로 정렬하는 프로그램 arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 삽입정렬은 앞의 있는 원소들이 이미 정렬되어있다고 가정을 한다 라는 특성이 있다. 즉, 하나의 원소를 선택 후 삽일 할 위치에 보내는 방법을 삽입 정렬이라고 한다. #1 [1, 3, 4, 5, 2] #1 선택해 맨 처음 자리로 이동 [(1) _, 3, 4, 5, (1), 2] 빈 공간이 있다고 생각하고 이동 #2 [1, 2, 3, 4, 5] #2 선택해 공간의 위치에 이동 1과 3 사이 [_, 1, (2)_, 3, _, 4, 5, (2)] #3 [1, 2, 3, 4, 5] #3 선택해 자리 이동 //변화 없음... #4 [1, 2, 3, 4, 5] #4 ..

[알고리즘/버블정렬] #Bubble_Sort / in Python
SW/자료구조 2020. 10. 7. 14:28

버블 정렬 숫자를 오름차순으로 정렬하는 프로그램 하지만 쉽게 해석하려면 가장 큰 숫자를 맨 뒤로 보내는 것과 같다고 생각하면 된다. arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 두 수를 선택해서 큰값을 뒤로 보내는 방법을 버블 정렬이라고 한다. #1 [3, 4, 5, 1, 2] #3과 4을 자리 바꾸기 // 변하지 않음 #2 [3, 4, 5, 1, 2] #4와 5 자리 바꾸기 // 변하지 않음 #3 [3, 4, 1, 5, 2] #1과 5 자리 바꾸기 #4 [3, 4, 1, 2, 5] #2와 5 자리 바꾸기 순서로 진행된다. 결국 5가 가장 마지막이고 1은 가장 처음으로 온다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ''' 반..

[알고리즘/선택정렬] #Selection Sort / in Python
SW/자료구조 2020. 10. 7. 13:10

선택 정렬 숫자를 오름차순으로 정렬하는 프로그램 arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 가장 작은 숫자를 선택해서 앞으로 보내는 방법을 가장 먼저 떠올릴 수 있다. #1 [1, 4, 5, 3, 2] #1과 3을 자리 바꾸기 #2 [1, 2, 5, 3, 4] #2와 4 자리 바꾸기 #3 [1, 2, 3, 5, 4] #3과 5 자리 바꾸기 #4 [1, 2, 3, 4, 5] #4와 5 자리 바꾸기 순서로 진행된다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ''' #반복문 사용 i, j >>> 배열에 있는 원소 반복적으로 탐색 min_index >>> 최솟값 원소 "위치" ''' def selection_sort..

반응형