전체 글 422

6. JPA(Java Persistence API)

JPA(Java Persistence API) JPA란? Java 진영의 ORM 기술 표준을 말한다. ORM: 직접 SQL구문을 사용하지 않고 객체와 데이터베이스의 스키마를 매핑시킨다. 객체는 객체대로 설계하고 RDBMS는 RDBMS대로 설계한다. ex) Hibernate(JPA를 구현한 오픈소스) https://oranthy.tistory.com/321 JPA 등장 배경 패러다임의 불일치: Java(속성과 기능을 캡슐화해서 사용하는 게 목표) vs RDBMS (데이터 정교화 및 보관) JPA 장단점 장점 쿼리를 작성할 필요 없어서 코드가 줄어든다. 가독성 좋다. 간편한 수정 가능 동일한 쿼리에 대한 캐시 기능을 사용해서 성능이 좋다. 단점 매핑 설계를 잘못하면 성능 저하 JPA를 제대로 사용하려면 알아..

5. Spring

Spring 스프링 프레임워크가 전자정부프레임워크로 자리 잡은 이유는? 전자정부표준프레임워크(eGov)란? 행정부 산하 한국 정보화진흥원에서 만든 웹 기반 애플리케이션 프레임워크로서 정부, 공공기과느 공기업 등의 웹 사이트에 자주 쓰이는 공통 기능을 자바의 Spring Framework와 유명 Java 라이브러리(마이바티스, 등)을 가지고 미리 만들어놓은 컴포넌트와 이를 개발하는 개발, 운영, 관리 환경 등으로 구성된다. 다양한 기술이 난잡하게 사용된던 SI 업계에 표준을 지정해줘서 전체적인 생산성을 증가시키려는 목적이 있다. 장점 정형화되어 있어서 일정 수준 이상의 품질을 기대 가능하다 전자 정부 프레임워크이기 때문에 한국에서 수요가 크다. 확장성: 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이..

4. Java

Java 객체 지향 프로그래밍이란? 실제 세계를 모델링해서 소프트웨어를 개발하는 방법이다. ex) Java, Python, C++, Swift 객체 지향의 특성 4가지: 캡슐화, 추상화, 다형성, 상속 https://brownbears.tistory.com/407 객체 지향을 정의하자면 의존성 관리이다. 객체지향으로 의존성을 관리함으로써 변경 영향을 최소화하고 독립적인 배포가 가능해지며 독립적인 개발이 가능해진다. 따라서 객체 지향에서 가장 중요한 것은 의존 역전 원칙을 통한 고수준 정책과 저수준 구현 세부 사항의 분리라고 할 수 있다. 장점: 재활용성이 높다. 단점: 속도가 느리다. 절차 지향 프로그래밍 Def) 절차 지향 프로그래밍 : 순서대로 프로그램 전체가 유기적으로 연결되도록 하는 프로그래밍 기..

3. 인프라 및 클라우드

클라우드(cloud) Def) 클라우드: 인터넷을 통해 접근 가능한 서버와 서버에서 작동하는 소프트웨어와 데이터베이스를 의미한다. 클라우드 컴퓨팅이란? 인터넷 기반 컴퓨팅의 일종으로 자신의 컴퓨터가 아닌 클라우드에 연결된 컴퓨터로 정보를 처리하는 기술을 말한다. 사용자의 직접 관리없이 데이터 스토리지와 컴퓨팅 파워와 같은 “컴퓨터 시스템 리소스”를 필요 시 바로 제공하는 것을 말한다. ex) 네이버 오피스, 구글 docs, work space, acrobat 클라우드 컴퓨팅 모델 - laas, paas, saas 란? laas(Infrastructure as a Service, 서비스형 인프라스트럭처): 비즈니스 운영에 필요한 스토리지, 네트워킹 및 컴퓨팅 리소스를 제공한다. ex) AWS EC2 hos..

Chapter 09.04 쿼리 힌트

MySQL 서버는 인간이 원하는 서비스를 100%이해하지는 못한다. 따라서 서비스 개발자 또는 DBA보다 MySQL서버가 부족한 실행 계획을 수립할 때가 있다. RDBMS에서는 이러한 목적으로 힌트라는 기능이 제공된다. MySQL서버에서 가능한 쿼리 힌트는? 인덱스 힌트: 예전 버전에서 사용되던 힌트들 ex) USE INDEX, STRAIGHT_JOIN 옵티마이저 힌트 ex) MySQL 5.6 부터 새롭게 추가되기 시작한 힌트들을 뜻한다. STRAIGHT_JOIN 도 포함한다. 9.4.1 인덱스 힌트 USE INDEX, STRAIGHT_JOIN 등을 포함한 인덱스 힌트들은 모두 MySQL 서버에 옵티마이저 힌트가 도입되기 전에 사용되던 기능들이다. 이들은 모두 SQL 문법에 맞게 사용해야되므로 사용하게 ..

