데이터베이스 개념

데이터베이스의 정의

데이터베이스란 어느 한 조직에서 업무 처리를 위해 다수의 응용 시스템 혹은 다수의 사용자들이 공용으로 사용하기 위해 통합,저장된 운영 데이터의 집합

- 통합된 데이터 : 중복을 최소화한 데이터의 집합

- 저장된 데이터 : 필요시 언제든지 이용할 수 있도록 저장된 데이터의 집합

- 공용 데이터 : 공유할 수 있도록 만든 데이터의 집합

- 운영 데이터 : 중복을 최소화하고 여러 사람이 공유함에 있어 문제가 발생하지 않도록 관리를 필요로 하는 데이터로 이용가치가 있는 데이터의 집합


|데이터베이스의 특징

- 계속적인 변화(Continuous Evolution)

- 동시 공유(Concurrent Sharing)

- 실시간 접근성(Real - time - Accessibility)

- 내용에 의한 참조(Contents Reference) 


|데이터베이스의 구성 요소

- 개체(Entity) : 사람이 생각하는 개념이나 정보 단위와 같은 현실세계의 대상체, 서로 구별이 되는 하나하나의 대상 / 개체는 하나 이상의 속성으로 구성

- 속성(Attribute) : 개체의 특성이나 혹은 상태를 기술

- 관계(Relation) : 두 개 이상의 개체 사이 또는 속성 간의 상호 연관성( 1:1 / 1:n / n:m)


데이터베이스 관리 시스템

|DBMS의 정의

파일 시스템의 문제점인 데이터의 중복성과 종속성 등의 문제를 최소화하기 위해 등장, 사용자와 데이터베이스 간의 중계 역할을 한다. 데이터베이스의 내용을 정의하고, 조자, 제어할 수 있도록 함으로써 모든 사용자나 응용 프로그램들이 데이터베이스를 공유할 수 있도록 관리 운영해주는 소프트웨어 시스템


|DBMS의 필수 기능

정의, 조작, 제어


|데이터베이스 언어

- DDL : 데이터베이스 구조를 정의 및 수정 등을 위해 사용되는 언어( CREATE, DROP, ALTER )

- DML : 데이터베이스 내의 자료를 검색, 삽입, 수정, 삭제하기 위해 사용되는 언어( SELECT, INSERT, UPDATE, DELETE )

- DCL : 데이터베이스의 데이터에 대해 무결성 유지, 병행 수행 제어, 보호와 관리를 위한 언어( COMMIT, ROLLBACK, GRANT, REVOKE )


데이터베이스 구조(스키마)

|스키마

데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술, 정의한 것을 말함

- 외부 스키마 : 전체 데이터 중 사용자가 사용하는 한 부분에서 본 논리적 구조를 말하며, 서브 스키마라고도 함

- 개념 스키마 : 논리적 관점(사용자 관점)에서 본 전체적인 데이터 구조

- 내부 스키마 : 물리적 저장 장치 관점에서 본 데이터베이스의 물리적 구조


|데이터베이스 관리자(DBA)

데이터베이스 시스템과 관련된 모든 자원에 대해 기획,통제를하며 데이터베이스 언어를 이용해 DBMS를 거쳐 데이터베이스 시스템의 전체적인 관리 운영에 책임을 지는 사람이나 집단.


데이터베이스 설계

요구조건분석->설계(개념->논리->물리)->구현->운영및개선

|설계

- 개념적 설계 : 데이터베이스를 개념적으로 표현함으로써 데이터베이스를 구성할 구성요소를 결정한 후 수행할 작업과 관계를 설계

- 논리적 설계 : 개념적 설계에서 만들어진 구조를 논리적으로 구현 가능한 데이터 모델로 변환하는 단계

- 물리적 설계 : 논리적 데이터베이스 구조를 실제 기계가 처리하기에 알맞도록 내부 저장 장치 구조와 접근 경로 등을 설계


개체 - 관계 모델(E-R Model)

|개체-관계 모델(E-R Model)

개념적 설계 단계에서 사용되는 설계 기법으로, 개체타입과 관계타입 간의 구조를 약속된 기호를 이용하여 표현


