본문 바로가기

반응형

기초이론

(24)
엘라스틱 서치(Elasticsearch) 엘라스틱 서치(Elasticsearch) 아파치 루씬(Apache Lucene) 기반의 JAVA 오픈소스 분산 검색 엔진이다. 엘라스틱 서치를 통해 루씬 라이브러리를 단독으로 사용할 수 있다. 방대한 양의 데이터를 신속하게 거의 실시간(NRT : Near Real Time)으로 저장, 검색, 분석할 수 있다. 즉, 루씬이라는 검색 라이브러리를 기반으로 검색 기능을 제공하는 오픈소스 검색엔진을 말한다. 사용 사례는 다음과 같다. 어플리케이션, 웹사이트 등의 검색 로깅, 로그 분석 보안 및 비즈니스 분석 애플리케이션 성능 모니터링 위치기반 정보 데이터 분석 및 시각화 비즈니스 인텔리전스 Business-Intelligence(BI) : 조직이 더 나은 의사 결정을 내리고 보다 효율적인 비즈니스 프로세스를 구..
로드 밸런싱(Load Balancing) 로드밸런싱(Load Balancing) 컴퓨터 네트워크 기술의 일종으로 둘 혹은 세 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다. 두 개 이상의 컴퓨터 자원에 작업을 분배하는 것을 '로드밸런싱(Load Balancing)' , 로드밸런싱 기술을 제공하는 서비스 또는 장치를 '로드밸런서(Load Balancer)' 라고 한다. 증가한 트래픽에 대처하기 위해 사용 증가한 트래픽에 대처하는 방법은 크게 두 가지로 나눌 수 있다. Scale-up 서버 자체의 성능을 확장하는 것을 의미한다. Scale-out 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것을 말한..
프록시(Proxy) 프록시(Proxy) 대리라는 의미를 가지고 있다. 보안상의 이유로 직접 통신할 수 없는 사이에서 통신을 할 경우에 중계기로써 대리로 통신을 수행하는 기능을 말한다. 두 PC가 통신을 할 때 직접 하지 않고 중간에서 대리로 통신을 하는 것을 ‘프록시’라고 하고, 중계 역할을 하는 것을 ‘프록시 서버’ 라고 부른다. 즉, 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 '프록시', 그 중계 기능을 하는 것을 '프록시 서버' 라고 부른다. 프록시는 서버 위치에 따라 두 종류로 나뉜다. 포워드 프록시(Foward Proxy) 리버스 프록시(Reverse Proxy) 추가로 오픈 프록시도 존재하는데, 이는 간단하게 다뤄볼 것이다. 오픈 프록시(Open Proxy) 포워드 프록시(Foward Pro..
JOIN 이란 JOIN 이란 2개 이상의 테이블을 연결하여 데이터를 검색하는 방법 JOIN의 종류 INNER JOIN NATURAL JOIN SELF JOIN OUTER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN 일반적으로 조인이라고 하면 이 정도가 전부라고 알고 있다. 그러나 위에 있는 조인들은 FROM 절의 조인 형태에 따라 구분되는 조인들이고, 추가적으로 [연산자]에 따라 분류되는 다음 조인들도 존재한다. 이들에 대해서는 간단하게만 알아볼 것이다. EQUI JOIN NON EQUI JOIN 1. INNER JOIN JOIN 조건에서 값이 일치하는 행만 반환한다. 기준 테이블과 JOIN 테이블에 중복되는 값을 보여준다. 교집합 사용 형태 조인..
UNION 과 UNION ALL 이란 UNION 이란 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법이다. 중복된 값을 제거하고 보여준다. 중복된 값을 제거하는 연산이 추가로 수행되기 때문에 UNION ALL보다 속도가 느리다. UNION ALL 이란 UNION과 동일하게 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법이다. 중복된 값을 모두 보여준다. 사용형태 컬럼명이 동일해야 한다. (같지 않을 경우 AS 를 이용해서 동일하게 맞춰줘야 한다.) 컬럼별로 데이터 타입이 동일해야 한다. 출력할 컬럼의 개수가 동일해야 한다. 출력할 컬럼명을 차례로 적고, 알리어스(AS) 를 통해 컬럼명을 동일하게 맞춰준다. SELECT A AS one, B AS two FROM TABLE_A UNION (또는 UNION ALL) SELECT..
InputStreamReader 와 OutputStreamReader 알고리즘을 풀며 Buffer를 사용하다보니, InputStream / OutputStream 을 쓰는 형태가 대부분이다. 이 둘에 대해서 조금 더 자세히 알아보자. 설명 InputStream / OutputStream 은 자바에서 가장 기본이 되는 입 / 출력 스트림이다. Stream 이란 출발지와 도착지를 이어주는 다리이다. System.in 은 InputStream 타입의 필드이다. System 클래스의 in 이라는 필드는 InputStream 의 정적 필드이다. InputStream 은 두가지 큰 특징이 있다. 입력받은 데이터는 int 형으로 저장되며 이는 10진수의 UTF-16 값으로 저장된다. 1 byte 만 읽는다. 이러한 문제를 해결하기 위해 확장된 것이 InputStreamReader 이다..
BufferedReader 와 Bufferedwriter Scanner와 마찬가지로 사용자에게 입출력을 받을 때에 사용하는 클래스이며 대용량 데이터를 처리해야할 때에 사용한다. 설명 BufferedReader / BufferedWriter 란 버퍼를 이용하는 대표적인 I/O (Input / Output) 클래스이다 BufferedReader : Scanner와 유사함 BufferedWriter : System.out.println(); 과 유사함 입력된 데이터를 바로 전달하지 않고 버퍼에 저장해두었다가 전달하는 방법 버퍼를 거쳐서 간접적으로 출력장치로 전달되어서 시스템의 데이터처리 효율성을 높여주며 InputStreamReader / OutputStreamWriter 를 같이 사용하여 버퍼링을 하게되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문..
Scanner Scanner란 사용자에게 입력 장치로 입력을 받아 그 값을 변수에 저장하는 역할을 하는 클래스이며 입력을 받을 때 자바에서 가장 많이 쓰인다. 설명 JDK 1.5부터 추가되었다. java.util 패키지에 포함되어 있으며 사용하기 위해서는 import java.util.Scaaner 를 통해 외부로부터 Scanner 클래스를 호출해서 사용한다. 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴하는 클래스이다. Scanner의 입력 메소드들은 주로 공백과 개행(줄 바꿈)을 기준으로 입력값을 인식한다. 사용 형태 import java.util.Scanner; public class Main { public static void main(String[] args) { Sca..