분류 전체보기 38

인덱스에 대한 오해와 진실

인덱스의 물리적 분류와 논리적 분류 분류는 논리적 분류와 물리적 분류로 나눌 수 있다. 물리적 분류는 다른 말로 시각적 분류이기도 한데, 분류 대상과 1:1 관계에 있고 일체형이다. 음반을 분류한다고 했을 때, 가수별*연도별 분류, 테마별*가수별 분류 등 여러가지 분류들이 있을 수 있는데 동일한 시공간에서는 오로지 하나의 물리적 분류만 가능하다. 따라서 여러가지의 분류로 나눌 수 있도록 하기 위해서는 분류 대상(음반)과 분류 정보(색인)를 분리하는 것이다. 이것이 논리적 분류로 디지털 세계에서 대량의 복잡한 자료를 다양하게 분류하는 데 적합하다. 분류 대상과 분류 정보를 분리함으로써, 그동안 할 수 없었던 다양한 분류가 동시에 가능해졌다. DB에서 인덱스는 논리적 분류의 특성을 가지고 있다. DB에서 테..

DB 2022.06.29

커넥션과 서버 프로세스의 생성

애플리케이션에서의 접속을 배워야하는 이유 애플리케이션에서의 접속을 최적화하는 것만으로도 DB의 성능을 끌어올릴 수 있고, 애플리케이션에서 피해야만 하는 코딩 방식을 이해하는 데도 도움이 되기 때문이다. 오라클은 애플리케이션 서버를 사용한 시스템이나 클라이언트/서버 형태의 시스템에서도 많이 사용되고 있다. 즉 오라클과 '오라클을 사용하는 애플리케이션'이 같은 서버 위에 있는 경우는 드물며, 애플리케이션과 오라클이 네트워크를 통해 통신하는 경우가 많다. 그래서 접속 설정으로 인한 장애가 쉽게 발생할 수 있다. 오라클의 접속 동작 오라클은 TCP/IP의 소켓을 네트워크 통신 수단으로 사용하고 있다. 소켓을 사용하면 마치 전화처럼 다른 장비에 있는 프로그램과 통신할 수 있으며, 장비 안에는 프로그램이 동작하고 ..

DB 2022.05.30

오라클의 기동과 정지

오라클의 업무 종료 흐름 1. 업무(SQL이나 트랜잭션 등)가 끝나는 것을 기다린다. 단, 급할 때는 업무중이더라도 업무 처리를 중지 2. 캐시상의 데이터를 파일에 정리한다. 단, 급할때는 하지 않음 3. 프로세스를 종료한다. 오라클 기동 1. 오라클 4가지 상태 2. 오라클 아키텍처 오라클을 관리하기 위한 단위로 인스턴스라는 용어를 사용하고 있다. 오라클에서 인스턴스는( 프로세스 + 공유 메모리)를 의미한다. 인스턴스는 '데이터베이스를 관리하는 것'이며, 데이터베이스와는 다르다. 일반적으로 인스턴스와 데이터베이스는 일대일로 대응하지만, RAC(Real Application Clusters)를 사용하는 경우에는 인스턴스와 데이터베이스가 일대일로 대응하지 않기 때문에 인스턴스와 데이터베이스의 차이를 명확히..

카테고리 없음 2022.05.15

아파치 카프카(Apache kafka) - 1

카프카의 탄생 2011년 구인/구직 및 동종업계의 동향을 살펴볼 수 있는 사이트인 ‘링크드인’에서는 파편화된 데이터 수집 및 분배 아키텍처를 운영하는데 큰 어려움을 겪었다. 데이터를 생성하고 적재하기 위해서는 데이터를 생성하는 소스 애플리케이션과 데이터를 최종 적재되는 타깃 애플리케이션을 연결해야 한다. 초기 운영 시에는 단방향 통신을 통해 소스 애플리케이션에서 타깃 애플리케이션으로 연동하는 소스코드를 작성했지만, 시간이 지날수록 아키텍처는 거대해지고 소스 애플리케이션과 타깃 애플리케이션의 개수가 많아지면서 데이터를 전송하는 라인이 기하급수적으로 복잡해지기 시작했다. 위 예시를 보면, Source에서 Destination으로 전송하게 된다면 큰 문제 없이 전송할 수 있고 원인 파악 및 트러블슈팅이 어렵지..

JAVA/Study 2022.01.13

SOLD 원칙

SOLID란 ? 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉬게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침을 말한다. 여기서 코드 냄새란 프로그래밍에서 심오한 문제를 일으킬 가능성이 있는 소스 코드의 특징을 말한다. 1. 단일 책임 원칙 (Single Responsibility Principle) 소프트웨어 설계 첫 번째 원칙을 말하며, 말 그대로 단 하나의 책임만을 가져야 한다는 의미이다. 여기서 책임의 기본 단위는 객체를 지칭하며, 다시 말하면 "객체는 단 하나의 책임만 가져야 한다" 라는 의미이다. 예를들어 학생 클래스가 존재하고, 해당 클래스는 과목을 추가하거나 조회를 할 수 있고, DB에 해당 객체의 정보를 저장하는 작업도..

JAVA 2021.09.01

Maven

Maven 이란? 자바용 프로젝트 빌드 및 관리에 사용되는 도구를 말한다. 프로젝트의 전체적인 빌드 라이프 사이클 및 라이브러리에 대한 의존 관계를 관리해준다. Maven 장점 프로젝트에 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해 자동으로 다운로드하여준다. (pom: project object model) 정해진 빌드 방법을 사용하여 협업에서 사용할 때 용이하며 플러그인을 통해 많은 작업을 자동화시킬 수 있다. pom.xml 속성 : pom.xml 파일의 최상위 루트 엘리먼트로 해당 태그 안에 모든 정보를 기술한다. : pom 모델의 버전 : 프로젝트를 생성하는 조직의 고유 아이디를 말한다. 일반적으로 도메인 이름을 거꾸로 기술 : 프로젝트를 식별하는 유일한 아이디 :..

Spring 2021.06.19

Logging Framework

Logging이란? - 프로그램 개발 또는 완료 후 발생할 수 있는 오류에 대해 디버깅 또는 모니터링 하기 위해 필요한 로그를 기록하는 것을 말한다. 좋은 로그 시스템이란? - 로그 메시지는 애플리케이션의 동작을 잘 이해할 수 있도록 충분히 구체적이어야 함 - 로그 메시지를 기록하는데 성능 저하가 없어야 함 - 어떤 배포 환경이라도 로그를 수집하고 저장할 수 있도록 유연해야 함 SLF4J(Simple Logging Facade for Java)이란? - Logging Framework의 Facade Pattern을 말한다. 따라서 다양한 Logging Framework에 대해 추상화가 가능하고 유지보수가 좋다. 즉, 어떤 Logging Framework를 사용하던지 같은 방법으로 로그를 남길 수 있도록 ..

JAVA/Study 2021.06.12