분류 전체보기354 Failure and Recovery Failure Classification - Transaction failure Logical errors : 내부의 에러로 인해 트랜잭션이 완료하지 못한다. System errors : 데드락과 같은 시스템 에러 때문에 데이터베이스 시스템이 실행중인 트랜잭션을 종료해야 한다. - System failure 휘발성 저장장치(volatile storage)의 유실되었을 때 문제가 발생한다. 전원 문제나 하드웨어/소프트웨어 실패는 시스템의 충돌을 일으킨다. - Disk failure head 충돌이나, 유사한 disk 의 실패는 디스크 저장장치의 일부, 혹은 모든 부분에 영향을 미친다. 디스크 드라이브는 실패를 감지하기 위해 checksum 을 사용한다. ex) 트랜잭션 T 가 A계좌에서 B계좌로 $50 를.. DB 2022. 4. 21. Insert and Delete Operations Insert and Delete Operations 원칙적으로, Insert와 Delete는 X-Lock을 가지고 수행되어야 한다. 그러나 tuple 을 Insert와 Delete하려고 할 때 Phantom 현상이 생길 수 있다. Phantom Phenomenon T1 : Account 테이블에서 부산의 모든 balance 의 합과 Assets의 부산의 값이 같은지 비교한다. T2 : Account 테이블에 tuple 을 추가하고, Assets 테이블 도 업데이트한다. Possible 2PL-based execution 여기서 T1 은 1500 (처음에 Account 의 Sum) 과 2200 (Assests 에서 읽은 값) 을 비교하여 둘이 다르다고 생각한다. 위 결과는 혹은 그 어떤 것과도 같지 않으므.. DB 2022. 4. 20. Deadlock Deadlock 위와 같이 모든 트랜잭션이 다른 트랜잭션이 release 하기를 wait 하는 상황이면 deadlock 이다. Deadlock Handling Timeout-based Schemes 일정 시간이 지나도 응답이 없으면 해당 트랜잭션을 rollback -> 구현은 쉬우나 starvation 발생한다. -> 적절한 시간 설정이 어렵다. Deadlock prevention protocol 트랜잭션 수행 전에 모든 데이터에 lock 을 검사한다. 모든 데이터 아이템에 부분적인 순서를 두고, 트랜젝션이 아이템들을 이 순서에 따라 lock하도록 한다. (graph-based) Wait-die/Wound-wait Schemes deadlock을 방지하기위해 트랜잭션 timestamps를 사용한다. Wa.. DB 2022. 4. 20. Multiple Granularity Locking Multiple Granularity Locking 다양한 사이즈의 data item 에 대해 lock 을 걸 수 있다. - Fine granularity 레코드 단위로 잘게 쪼개어 락을 관리 -> 동시성 증가, lock overhead 증가 - Coarse granularity 테이블처럼 큰 단위로 락을 관리 -> 동시성 감소, lock overhead 감소 Intention lock Modes 노드 N에 대해 Intention lock 을 건다는 것은 미래에 N의 하위 노드에 (S or X)락을 걸겠다는 것이다. Intention-shared(IS) : Intention Shared Lock Intention-exclusive(IX) : Intention Exclusive Lock (X or S lo.. DB 2022. 4. 20. Lock-based Protocols Lock-based Protocols lock 이란 data item 에 동시 접근하는 것을 통제하기 위한 메커니즘이다. data item 은 두 가지 모드로 lock 될 수 있다. - exclusive (X) mode : 읽기/쓰기 모두 가능한 lock - shared (S) mode : 읽기만 가능한 lock 모두 S-lock인 경우에만 서로 다른 트랜잭션이 동시에 락을 얻을 수 있다. 트랜잭션은 요청이 승인된 후에만 실행될 수 있다. 즉, 트랜잭션이 어떤 item 에 대해 요청한 lock 이, 이미 그 아이템에 다른 트랜잭션에 의해 걸려있는 lock 과 compatible 하다면 승인될 것이다. 얼마든지 많은 트랜잭션은 item 에 대해 shared lock을 hold할 수 있다. 다만, 어떤 트랜.. DB 2022. 4. 20. Recoverability Recoverable Schedules 동시에 실행중인 트랜잭션 중 하나에 failure 이 발생할 때의 영향을 고려해야 한다. Recoverable schedule - 트랜잭션 Tj 가 Ti 에 의해 Write 된 데이터를 읽는다면, Ti 가 commit 하기 이전에 Tj 가 먼저 commit 을 해야한다. -> 값을 write 하는 트랜잭션은 반드시 값을 Read하는 트랜잭션보다 먼저 commit 되어야 한다. T8 에서 rollback 이 일어나면, T8 이 commit 을 하기 전에 T9 가 먼저 commit 을 한 상태이므로 복구가능하지 않다. -> database inconsistent Cascading Rollbacks 하나의 트랜잭션이 failure 하게 된다면, 연속된 트랜잭션의 roll.. DB 2022. 4. 19. Serializability Correct Execution 동시에 실행되는 트랜잭션들이 올바르기 위한 기준은 다음과 같다. 1. Conflict serializable 2. View serializable -> 트랜잭션의 직렬 수행은 항상 correct 하다. (data consistency 를 항상 보장받는다.) Nonserializable Execution - dirty read T2 는 dirty data 를 읽게 된다. (T1이 write 한 값을 읽게 됨) - lost update T2 가 A를 변경한 효과가 없어지게 된다. - unrepeatable read T1 이 서로 다른 A 를 읽게 된다. Schedules 여러 트랜잭션을 동시에 실행하기 위해서는, 순서를 스케줄링 해야 한다.이때 schedule 이 다음과 같은.. DB 2022. 4. 19. Transaction Transaction 데이터에 접근하고 데이터를 업데이트 시키는 데이터베이스 프로그램의 단위이다. 다음과 같은 이슈를 다뤄야 한다. - 하드웨어, 소프트웨어, 트랜잭션의 실패 - 여러 트랜잭션의 병행 실행 ACID 트랜잭션이 가져야 하는 4가지 특징이다. 1. Atomicity(원자성) 2. Consistency(일관성) 3. Isolation(독립성) 4. Durability(지속성) Atomicity 원자성은 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나를 뜻한다. -> All or Nothing Consistency 일관성은 트랜잭션이 실행된 후에도 데이터베이스가 일관성을 유지하는 것이다. - 명시적 일관성 : 기본키, 외래키 - 암묵적 일관성 : ex) A에서 B로 이체하는 경우, A+.. DB 2022. 4. 19. 연금술사 - 파울로 코엘료 이 책을 읽는 매 순간 1초마다 경이로움을 느꼈다... 어떻게 책이 이렇게 아름다울 수 있을까 ..?? 단언켠데 이 책은 나의 인생책이 될 것이다. 아니 이미 됐다. 책을 읽고 이렇게 들뜬 적은 정말 오랜만인 것 같다. 진짜 파울로는 천재다. 인간이 자아실현을 하는 과정을 이렇게 표현할 수가 있다니.... 왠지 모르겠다. 그냥 빠져든다. 연금술사와 사막이라는 대상이 주는 오묘한 분위기도 한 몫을 한 것일까? 내가 산티아고가 되어서 자아의 신화를 찾으러 가는 모든 과정을 몸소 체험할 수 있다. 그래서 책을 읽으면 읽을수록 세상만물과 에너지가 나에게 집중되는 듯한 느낌을 받았다. 조금 오바해서 말하자면 책의 끝에서 산티아고가 세상 만물의 이치를 깨닫고 모든 것을 다룰 수 있게 되었을 때, 나도 어떠한 경지에.. 독서 2022. 4. 16. React 에서 새로고침 시 탭이 첫 번째 항목으로 이동하는 문제 해결 const currentTab = () => { let path = window.location.pathname; console.log("경로", path); if (path === "/mypage") return 1; else if (path === "/mypage/my_comment") return 2; else if (path === "/mypage/my_interested_animal") return 3; else if (path === "/mypage/my_interested_board") return 4; else if (path === "/mypage/edit_info") return 5; }; const [menu, setMenu] = useState(currentTab); React에서 .. React 2022. 4. 10. React 에서 중첩 라우터 사용하기 App.js 에서 탭바를 만들고, 해당 탭들을 라우터로 연결하였다. /* 생략 */ 위와 같은 메인 화면에서 탭을 누르면 각 라우터로 링크 이동하게 된다. 그런데, 마이 페이지 내에서 또 탭을 구현하여 중첩으로 라우터를 사용하려 하였더니, 앱 내에서 라우터는 한 번만 사용할 수 있다며 오류가 발생하였다. 나는 위 사진 처럼 마이페이지 라우터 내에서 좌측의 탭을 구현하기 위해 중첩된 라우터를 사용하고 싶었다. 그러기 위해서는 위 코드에서 /mypage/* 을 작성했듯이, 와일드 카드를 사용해야 한다. 와일드카드 마이 페이지 내부에서 중첩된 라우터들은 다음과 같이 작성하였다. function MyPage() { return ( ); } 아까 와일드 카드를 사용했기 때문에, mypage/* 의 * 자리에 my.. React 2022. 4. 8. Linux / URL / Domain / Name Server / Sub Domain / Redirection Linux - Linux는 Unix 운영체제를 기반으로 만들어진 운영체제로 유닉스 클론 운영체제라 할 수 있다.Unix와 마찬가지로 다중 사용자, 다중작업 다중 스레드를 지원하는 네트워크 운영체제를 의미한다. 또한 Unix가 애초부터 통신 네트워크를 지향해 설계된 것 처럼 Linux 역시 서버로 작동하는데 최적화 되어있다. 또한 Linux는 자유 소프트 라이센스로 누구나 소스코드를 활용, 수정 및 재 배포가 가능해서 지속적인 업그레이드가 이루어진다. - 리눅스는 크게 커널, 셸, 디렉토리 3가지로 구성되어 있다. 커널(kernel) 커널은 운영체제의 핵심으로 메모리 관리, 프로세스 관리, 장치 관리 등 컴퓨터의 모든 자원을 초기화하고 제어하는 기능을 수행한다. 쉘(shell) 사용자가 입력한 문장을 읽어.. 서버개발 SpringBoot 2022. 4. 7. 이전 1 ··· 14 15 16 17 18 19 20 ··· 30 다음