|데이터베이스 모델

개념적 설계 이후 논리적 설계 단계에서 사용되는 모델로 논리적으로 구현 가능한 데이터 모델로 변환하기 위해 사용

- 관계 데이터 모델 : 표로나타냄

- 네트워크 데이터 모델 : 망데이터모델 / 레코드 타입 간 관계를 도형으로 표현

- 계층 데이터 모델 : 트리 구조로 표현


관계 데이터 모델

자료의 저장 형태를 2차원 구조의 표(테이블)로 표현하는 방법

|관계 데이터 모델

- 릴레이션 : 표

- 속성 : 릴레이션을 구성하는 각 열 

- 튜플 : 릴레이션의 한 행을 구성하는 속성들의 집합(= Record)

- 도메인 : 하나의 속성이 가질 수 있는 값들의 범위

- 릴레이션 스키마 : 릴레이션의 이름과 속성 이림의 집합

- 릴레이션 인스턴스 : 릴레이션에서 어느 시점까지 입력된 튜플들의 집합

- 차수 : 릴레이션을 구성하는 속성의 수

- 카디널리티 : 릴레이션에 입력된 튜플의 수


키와 무결성 제약조건

|키의 개념

키란 관계 데이타베이스에서 튜플을 식별하기 위해 사용하는 속성이나 속성의 집합으로, 데이터베이스의 참조 또는 검색 시에 사용된다.


|키의 종류

1)후보키(Candidate key)

- 릴레이션에서 각 튜플을 유일하게 식별할 수 있는 속성이나 속성의 잡합

- 유일성과 최소성을 만족

2)기본키(Primary key)

- 후보키 중에서 튜플을 식별하기 위해 특별히 선택된 키

- 기본키는 중복될 수 없으며, NULL값이 올 수 없다.

3)대체키(Alternate key)

- 후보키 중에서 기본키를 제외한 속성

4)외래키(Foreign key)

- 하나의 테이블에서 원하는 자료를 얻지 못하는 경우 다른 테이블 참조 하기 위해 사용되는 속성

- 외래키는 참조 릴레이션(테이블)의 기본키와 같다

- 외래키는 NULL이 올 수 있다.

5)슈퍼키(Super key)

- 한 릴레이션 내의 튜플들을 식별할 수 있는 후보키와 다른 속성들과의 모든 조합


무결성 제약조건

무결정은 데이터베이스 자료의 오류 없는 정확성과 안정성을 나타내는 것으로, 무결성 제약조건은 정확성과 안정성을 유지하기 위한 제약조건이다.

1) 개체 무결성

- 기본키는 NULL값이 올 수 없으며, 중복될 수 없음

2) 참조 무결성

- 외래키는 NULL값이 올 수 있으며, 참조 릴레이션의 기본키와 같아야 한다.

3) 도메인 무결성

- 속성값이 정해진 범위 이내의 값으로 구성해야 하는 제약조건

4) 고유 무결성

- 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 그 속성값은 모두 달라야한다.

5) NULL 무결성

- 특정 속성에 NULL값이 올 수 없다.

6) 키 무결성

- 한 릴레이션에는 최소한 하나의 키가 존재해야 한다.


관계 데이터 연산

|관계 대수

결과를 얻기 위한 절차를 표현하기 때문에 절차적 언어라고 한다.

- 순수 관계 연산자 : SELECT, PROJECT, JOIN, DIVISION

- 일반 집합 연산자 : 합집합, 교집합, 차집합, 카티션 프로덕트


1) 셀렉트

- 릴레이션에서 조건을 만족하는 수평적 부분 집합을 구하기 위한 연산

- 결과는 조건을 만족하는 튜플들로 테이블이 만들어진다.

- 연산기호는 시그마(σ)를 이용

- 표기 형식 : σ<선택조건>(테이블 이름)


2) 프로젝트

- 릴레이션에서 수직적 부분 집합(속성의 값)을 구하는 연산으로 원하는 속성만 추출하기 위한 연산

- 연산기호는 파이(π)를 이용한다.

- 표기 형식 : π<추출속성리스트>(테이블 이름)


3) 조인

