반응형

Contents 175

데이터베이스((데이터베이스(DB) - 트랜잭션(Transaction))

* 트랜잭션(Transaction) * 트랜잭션이란?: 복수 쿼리를 한 단위로 묶은 것. 갱신은 단일 쿼리만으로 구성된 것이 아니고 복수 쿼리를 연속적으로 수행하는 경우가 대부분이다. 또한, 갱신 전의 데이터로 SELECT를 사용할 때 이를 포함해 복수 쿼리를 일관된 형태의 한 덩어리로 다뤄야 한다. * ACID 특성 1) Atomicity(원자성): 원자성이란 데이터의 변경(INSERT/DELETE/UPDATE)을 수반하는 일련의 데이터 조작이 전부 성공할지 전부 실패할지를 보증하는 구조이다. 예를 들어, 서울에서 부산으로 가는 기차를 예매하는 과정이 다음과 같다고 하자.(1) 서울 -> 부산행 좌석을 선택한다.(2) 해당 좌석을 예매한다.(3) 대금을 지급한다. -> 위의 절차가 모두 잘 진행되면 트..

데이터베이스(데이터베이스(DB)의-관계형 데이터베이스의 계층)

* 관계형 데이터베이스의 계층 * 스키마 : 데이터베이스에서 '폴더(디렉터리)'에 해당하는 것이 '스키마'이다. ('틀'이라는 의미이다)테이블은 실제로 몇 개의 스키마 속에 저장되는 형식을 취한다. 스키마도 폴더처럼 사용자가 자유롭게 만들 수 있어서 용도별로 나누거나 사용자의 접근을 제한하는 등의 권한 관리를 수행하는 것도 가능하다. * 데이터베이스: 스키마의 상위에는 또 하나의 계층으로 '데이터베이스'가 있다. '데이터베이스는 데이터를 관리하는 기능의 집합체'라고 생각할 수 있지만실은 데이터베이스에는 '계층'을 표시하는 의미도 있다.(혼동될 소지가 있음) * 인스턴스: 데이터베이스보다 한 층 더 위에 있는 '인스턴스'란 개념이 있다. 물리적 개념으로DBMS가 동작할 때의 단위이다. 그래서 OS 입장에서..

데이터베이스(데이터베이스(DB)의 아키텍처-Shared Disk & Shared Nothing)

* 데이터베이스의 아키텍처(Shared Disk & Shared Nothing) * Shared Disk & Shared Nothing: 앞서 Active-Active 구성의 DB는 저장소 부분의 병목되는 경우가 있다. 이것은 복수의 서버가 1대의 디스크(저장소)를 공유하도록 구성되었기 때문이다.이렇게 복수의 서버가 1대의 디스크를 사용하는 구성을 'Shared Disk'라고 한다. Shared Disk 타입의 Active-Active 구성은 DB 서버를 늘려도 무한으로 처리율이 향상되지 않는다. 이것은 저장소가 공유 자원이라서 쉽게 늘리기 어렵고 DB 서버 대수가 증가할수록 DB 서버 간의 정보공유를 위한 오버헤드가 크기 때문이다. -> 이 단점을 극복하기 위한 아키텍처로 고안된 것이 'Shared N..

데이터베이스(데이버베이스(DB)의 아키텍처-리플리케이션)

* 데이터베이스의 아키텍처(리플리케이션) * 리플리케이션: Active-Active, Active-Standby 클러스터 구성에서는 서버 부분은 다중화할 수 있어도저장소 부분은 다중화할 수 없어서 데이터를 다중화하지 않는 공통적인 단점이 있다.저장소가 부서질 경우에는 데이터를 잃게 된다. 이런 상황에 대응하기 위한 클러스터 구성이 '리플리케이션(Replication)'이다. 이는 DB서버와 저장소 세트를 복수로 준비하는 것을 말한다. -> 리플리케이션은 데이터베이스 서버와 저장소가 동시에 사용 불능일 때,서비스를 계속할 수 있도록 해주는 매우 가용성이 높은 아키텍처이다. 이 견고함 덕택에 재해대책(재난 복구 계획)으로 이용되는 경우도 있다.예를 들어, 서울의 데이터 센터가 파괴되어도 부산의 데이터 센터가..

포트와 포트포워딩

* 포트(Port): 포트 = 항구 = 배가 정박하는 곳 -> 포트를 인터넷에 비유해보면 클라이언트가 어떤 특정한 서버에 접속했을 때 정박하는 것이다. -> 어떤 사이트에 접속할 때 http://222.109.62.43을 입력하면 http가 사라진다.웹브라우저를 통해서 서버에 접속한다는 것은 http라고 하는 통신 규약을 이용할 것이 분명하기 때문에 크롬과 같은 웹브라우저는 http를 생략해버린다. 그리고 222.109.62.43:80 이라고 입력하면 80이 사라진다.(80을 생략하고 입력한다면 브라우저는 80이 있다고 생각한다.) 222.109.62.42:80은 222.109.62.43이라고 하는 컴퓨터에 http라는 프로토콜로 접속할 것이고 80번 포트를 이용할 것이다 라고 알려주는 것이다. * 참고..