2. 운영체제, 네트워크, 보안과 암호학

2.1 네트워크(Network) 웹 통신의 큰 흐름에 대해 설명하라 TCP, UDP 차이점 TCP(transmission control protocol, 전송 제어 프로토콜)는 연결형 프로토콜로서 데이터 전송 순서, 신뢰성 보장, 속도는 느림 에러 발생 시 재전송을 요청하고 에러를 복구한다는 점에서 UDP와 다르다. ex) web, e-mail, HTTP, SMTP, 파일 전송 등 UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜): 비연결형 프로토콜로서 데이터 그램 단위로 데이터를 전송하는 프로토콜이다. 데이터를 보낼 때마다 어떤 응답이 발생하지 않는다. 연결이 잠깐 끊기더라도 그 내용을 추측 가능한 데이터를 보낼 때 사용한다. ex) 스트리밍, 전화, 브로드캐스팅 TCP는 ..

1. 데이터베이스(DataBase)

데이터베이스(DataBase) 데이터베이스 사용하는 이유와 특징 데이터베이스를 사용하는 이유: 데이터베이스가 사용되기 이전에는 파일 시스템을 이용했으나 데이터 종속성, 중복성, 데이터 무결성 문제가 있었다. 데이터베이스의 특징 독립성 물리적 독립성: 데이터베이스 사이즈를 늘리거나 데이터 파일 늘리거나.. 해도 관련된 응용 프로그램을 수정할 필요 없다. 논리적 독립성: DB는 논리적 구조로 다양한 응용 프로그램의 논리적 요구를 만족시킬 수 있다. 무결성(integrity): 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능, 데이터의 유효성 검사를 통해 무결성 유지 무결성은 정확성, 일관성, 유효성이 유지되는 것을 의미한다. 보안성: 인가된 사용자들만 데이터베이스에 접근 가능하도록 유지..

Chapter 09.03 고급 최적화

9.3 고급 최적화 옵티마이저는 통계 정보와 옵티마이저 옵션을 결합해서 최적의 계획을 수립한다. 옵티마이저 옵션 조인 관련 옵티마이저 옵션 옵티마이저 스위치 옵티마이저 스위치: MySQL 서버의 고급 최적화 기능들을 활성화할지를 제어하는 용도이다. 9.3.1 옵티마이저 스위치 옵션 변수 optimizer_switch를 이용한다. 옵티마이저 스위치 이름 batched_key_access (기본값 off) block_nested_loop engine_condition_pushdown index_condition_pushdown use_index_extensions index_merge index_merge_intersection index_merge_sort_union index_merge_union mrr..

Chapter 09.02 기본 데이터 처리

9.2 기본 데이터 처리 모든 RDBMS는 데이터 가공 결과물이 동일하나 처리 과정은 벤더별로 차이가 있다. 기본적인 데이터 가공을 위해서 MySQL 서버가 어떤 알고리즘을 사용하는지 알아본다. 9.2.1 풀 테이블 스캔과 풀 인덱스 스캔 Def) 풀 테이블 스캔 인덱스를 이용하지 않고 테이블의 데이터를 처음부터 끝까지 읽어서 요청된 작업을 처리하는 작업이다. 상당히 많은 디스크 읽기가 필요하다. 대부분의 DBMS는 한꺼번에 여러 개의 블록이나 페이지를 읽어오는 기능을 내장한다. 그러나 MySQL은 한꺼번에 몇 개씩 페이지를 읽어올지 설정하는 시스템 변수는 없다. 풀 테이블 스캔을 실행할 때 MyISAM 스토리지 엔진: 디스크로부터 페이지를 하나씩 읽어온다. InnoDB 스토리지 엔진: 특정 테이블의 연..

Chapter 09.01 옵티마이저(Optimizer)와 힌트

9.1 개요 실행 계획을 이해해야 실행 계획의 불합리한 부분을 찾아내고 더 최적화된 방법으로 실행 계획을 수립하도록 유도 가능하다. Def) 옵티마이저(Optimizer): MySQL은 쿼리를 최적으로 실행하기 위해 데이터가 어떤 분포로 저장돼있는지 통계 정보를 참조한다. 기본 데이터를 비교해서 최적의 실행 계획을 수립하는 작업을 말한다. MySQL 서버를 포함한 대부분의 DBMS에서 이러한 기능을 담당한다. 명령어 EXPLAIN으로 쿼리 실행 계획을 확인할 수 있다. 9.1.1 쿼리 실행 절차 SQL 파싱(parsing): 사용자로부터 요청된 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리 (파스 트리)한다. SQL 파서라는 모듈로 처리한다. SQL 문법 검사 SQL 파스 트..