- 두 테이블로부터 조건에 맞는 관련된 튜플들을 하나의 튜플로 결합하여 하나의 테이블로 만드는 연산

- 동일조인, 자연조인, 외부조인, 세타조인

- 연산기호는 ▷◁

- 표기 형식 : 테이블1 ▷◁ <조인조건> 테이블2

-> 동일 조인 : '='연산자만을 사용하여 조건을 표현(중복되는 속성도 모두 표현)

-> 자연 조인 : 동일 조인한 결과에서 중복되는 속성을 제거

-> 외부 조인 : 조건에 맞지 않는 튜플도 결과 테이블에 포함 시켜 조인하는 방법으로 해당 자료가 없는 부분은 NULL값이 된다.

-> 세타 조인: '='외의 연산자를 이용해 조건 수식을 표현하여 조인하는 연산자.


4) 디비전

- 'A DIVISION B'는 B테이블의 조건을 만족하는 튜플들을 테이블 A에서 추출하는 연산


|관계해석

결과를 얻기 위한 과정을 표현하는 것으로 연산자 없이 정의하는 방법을 이용하는 비절차적 언어

- 튜플 관계 해석, 도메인 관계 해석

- 표기 형식 : {결과값|조건}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

VIEW

- 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야 삽입/삭제/갱신이 가능

- 정의된 뷰는 다른 뷰를 정의하는데 기초가 될 수 있다.

- 둘 이상의 테이블에서 유도된 뷰는 변경X

- DISTINCT / GROUP BY / HAVING 을 사용해 만든 뷰는 변경X

- DROP VIEW 뷰 { RESTRICT | CASCADE }

  -> RESTRICT : 해당 뷰를 다른 곳에서 참조시 제거 취소

  -> CASCADE : 해당 뷰를 다른 곳에서 참조시 참조하는 다른 뷰나 제약 조건 까지 모두 제거


Embeded SQL

: 응용 P/G에서 SQL문을 내포해서 실행되도록 호스트 P/G에 삽입한 SQL


Stored Procedure

: PL/SQL처럼 특정한 SQL문을 저장해놓고 가져다 씀


이상(Anomaly)

: 테이블의 일부 속성들이 종속으로 인해 데이터 중복이 발생하고 이로 인해 테이블 조작 시 문제 발생하는 현상

- 삽입 이상

- 삭제 이상

- 갱신 이상

-> 원인 : 여러가지 종류의 사실들을 하나의 릴레이션에 표현하기 때문

-> 해결 : 속성들 간의 종속성을 분석해서 하나의 종속성은 하나의 릴레이션에 표현되도록 분해  이를 정규화라고 한다


함수적 종속(Functional Dependency)

: 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 할때 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성YY의 값이 오직 하나만 연관되어 있을 때 'Y는 X에 함수적 종속' or 'X가 Y를 함수적으로 결정한다'라고 하며 X->Y로 표기한다. X를 결정자 Y를 종속자(X가 결졍되면 Y도 결정된다.)

- 완전 함수적 종속 : X->Y이면서도 X의 임의의 진부분집합인 Z와는 종속관계가 없는 속성

- 부분 함수적 종속 : X->Y이면서도 X의 임의의 진부분집합인 Z와도 Z->Y인 속성


정규화(Nomarlization)

: 테이블의 속성들의 종속적인 관계를 이용해 테이블을 무손실 분해하는 과정으로 가능한 중복을 제거하여 삽입/삭제/갱신 이상의 발생가능성을 줄이는 것이다.

비정규 릴레이션

↓    도메인이 원자값

제 1정규형 : 테이블에 속한 모든 속성의 도메인이 원자값임

↓    부분적 함수 종속 제거

제 2정규형 : 기본키가 아닌 모든 속성이, 기본키에 대하여 완전 함수적 종속을 만족

↓    이행적 함수적 종속 제거 : a->b이고 b->c일때, a->c를 만족하는 관계

제 3정규형 : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않음

↓ 결정자가 후보키가 아닌 함수종속 제거

BCNF : 모든 결정자가 후보키

↓ 조인종속 제거