IP주소와 DNS

* IP주소 : Internet Protocol Address(인터넷 프로토콜 주소) Q. 프로토콜(Protocol)이란?-> 프로토콜은 약속이다.인터넷이라는 체계가 동작하기 위해서는 사용자들이 자기만의 규칙을 사용하는 것이 아니라 약속된 규칙을 사용해야 한다.이것을 인터넷 프로토콜(IP)라 부른다 그러면 IP를 사용하는 여러 장비들은 (인터넷에 연결되어있는 여러 컴퓨터들)정보를 주고 받기 위해서는 주소를 가지고 있어야 한다. 바로 그 주소를 'IP 주소(Internet Protocol Address)' 라고 부른다. * 원하는 사이트에 접속하는 2가지 방법 1) 만일 naver.com 으로 접속하는 방법은 그대로 입력하는 것도 가능하지만 IP 주소를 직접 입력해서 접속하는 것도 가능하다. (cmd 실행..

데이터베이스(데이터베이스(DB)-클러스터링(Clustering))

* DB서버의 다중화(클러스터링) * DB 서버는 다중화 : DB 서버는 다중화에서 특유의 어려운 문제점을 안고 있다. 그 때문에 DB 서버는 오랫동안 클러스터링이 어려운 컴포넌트로 인식됐다. 현재도 다양한 노력으로 방법이 고안되고 있지만, 간단히 병렬화해서 대수를 증가시키는 웹서버나 애플리케이션 서버와 비교하면 다중화에 대해 고민해야 할 부분이 많다. 그 이유는 DB 서버가 데이터를 보존하는 '영속 계층'이기 때문이다. * DB와 다른 서버의 차이: 데이터베이스는 웹 서버나 애플리케이션 서버와 다르게 데이터를 장기간 보존하는 매체가 필요하다. 웹 서버나 애플리케이션 서버는 데이터를 일시적으로 처리하지만 데이터베이스는 대량의 데이터를 영구적으로 보존해야 하고 그에 따른 성능도 요구되기 때문에 데이터를 보..

데이터베이스(데이터베이스(DB)의 아키텍처-가용성과 확장성의 확보)

* 데이터베이스의 아키텍처(가용성과 확장성의 확보) * 가용성 : 서비스 제공시간에 장애 없이 서비스를 계속 지속할 수 있는 비율. (Availability) * 가용성을 높이는 2가지 전략 - 심장전략(고품질-소수전략) : 시스템을 구성하는 각 컴포넌트의 신뢰성을 높여 장애 발생률을 낮게 억제해서 가용성을 높인다.(소수정예노선) - 신장전략(저품질-다수전략) : 시스템을 구성하는 각 컴포넌트의 신뢰성을 계속해서 높이기보다는 '사물은 언젠가 망가진다'란 체념을 전제로 여분을 준비해 둔다. 이를 철저히 대비하는 것을 '물량작전'이라고 부른다. -> 양쪽 노선 모두 추구했지만 현재는 거의 '신장전략' 노선에 손을 든다. * 클러스터: 신장전략처럼 동일한 기능의 컴포넌트를 병렬화하는 것을 '클러스터링(Clus..

IT 용어 정리(10일차)

* IT 용어 정리(10일차) 1. QA(Quality Assurance): 품질 관리. 소프트웨어에서는 버그를 발견하고 기록하는 사람을 의미한다. 2. RAID(Redundant Array of Independence Disks): 중복된 독립 디스크의 배열. 하드디스크 여러 개를 모아서(이론적으로 절대로 동작을 멈추지 않는) 한 개의 하드디스크처럼 보여준다. 3. SSH(Secure Shell): 보안 셀. 멀리 떨어진 컴퓨터에 안전하게 접속하는 프로그램 또는 프로토콜. 4. SSL(Secure Sockets Layer): 보안 소켓 계층. 웹에서 데이터를 안전하게 전송하기 위한 프로토콜. 5. XML: 데이터를 조직하기 위한 포맷. *이 포스트는 '해커와 화가'책을 참고하여 작성했습니다.

Java(Super)

*이 포스트는 남궁성님의 '자바의 정석'책을 참고하여 작성했습니다. * Super: super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조 변수이다. 멤버변수와 지역변수의 이름이 같을 때 this를 사용해서 구별했듯이 상속받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때는 super를 사용해서 구별할 수 있다.(조상 클래스와 자손 클래스의 멤버가 중복 정의되어 서로 구별해야하는 경우에만 super를 사용하는 것이 좋다.) - 예제 class Parent {int x = 100;} class Child extends Parent {int x = 200; // Q. 이 문장("int x = 200;"이 없다면 출력결과는 무엇일까? void method() {Syste..

반응형