ComputerScience28 [Web] 1. 웹서버와 WAS(Web Application Server) 1. 결론 결론부터 말하면 Web Server는 정적인 페이지, Web Application Server는 동적인 페이지를 제공하는 서버이다. 이제 각 서버를 자세히 알아보도록 하자. 2. 웹서버(Web Server) 클라이언트로 부터 HTTP 요청을 받아 정적인 컨텐츠(html파일, 이미지 파일, css, javaScript)등을 제공하는 서버이다. 1) 기능 정적인 컨텐츠 제공 WAS를 거치지 않고 서비스를 제공한다. 동적인 컨텐츠 제공을 위한 요청 전달 클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달한다. 2) CGI(Common Gateway Interface)? 웹서버에서 프로그램을 동작시키기 위한 방법을 정의한 프로그램(또는 스크립트)로 PHP, Perl, Py.. 2021. 6. 4. [DataBase] 6. 조인(JOIN) 1. 조인 JOIN이란 RDB에서 일반적을 많이 사용하며, 정규화를 통해 분리된 데이터 베이스에서 원하는 결과를 도출하기 위해 여러 테이블을 조합하는 것을 JOIN이라고 한다. JOIN을 통해 관련된 컬럼을 기준으로 행을 합쳐주는 연산을 할 수 있다. 2. 조인의 종류 1) INNER JOIN INNER JOIN은 가장 많이 사용되는 조인으로 2개의 테이블을 합쳐 새로운을 만들고 이중 A의 기준값과 B의 기준값( 예를들어 A의 PK와 B의 FK)이 일치하는 것에 대해 결과를 도출하는 것이다. 2) OUTER JOIN 외부조인은 크게 3가지로 나눌 수 있다. [1] LEFT OUTER ( A에 따라 B의 컬럼을 추가해 놓은 것 ) A테이블의 모든 데이터에 대해 B테이블과 매칭이 되는 레코드를 포함하는 조인.. 2021. 6. 3. [DataBase] 5. 파티셔닝/ 샤딩 1. 파티셔닝(Partitioning)/샤딩(Sharding) 데이터베이스를 여러개로 나누어 분산시키는 기술용어로, 서비스 크기의 증가에 따라 DB의 크기가 증가하면서 성능을 향상시키기 위한 것이다. 자료가 매우 많아지면서 하나의 DBMS가 여러개의 테이블을 관리하기에는 성능적으로 문제가 생겼고 이에 따라 테이블을 나누어 관리하는 방법이 파티셔닝, 데이터베이스를 여러개 사용하는 방법이 샤딩이다. 1) 파티셔닝 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법 [1] 파티셔닝 방법 Horizontal Partitioning( 수평 파티셔닝 ) 수평 즉, 데이터의 개수를 기준으로 나누어 파티셔닝하는 방법이다. 하나의 테이블을 대상으로 튜플(행)의 개수가 많아지면 여러개의 테이블로 분산하여 저장하는 .. 2021. 6. 3. [DataBase] 4. 정규화 2. 정규화( Nomalization) 정규화의 기본 목표는 테이블간 중복된 데이터를 허용하지 않는다는 것이다. 이로써 무결성(정확성/일관성 보장)을 유지할 수 있으며, DB저장용량 또한 줄일 수 있다. 정규화는 또한 이상문제들을 해결하기 위해 속성(컬럼)들 끼리 종속관계를 분석하여 여러 테이블로 나누는 과정이라고 표현 할 수 있다. 테이블을 여러개로 분해하면 속도는 느려질 수 있지만, 각종 이상문제들을 해결하기위해 정규화가 필요하다. - 이상문제 종류 삽입이상 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되는 경우 삭제이상 튜플 삭제 시 유지되어야 되는 정보도 함께 삭제되는 경우 갱신이상 중복되는 튜플 중 일부 속성만 갱신되어 모순이 발생하는 경우 1) 제 1정규화 (도메인 원자값) 테이블의 컬럼이.. 2021. 6. 3. [DataBase] 3. 스키마 1. 스키마 스키마란 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것이다. 자세하게 살펴보면 다음과 같다. 개체의 특성을 나타내는 속성(Attribute) 속성들의 집합으로 이루어진 개체(Entity) 개체 사이에 존재하는 관계(Relation)에 대한 정의 이들이 유지해야 할 제약조건들을 기술한 것이다. DB에 저장되는구조를 나타내는 데이터 베이스 구조를 스키마라 한다. 스키마는 데이터 사전(Data Dictionary)에 저장된다. *데이터 사전 : 시스템 전체에서 나타나는 데이터 항목들에 대한 정보를 지정한 중앙 장소로, 이 정보에는 항목을 참조하는데 사용되는 식별자, 항목에 대한 엔티티의 구성요소, 항목이 저장되는 곳, 항목을 참조하는 곳 등을 포함 현실 세계의 특정한 한 부분의 .. 2021. 6. 3. [프로그래밍언어] 자바(1) 비 언어적 부분( 구성, 특성 ) 자바 카테고리와는 달리 자바의 특성만을 요약하여 다루는 포스팅입니다. 1. JDK, JRE, JVM 1) JDK(Java Development Kit) JDK는 JVM과 JRE 분만아니라 자바를 사용해서 개발을 하기위한 도구가 포함되어 있는 kit이라고 보면 될거 같다. 대표적으로 자바 컴파일러가 이에 포함되고 개발자가 아니라면 사용할 일이 없는 도구이다. 2) JRE(Java Runtime Environment) Java를 실행하기 위해서 필요한 도구로 JVM을 포함하고 있다. JRE에는 JVM을 실행하며 필요한 라이브러리들과 바이트코드(.class파일)를 JVM에 올리는 클래스 로더가 있다. 3)JVM(Java Virtual Machine) 자바 코드가 최종적으로 실행되는 가상머신이다. 자세한 내용은.. 2021. 6. 2. [DataBase] 2. 트랜잭션(Transaction) 1. 트랜잭션 트랜잭션은 끊김없이 한번에 처리해야하는 업무의 단위를 의미한다. 데이터베이스에서의 트랜잭션은 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 말한다. 트랜잭션을 설명할 때 가장 대표적인 예시가 은행업무이다. 다음은 트랜잭션의 개념이 들어가지 않은 업무 처리의 예이다. A가 자신의 계좌에서 B에게 송금을 하려고 한다. 송금을 하는 중 네트워크에 문제가 생겨 A의 잔고는 줄었지만 B에게 입금이 되지 않았다. 이럴 경우를 대비하여 A의 통장에서 금액이 빠진 후 B의 통장에 입금이 된 것이 확인 된다면 작업을 마치는 것을 트랜잭션이라고 한다. 만일 중간에 오류가 발생했다면 거래를 처음 상태로 복구시켜야 한다. 즉, 작업 처리에있어서 안정성을 확보하는 것을 말한다. 트랜잭션을 정리하면.. 2021. 5. 31. [Database] 1. Index 1. Database Index(DB성능을 높이는 핵심) 인덱스란 추가적인 쓰기작업과 저장공간을 활용하여 DataBase 테이블의 검색속도를 향상시키기 위한 자료구조이다. 책에서 원하는 내용을 찾을 때 책의 맨 앞 목록을 찾아보는 것과 같은 원리이다. 모든 데이터를 대상으로 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 하는 것이다. 데이터 베이스에 있어서 데이터를 검색할 때 성능을 최적화 하기 위한 유용한 도구이다. 인덱스를 사용하면 데이터 조회(SELECT)뿐만 아니라 수정(UPDATE), 삭제(DELETE)의 성능까지 좋아진다. 각 연산에는 모두 대상에 대한 조회가 선행되야 하기 때문이다. 만일 INDEX를 사용하지 않은 컬럼을 조회.. 2021. 5. 31. 이전 1 2 3 4 다음