제 5정규형 : 테이블 R의 모든 조인 종속이 R의 후보키를 통해서만 성립( 조인 종속 : 테이블 R과 R의 프로젝션들을 모두 조인한 결과가 동일)


시스템 카탈로그(데이터 사전)

: DBA의 도구로써 DB에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보가 수록되어 있는 테이블

: 사용자와 DBMS를 통해 수정X, 접근은 가능

: 시스템 카탈로그에 저장된 내용을 메타 데이터라고 한다.


인덱스

: 튜플에 빠르게 접근하기 위해 <키값, 포인터> 쌍으로 구성되는 데이터 구조

- 기본 인덱스 : 기본키를 위한 인덱스, 관계형 DBMS에서는 모든 기본키에 자동적으로 기본 인덱스를 생성

- 보조 인덱스 : 기본 인덱스가 아닌 나머지

- 클러스터 인덱스 : 인덱스 테이블의 키 값 순서와 튜플의 물리적 순서와 튜플의 물리적 순서를 동일하게 유지하는 인덱스

#행 이주

: 인데스 테이블에서 튜플의 값을 자료형 보다 크게 넣으면 해당 튜플은 뒤로 밀려나게 된다.

#종류

- m-원 검색트리 : 이진 검색 트리를 수정한 것, 한 노드가 최대 m-1개의 키값과 최대 m개의 서브 노드를 가진다. 포인터의 최대 개수는 m개, 키 값의 최대 개수는 m-1개

- B 트리 : 균형잡힌 m-원검색트리, 루트는 단말 노드가 아닐 떄, 적어도 2개의 서브트리를 가진다. 루트도 아니고 단말 노드도 아니라면 최소 m/2, 최대 m개의 서브노드를 가진다. 모든 단말 노드들은 같은 높이를 가진다.

- B* 트리 : B-트리의 빈번한 노드 분할을 줄이는 목적으로 제시, 각 노드가 최소한 2/3가 채워진 상태여야 한다. 한 노드가 가득차고 인접 노드가 모두 가득찰 때까지 분할을 지연시킨다.

- B+ 트리 : B-트리의 순차적인 순회 작업에 대한 해결책으로 제시, 인덱스 세트와 순차 세트로 구분

인덱스 세트 : 단말 노드가 아닌 노드들로 구성(키 값을 단말 노드에 있는 키 값으로 직접 찾아가는데 사용)

순차 세트 : 단말 노드로만 구성( 모든 키 값을 단말 노드에 나열. 인덱스 세트의 키 값들도 다시 한번 나열)

순차적으로 Linked list를 구성하고 있어서 순차적 처리가 가능


트랜잭션

:DB에서 하나의 논리적 기능을 수행하기 위한 일련의 연산 집합, 작업의 논리적 단위

- COMMIT : 하나의 트랜잭션이 정상적으로 종료될 경우 수행되는 연산

- ROLLBACK : 하나의 트랜잭션이 비정상적으로 종료될 경우 수행되는 연산

- 특징(ACID)

1. 원자성 : 트랜잭션의 연산을 DB에 모두 반영되든지 전혀 반영되지 않던지 둘 중 하나

2. 일관성 : 시스템이 가지고 있는 고정적인 요소는 트랜잭션의 연산이 끝나도 동일

3. 독립성 : 한 트랜잭션이 데이터를 갱신하는 동안 다른 트랜잭션들은 접근하지 못한다.

4. 영속성 : 트랜재션이 완료된 후에는 시스템 오류가 발생해도 트랜잭션에 의해 변경된 내용은 보존됨

- 상태

1. 활동

2. 실패

3. 철회 : 트랜잭션이 비정상적으로 종료되어 ROLLBACK 연산을 수행한 상태

4. 부분완료 : COMMIT 연산 하기전

5. 완료


회복

: 트랜잭션 실행 도중 장애가 발생해 DB가 손상되었을 경우 다시 복구하는 작업

- 장애의 유형

1.  실행장애 : 사용자의 실수/ 무결성 규칙 위반 등으로 질의 실행이 실패

2. 트랜잭션 장애 : 비정상적인 상황으로 인해 트랜잭션 실행이 중지

3. 시스템 장애 : DB에는 손상을 입히지 않으나 H/W의 오동작 , 정전

