본문 바로가기

전체 글

(730)
[데이터 베이스] 인덱스 동작과정 인덱스 동작과정에 대해서 알아보자 RDBMS에서 대용량으로 데이터가 있을때, 해당 데이터를 full scan하는 것이아니라 특정 컬럼들을 키로, 해당 데이터들을 가지고있어서, 필요할때 range scan을 하면서 검색 효율을 높이는 것이다. range Scan이란, 특정 위치에서 검색을 시작해, 일치 하지 않는 범위를 만나면 멈추는 것을 의미한다. 가장 일반적인 인덱스 는 비트리 형태로 이루어져 있다. 비트리(B-tree)란? * 모든 리프 노드들이 같은 레벨을 가질수 있도록 관리되는 이진 트리이다. 비트리에서의 탐색과정은, 검색 대상을 key와 비교하고, 해당 key보다 크면, 더 큰 key값으로 이동하여, 범위에 맞는 예를 들면, 10,20이 키면, 18검색시에, 10과 20사이의 key값에 해당하는..
[Spring boot WebFlux] 프로젝트 시작하기 1. Start.spring.io 접속, 몇몇 필요한 의존성들을 추가해주고, 해당 추가 사항을 바탕으로 프로젝트를 생성, 이클립스에서 해당 프로젝트를 오픈해준다. parent에서는 그룹아이디나 버전에 대한 정보가 들어가있다. 그리고 해당하위에는 java 버전, 또한 프로젝트 속성값들에 대한 내용들이 있다.
[리액티브 프로그래밍] 리액티브 프로그래밍이란? 리액티브 프로그래밍을 써야할 정도의 대규모 서비스가 많지 않았다. 작은 서비스의 서버에서, 대규모에 대한 걸 처리하려면 단순히 서버를 더 투입하면 되지 라는 생각이지만 사실 요새는 그렇지 않다. 작은 스타트업도 대규모의 데이터를 처리해야한다. "기존 자원을 더 효율적이고 일관성 있게 사용하는 방법?" -> 리액티브 스트림이다.(수요 조절에 기반한다.) 논블로킹, 비동기 프로그래밍 모델 함수형 프로그래밍 스타일 스레드를 신경 쓸 필요 없는 동시성 또한 메소드 처리 이후에, doOnNext,doOnError,DoOnComplete 등을 사용해서, 해당 이벤트 이후를 핸들링 할수 있다. 리액티브 프로그래밍에서 가장 중요한 두개의 개념을 알아야한다. publisher - 서비스를 발급해주는 사람 subscrib..
1. Spring boot 기초 개념 익히기 Spring boot 기초 개념을 익혀보자 스프링 부트는 우선 뭐가 장점일까? 1. 프로젝트 생성 우선 spring.io에서 해당 스프링 프로젝트를 편하게 시작할 수 있다. 필요한 라이브러리를 편하게 선택해서 바로 시작할수 있다. 또한, devtool에 대한 편하게 선택하여, 프로젝트를 생성할 수 있다는 것이 장점이다. 버전에서는 snapshot은 개발중인 버전, m2 마일스 스톤으로 배포를 한 버전이지만 바뀔수 있다. 2. 의존성 관리 pom.xml에서 spring-boot-starter, spring-boot-dependencis가 있고, dependancy manager를 통해 의존성에 대한 버전관리를 자동으로 해준다. 물론 해당 xml에서 버전을 명시해서, 고정으로 사용할수도 있지만 스프링 부트에..
XML vs Json 비교 장단점 정리 데이터 통신 방법에서 가장 많이 쓰이는 방식은 두가지가 있다. 두가지 장단점을 비교해서, 언제 어떤걸 쓸지 결정해보자 1. XML xml은 html 과 매우 비슷한 문자 기반의 마크업 언어이다. 장점 : 스키마를 사용하여, 데이터의 무결성을 검증할수 있다. 단점 : XML은 배열을 사용할 수 없고, 데이터를 읽고 쓰는 것이 Json 대비 느리다. 2.Json JSON은 경량 DATA 교환 방식이다. 데이터를 저장하고 전달하는 메타언어이다. javaScript 에서 객체를 만들때 사용하는 표현식을 의미한다. 장점 : JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱하므로, XML 보다 빠르다. 단점 : JSON은 개발자가 문자열 데이터의 무결성을 검증해야한다.
[Git] 소스트리 특정 파일 추적 중지 인덱스 달기 소스트리에서 사용하다보면 굳이 안바꿔도 되는 로컬만의설정 때문에 바꿨다가 머지할때 이걸 삭제하거나 버리지 않으면, 소스 반영이 안되는 것이 있다... 귀찮다가 파일 별로 무시 인덱스를 한번 설정하면 다시는 해당 설정을 하지 않아도 된다는 것을 알게되었다. git update-index --skip-worktree [파일 경로] 이 부분을 터미널에서 치면, git 명령어로 unstaged파일들이 추적중지가 된다. 참고 반대로는 git update-index --no-skip-worktree [파일 경로] 이걸 사용해서 관리하자~ 대부분 다시 설정할 필요없는 파일들일때, (로그경로 저장, 혹은 스프링 설정 로그 저장 경로 등등에 유용)
[Git] 소스트리 특정 파일 추적 중지 인덱스 달기 소스트리에서 사용하다보면 굳이 안바꿔도 되는 로컬만의설정 때문에 바꿨다가 머지할때 이걸 삭제하거나 버리지 않으면, 소스 반영이 안되는 것이 있다... 귀찮다가 파일 별로 무시 인덱스를 한번 설정하면 다시는 해당 설정을 하지 않아도 된다는 것을 알게되었다. git update-index --skip-worktree [파일 경로] 이 부분을 터미널에서 치면, git 명령어로 unstaged파일들이 추적중지가 된다. 참고 반대로는 git update-index --no-skip-worktree [파일 경로] 이걸 사용해서 관리하자~ 대부분 다시 설정할 필요없는 파일들일때, (로그경로 저장, 혹은 스프링 설정 로그 저장 경로 등등에 유용)
[DB] 슈퍼타입과 서브 타입 jpa 관련 공부를 하면서 RDB의 관계에서 자바의 상속관계를 구현할수있을까 라는 주제로 공부를 했다. 관계형 데이터 베이스에서도 자바의 상속 관계 같은 슈퍼 타입과 서브 타입이 존재한다. 물론 jpa 기본 전략 등을 공부하면서 느꼈던 것이지만 여러 테이블에서 공통된 특성이 있다고 가정하면, 공통 된 특성을 슈퍼타입을 뽑고 나머지를 서브타입으로 내리는 것이다. 1) Roll up , 서브타입과 슈퍼타입들을 그냥 한테이블로 합치는 경우 -JPA에서는 단일 테이블 전략이라고 하는데 해당 작업은 Roll up 이라고도 한다고 한다. 서브 타입에서 사용하는 특성들이 적을 때 유용하다. 장점 속도가 빨라질수있다 단점 특정 다른 특성들이 많아지면 한 테이블에 부하가 심하게 걸릴수있어 오히려 성능이 저하될 위험이 존..