분류 전체보기 90

2장 오라클의 여러 프로세스

데이터베이스가 여타 다른 어플리케이션 프로그램과 다른점 어플리케이션은 같은 어플리케이션이 여러개가 실행되어도 프로그램 간 데이터를 공유하지 않습니다. 이와는 다르게 데이터베이스는 여러 프로세스가 하나의 데이터베이스를 사용할 수 있습니다. 이로 인해 여러프로세스가 데이터베이스의 데이터에 I/O 작업을 수행할 수 있습니다. 여러 사용자와 프로그램이 데이터베이스를 공유하고 있는 형국입니다. 프로세스와 스레드의 차이 실행 중인 프로그램을 프로세스라고 합니다. 스레드는 프로세스내 실행 단위입니다. 둘다 병렬로 처리하기 위한 구조이지만 차이점은 부하의 크기와 메모리 공유 여부입니다. 프로세스는 부하가 크고 프로세스끼리 메모리를 공유하지 않습니다. 스레드는 부하가 적고 스레드끼리 데이터를 공유합니다. 여기서 부하가 ..

1장 I/O와 디스크의 관계

오라클을 이해하기 위한 필수 키워드 병렬 처리를 가능케 하고 높은 처리량을 실행한다. 응답을 중시한다 (응답 속도 중시) 커밋한 데이터는 지킨다 (데이터를 디스크에 기록한다) 위의 요소를 지키긴 간단하지 않다. 하나를 지키려고 하면 다른 무엇과 충돌하기 때문이다. 예를 들어 커밋하자마자 데이터를 디스크에 쓰게 되면 응답시간이 나빠지게 된다. 병렬 처리를 위해 락을 걸게되면 대기시간이 생겨 성능에 영향을 미치게 된다. 해당 책은 이런 상충관계에 있는 부분들이 서로 상충되지 않게 설계된 ORACLE DBMS의 구조를 개관적으로 설명한 책이다. 오라클과 하드 디스크 오라클이 디스크에 있는 데이터에 접근하는 방법 데이터베이스는 디스크에서 오라클이 관리하고 있는 데이터이다. 오라클은 디스크에 있는 데이터를 꺼내어..

ARP(Address Resolution Protocol)

What is ARP Request? 데이터를 받는 기기의 맥주소를 알기 위한 방법이다. Process ARP는 브로드캐스트를 통해 맥주소를 알아낸다. 같은 네트워크 대역대의 모든 기기에 ARP Request Packet을 보낸다. ARP Request Packet은 "보내는 기기의 맥주소 + 보내는 기기의 IP주소 + 받는 기기의 IP주소"로 이루어져있다. ARP Request Packet에 해당하는 기기는 이에 응하는 ARP Reply Packet을 보낸다. ARP Reply Packet에는 "자신의 IP주소 + 자신의 맥주소"를 보낸다. 요청자는 ARP Cache Table을 업데이트 한다. 해당 테이블에는 IP 주소 + IP 주소에 해당하는 MAC 주소 + 유효기간이 기록되어 있다. Wrap Up..

Network 2023.09.13

Ping

Ping 이란 Ping은 프로그램이다. 해당 프로그램은 RTT(Round Trip Time)을 측정하기 위해 사용된다. RTT는 source server에서 dest server로 packet을 보낼 때 [ packet이 dest server로 가는 시간 + dest server에서 packet을 처리하는 시간 + source server로 packet이 가는 시간 + source에서 packet을 처리하는 시간]로 구성된다. RTT는 네트워크 속도에 반비례하고 네트워크 속도는 거리에 반비례한다.

Network 2023.08.29

HashTable

해쉬테이블은 데이터를 키와 값으로 저장하는 자료구조이다. 키를 인풋으로 해쉬 함수를 통해 값을 낸 뒤 모듈러 연산으로 다시 값(인덱스)을 내 배열의 특정 인덱스에 링크드리스트 자료구조 형태로 저장한다. 서로 값이 다른 키이지만 모듈러 연산 결과 값이 같을 경우 같은 인덱스에 데이터가 저장되게 되어 충돌이 발생하는데 이 때 해당 인덱스에 링크드리스트 형태로 값을 저장한다. 링크드리스트의 각 노드는 키를 참조하고 있으므로 충돌이 발생한 키값에 대한 값을 찾는 경우 노드가 참조하고 있는 값을 통해 원하는 값에 접근할 수 있다. 데이터를 삽입, 삭제, 탐색 하는 시간복잡도의 경우 평균적으로 O(1) 시간 복잡도를 갖는다. 최악의 경우 O(n)의 시간 복잡도를 갖는다.현대의 해쉬테이블은 강력한 해쉬 함수를 제공하..

DataStructure 2023.08.22

전략패턴

선행 개념 의존관계 객체와 객체 간 관계의 지속기간이 짧은 경우 특정 클래스 내부 메서드에서 인자로 특정 객체를 인자로 받을 때 위의 상황에서 객체의 지속 기간이 짧은 이유는 해당 메서드를 사용할 때 마다 필요한 객체를 사용하고 역할이 끝나면 객체를 사용한 객체와 연관성이 없기 때문 연관 관계 객체와 객체 간 관계의 지속기간이 긴 경우 특정 클래스의 생성자 메서드에서 인자로 특정 객체를 받을 때 위의 상황에서 객체의 지속 기간이 긴 이유는 생성자 메서드에서 해당 객체를 생성 후 해당 객체를 계속해서 가지고 있기 때문 전체 객체 다른 객체의 기능을 사용하는 객체 부분객체 전체 객체에게 사용되는 객체 집합 관계의 종류 집약 관계 한 객체가 다른 객체를 포함 할 때 부분객체를 포함한다 전체 객체의 라이프타임과..

Design Pattern 2023.07.24

옵저버 패턴

옵저버 패턴 구성 옵저버 패턴의 구성은 다음과 같다. 2개의 인터페이스 그리고 각각의 인터페이스를 구현한 구상클래스로 파악할 수 있다. 옵저버 인터페이스 주제 인터페이스 주제클래스 옵저버 클래스 주제 인터페이스(Subject Interface) 해당 인터페이스에서 최소한으로 가지고 있어야 할 변수와 메서드는 아래와 같다. 옵저버 명단부터 알아보자. 해당 배열에 들어가는 데이터 타입은 옵저버 객체이다. 옵저버 객체는 옵저버 인터페이스를 구현한 옵저버 객체를 의미한다. 해당 명단에 등록할 때에는 주제 인터페이스를 구현된 구상 클래스 주제 내 register 함수를 통해 옵저버 객체를 등록한다. 해당 명단에 옵저버 객체를 등록하는 이유는 notify 함수를 통해서 옵저버 객체 내부에 각각 구현된 update ..

Design Pattern 2023.07.24