4. 미디어 장애 : 저장장치의 손상 / 오동작으로 DB의 일부 또는 전부가 물리적으로 손상되는 현상

- 회복 관리기

->트랜잭션이 성공적으로 완료 되지 않으면, Log를 이용해 트랜잭션이 DB의 모든 변환를 취소해서 회복

->트랜잭션이 성공적으로 완료 되었으나 디스크에 반영되지 않았을 경우, Log를 이용해 재작업을 수행

(COMMIT만 하지 못했다는 의미 : 부분완료)

-> COMMIT을 수행 했고 장애가 생기면 REDO / 아니면 UNDO

- 회복 기법

1. 연기 갱신 : 트랜잭션이 성공적으로 종료될 때까지 DB에 대한 실질적인 갱신 연기 / 실행되는 동안 변경된 내용은 Log에 보관 / 부분완료 시점에 Log로 DB에 반영 / 애초에 DB에 적용을 안하기에 장애가 생격도 Redo 작업만 하면된다.

2. 즉각 갱신 : 바로 DB에 반영 / 장애를 대비해 모든 변경내용 Log에 저장 / Redo와 Undo 모두 수행

3. 그림자 페이지 : 갱신 이전의 DB를 페이지단위로 구성해 카피해놓고 실제 페이지를 대상으로 트랜잭션에 대한 변경작업 반영 / 장애생격서 RollBack할 때, 해당 페이지만 복구, Log와 Redo, Undo 모두 필요없다.

4. 검사점 기법 : Log전체를 조사하는 걸 피하기 위한 기법 / 트랜잭션 실행중 주기적으로 변경 내용이나 상황과 검사점을 같이 Log에 저장

5. 미디어 회복 기법 : DB의 내용을 주기적으로 안전한 스토리지에 덤프 / 장애 발생시 가장 최근의 덤프를 디스크에 적재하고 Log를 통해 최근의 트랜잭션에 대해 Redo


병행제어(Concurrency Control)

: 동시에 다수의 트랜잭션을 수행할때, DB의 일관성 파괴되지 않도록 트랜잭션끼리 상호작용을 제어하는 기술

: 다수의 트랜잭션들이 동시에 인터리빙하게 실행되는 것

- 목적

1. DB의 공유를 최대화

2. 시스템 활용도 최대화

3. 사용자에 대한 응답 시간 최소화

4. 단위 시간당 트랜잭션 처리 건수 최대화

5. DB의 일관성 유지

- 병행제어가 없으면 생기는 문제점 

1. 갱신 분실 : 다수의 트랜잭션이 같은 데이터를 공유, 갱신할 때 갱신 결과의 일부가 분실

2. 모순성 : 다수의 사용자가 동시에 같은 데이터를 갱신할 때, DB 내의 데이터들이 불일치

3. 연쇄 복귀 : 병행 수행되던 트랜잭션들 중 하나가 Rollback하는 경우, 다른 트랜잭션도 Rollback

- 잠금 

: DB관리 방법, 하나의 트랜잭션이 사용하는 데이터에 다른 트랜잭션이 접근 못하게 하는 것

: 잠금 -> 실행 -> 해제

- 잠금단위

-> DB, 테이블, 레코드, 필드

-> 단위가 커지면 Locking Overhead는 감소하지만 공유성은 낮아진다.

-> 단위가 작아지면 Locking Overhead는 증가하지만 공유성은 높아진다.

- 교착상태(Dead Lock)

- 공유잠금(Shared Lock) : 다른 트랜잭션은 읽기만 가능

- 배타잠금(Exclusive Lock) : 다른 트랜잭션은 일기/쓰기 불가능

- 병행 제어 기법의 종류

1. 2-단계 잠금규약 : 트랜잭션 스케줄의 직렬성을 보장하는 대표적인 잠금 기법(트랜잭션들이 인터리빙하게 실행될때 그순서)

-> 확장단계( 트랜잭션이 잠금만가능하고 해제는 불가능한단계) / 축소단계(트랜잭션이 해제만가능하고 자금은 불가능한 단계)

-> 스케줄의 직렬성을 보장한다는 장점은 있지만 교착 상태는 예발할 수 없다는 단점.

2. 타임 스탬프 순서 : 시스템이 각 트랜잭션을 실행할 때 부여하는 값

-> 트랜잭션 스케줄의 결과와 직렬 스케줄의 결과가 동일함을 보장하는 기법

-> 직렬성 순서를 결정하기 위해, 트랜잭션 간의 실행 순서를 미리 결졍하는 기법

-> 트랜잭션을 실행하기전에 타임 스탬프를 부여하고, 그 순서에 따라 트랜잭션을 수행

-> 교착 상태가 발생하지 않는다,


보안

- 보안 기법

1. SQL이용한 권한 부여 기법

-> 뷰를 이용하는 방법

-> DCL을 이용해 권한 부여와 취소

2. 암호화 기법

-> 개인키 암호화(DES)

-> 공용키 암호화(RSA)


튜닝

- DB의 환경 등을 조정해 DBMS의 성능을 향상시키는 작업

- DBMS의 높은 작업 처리량과 짧은 응답 시간을 갖도록 하는 것이 중요

- 목표

-> 디스크 블록에 대한 접근 횟수 최소화

-> 신속한 재사용

-> 모든 SQL문은 공유가 가능하도록, 작성 규칙을 준수하여 작성

-> 다수의 사용자가 자원을 안정적으로 사용하게끔 잠금 기능을 최소화

생략


객체 지향 데이터베이스(ODB : Object - oriented - Database)

- 객체 지향 데이터베이스의 구성

-> 객체와 객체 식별자(OID)

-> 속성과 메소드

-> 클래스와 인스턴스

-> 상속

-> 오버로딩과 오버라이딩

- 객체 관계 데이터베이스(ORDB)

특징

1. 표준으로 ISO에서 제시한 SQL3

2. 확장 가능 데이터 타입, 사용자 정의 데이터 타입, 사용자정의 함수 지원

-> 대용량의 데이터 저장을 위해 LOB타입이 있다.

->가변 길이 문자 스트링(CLOB)/가변 길이 이진 스트링(BLOB)

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------



'Free' 카테고리의 다른 글

오늘의 노래  (0) 2016.06.14
정보처리기시 실기 13년 2회  (0) 2016.06.13
정보처리기사 실기 13년1회  (0) 2016.06.13
정보처리기사 실기 최근 기출된 용어들  (0) 2016.06.12
JAVA 난수생성  (0) 2016.06.08

자바와 데이터베이스

JDBC(Java Database Connectivity)는 자바 API의 하나로서 데이터베이스에 연결하여서 데이터베이스 안의 데이터에 대하여 검색하고 데이터를 변경할 수 있게 한다. 따라서 JDBC를 사용하면 자바 프로그램으로 회사같은 곳에서 사용하는 데이터베이스에 접그하여서 여러가지 작업을 할 수 있게 된다.


|데이터베이스 프로그램 개발 절차

1. DBMS(DataBase Management System) 설치( 오라클, MySQL)

2. DBMS에 필요한 JDBC 드라이버를 설치

3. JDBC가 제공하는 기능을 이용하여 데이터베이스 응용 프로그램을 개발


MySQL 과 JDBC드라이버를 설치합시다.

MySQL : http://dev.mysql.com/downloads/file/?id=463530

JDBC : http://dev.mysql.com/downloads/connector/j/


|JDBC를 이용한 데이터베이스 사용 절차

1. URL로 지정된 JDBC 드라이버를 적재

ex) forName( )이라는 메소드를 사용

try{

Class.forName("com.mysql.jdbc.Driver");

}

catch(ClassNotFoundException e){
    System.out.println("드라이버를 찾을 수 없습니다.");

}


2. 사용자 이름과 패스워드를 가지고 데이터베이스에 연결

ex) getConnection( )을 호출

String url = "jdbc:mysql://localhost/book_db"; // jdbc:서브프로토콜:서브내임

String user = "root";

String password = "password";

con = DriverManager.getConnection(url, user, password);

출력결과

3. SQL문장을 작성하여서 전공하고 실행. SQL명령어의 결과로 생성되는 결과 집합을 얻는다.

사용되는 것

- Connection 객체 : 자바와 데이터베이스 사이의 연결을 담당

- Statement 객체 : SQL 문장을 실행합니다.

EX) Statement s = con.createStatement();    // 문장객체 생성

     String select = "SELECT * FROM books ORDER BY jaehyeok; // SQL 문장 생성

     ResultSet rows = s.executeQuery(select);    // SQL 문장 실행

4. 결과 집합을 화면에 표시하거나 겨로가 집합을 처리한다. 사용이 끝나면 연결을 해제.

'Programming Language > Java' 카테고리의 다른 글

9. 네트워크 프로그래밍  (0) 2016.06.10
8. 입출력 - 형식 입출력  (0) 2016.06.10
7. 입출력 - 문자스트림  (2) 2016.06.09
6. 입출력-바이트스트림  (0) 2016.06.08
5. 스레드  (0) 2016.06.08

네트워크 프로그래밍의 개요


|서버와 클라이언트

네트워크에는 서버와 클라이언트가 존재한다. 이들은 미리 정의된 프로토콜을 이용하여서 서로 간에 통신을 한다.


|자바와 네트워킹

자바에서 네트워크 프로그래밍을 위한 패키지는 java.net이다.


URL클래스

자바에서는 URL 객체를 이용하여 URL의 주소를 나타낸다.

 URL java = new URL("http://java.sun.com/"); // 절대 경로

 URL reference = new URL(java, "reference.html"); // 상대경로


<예제>

URL문자열로부터 각가의 요소 파싱

출력결과


|URL클래스를 이용한 읽기

URL 클래스 메소드인 openStream( )을 이용하면 인터넷상의 URL에서 직접 그 내용을 입력 스트림처럼 읽을 수 있다.


<예제>

출력결과


|URLConnection 클래스

URL 객체를 생성한 후에 URL 클래스의 openConnection( ) 메소드를 호출하면 URLConnection 객체를 반환한다. 이 객체를 이용하여 외부 URL에 의하여 표현되는 서버에 접속할 수 있으며 또한 접속에 앞서서 여러 가지 통신 파라미터들을 설정할 수 있다.

try{

URL java = new URL("http://java.sun.com/");

URLConnection javac = java.openConnection( );

javac.connect = java.openConnection( );

} catch (MalformedURLException e){

} catch (IOException e){

}


TCP를 이용한 통신

 URL과 URLConnections 클래스는 인터넷상의 자원을 접근하는데 상대적으로 고수준의 메카니즘. 그러나 가끔은 저수준의 네트워크 통신 기능이 필요한 경우도 있다. 예를 들면 클라이언트-서버 응용 프로그램을 만드는 경우


|소켓이란?

하나의 포트에 하나의 소켓을 만들어 결합 


TCP를 이용한 서버 제작


서버 제작 5단걔

1. ServerSocket 객체 생성 

ex) ServerSocket server = new ServerSocket(portNumber, queueLength);

-> 포트 번호가 portNumber인 포트를 기반으로 하는 소켓을 생성

-> queueLenght : 서버에 연결되기를 기다리는 클라이언트의 최대 개수


2. accept( ) 메소드 호출

ex) Socket clientSocket = server.accept( );

-> accept( ) 메소드는 클라이언트와 연결이 되면 새로운 Socket 객체를 반환

-> 이 새로운 Socket 객체를 이용하여서 서버는 클라이언트와 상호 대화


3. 소켓으로부터 스트림 객체를 얻는다.

ex) InputStream input = clientSocket.getInputStream( );

    OutputStream output = cliendtSocket.getOutputSt

4. 상호 대화 단계

서버와 클라이언트는 스트림을 이용하여서 상호 대화한다.


5. 종료

close( ) 메소드를 호출




'Programming Language > Java' 카테고리의 다른 글

10. 데이터베이스 프로그래밍  (0) 2016.06.10
8. 입출력 - 형식 입출력  (0) 2016.06.10
7. 입출력 - 문자스트림  (2) 2016.06.09
6. 입출력-바이트스트림  (0) 2016.06.08
5. 스레드  (0) 2016.06.08

+ Recent posts