일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Vue.js
- 코테
- hash table
- 알고리즘
- CSV
- 코딩테스트
- GitHub
- Trie
- Priority Queue
- Back tracking
- aws
- django
- Algorithm
- SWEA
- 시뮬레이션
- boj
- JavaScript
- Bruth Force
- 모의SW역량테스트
- Linked list
- gpdb
- Python
- DFS
- spring boot
- BFS
- programmers
- SQL
- 알고리듬
- Data Structure
- 구현
- Today
- Total
목록분류 전체보기 (177)
hotamul의 개발 이야기

Path Enumeration Adjacency Lists(대댓글 기능 데이터 모델링 #1 (Adjacency List) 참고)는 트리에서 주어진 노드의 여러 계층의 부모/자식 노드를 한 번에 검색하는데 비용이 많이 든다. Path Enumeration은 이러한 문제를 문자열을 이용해 각 노드의 속성으로 저장함으로써 해결할 수 있다. CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, path VARCHAR(1000), post_id BIGINT UNSIGNED NOT NULL, author BIGINT UNSIGNED NOT NULL, comment_date DATETIME NOT NULL, comment TEXT NOT NULL, FOREIGN KEY (..

사용자들이 댓글을 달고 서로에게 대답하면서 토론 스레드를 만들 수 있는 서비스를 개발할 때 각 댓글들이 어떤 댓글의 답변인지 알 수 있도록 아래와 같이 parent_id를 이용해서 간단하게 Comments 테이블을 구성할 수 있다. CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT NOT NULL, FOREIGN KEY (parent_id) REFERENCES Comments(comment_id) ); 그런데 딱 봐도 위와 같은 테이블 구성은 하나의 SQL 쿼리로 모든 댓글 연결들을 조회하는 것이 어려워 보인다. 바로 자식 댓글까지는 쉽게 얻을 수 있지만, 댓글 스레드는 무한히 생성될 ..

Start Schema ⭐️ What is Start Schema? Star Schema란 data warehouse, data marts와 같은 OLAP(Online Analytical Processing)에 적합한 multi-dimensional 데이터 모델이다. Star Shcema는 주로 대용량 데이터 셋을 조회하는데 최적화되어있다. 1990년대 Ralph Kimball에 의해 소개된 Star Schema는 데이터의 저장, history 유지, 데이터 업데이트를 효율적으로 처리하면서 반복적인 비즈니스의 정의의 중복을 줄이고 data warehouses에서 데이터를 집계하고 필터링하는데 빠르게 도와준다. Fact Tables and Dimension Tables Star Schema는 데이터를 Di..
>>> number = 123 >>> number 123 >>> del number >>> number Traceback (most recent call last): File "", line 1, in NameError: name 'number' is not defined Python에서 del keyword를 사용하면 위와 같이 number은 더 이상 사용할 수 없게 된다. number에 접근하려고 하면 더 이상 해당 변수가 없기 때문에 NameError가 발생한다. 하지만 del은 객체를 제거하는 것이 아니라 변수와 같은 reference를 제거하는 것이 주요 목표이다. 다음 이상한 예시를 확인해 보자. >>> class MyClass: ... def __del__(self): ... print("M..

각 서비스 마다 데이터 베이스가 따로 존재하는 Database per service 아키텍쳐를 사용하고 있을 때 각 서비스에 존재하는 데이터 베이스 일관성(consistency)을 어떻게 보장할 수 있을까? Two-Phase Commit Two-phase Commit(2PC)이란 여러 서비스에 거쳐 원자성 트랜잭션 commit을 달성하는, 굉장히 고전적인 방법이다. 2PC에서는 일반적으로 단일 서비스 트랜잭션에는 없는 Coordinator(트랜잭션 관리자)를 사용한다. Coordinator는 각 서비스에 준비 요청을 보내서 commit 가능 여부를 묻게 되고, 서비스의 응답에 따라 commit할지 rollback할지 결정한다. 모든 서비스가 정상적인 OK 응답을 하면 Coordinator는 commit ..
@Configuration annotation은 @Component라는 meta annotation으로 만들어진 composed annotation이다. (Meta Annotation, Composed Annotation) 하지만 @Component와는 다른 점이 바로 proxyBeanMethods 라는 것이다. proxyBeanMethods = false 기본적으로 @Configuration annotation의 proxyBeanMethods는 true이다. 그럼 proxyBeanMethods가 false일 때와 true일 때와 뭐가 다른 걸까? @Configuration annotation에 대해 이해하기 위해 아래와 같은 테스트 코드를 만들어봤다. public class ConfigurationTe..
Spring Boot는 Annotation을 적극적으로 활용하고 있다. 애플리케이션 로직을 담고 있는 클래스에 자주 사용되는 @RestController, @Service, @Reposeitory와 같은 익숙한 Application logic bean annotation들은 사실 모두 Composed Annotation (합성 애노테이션)으로 Meta Annotation을 조합해서 사용한 Annotation이다. 그럼 Meta Annotation이 뭘까? Meta Annotation Meta Annotation이란 다른 Annotation에서 사용되는 Annotation을 말한다. (@Service Annotation을 살펴 보면 @Component Annotation이 사용된 것을 확인할 수 있는데 이..
이전 포스트(Spring Boot가 뭔데?)에서 Spring Boot가 어떻게 시작되었고 어떤 기술인지 간단하게 살펴보았다. 이번에는 Spring Boot가 어떻게 독립 실행 될 수 있는지 알아보자. Standalone executable jar처음 Spring Boot 프로젝트를 생성하고 jar 파일로 빌드한 뒤 실행하면 아래와 같이 Spring 애플리케이션이 실행되는 것을 확인할 수 있다.gradle을 빌드 도구로 사용할 경우 ./gradlew bootJar 명령을 실행하면 build/libs 아래에 jar 파일이 생성된다. JAR: Java Archive, Java 애플리케이션이 동작할 수 있도록한 압축 파일이며 java runtime environment(jre)만 있어도 실행 가능하다. $ ja..
현재 Spring Boot를 현업에서 메인 기술로서 사용하고 있지만 동작 원리와 사용 방법에 있어서 왜? 어떻게? 라는 궁금증이 자꾸만 생겨 Spring Boot가 무엇인지, 왜 그렇게 동작하는지, Spring과는 어떻게 다른지 초점에서 정리해보고자 한다. Sprint Boot의 시작 Improved support for 'containerless' web application architectures [SPR-9888] · Issue #14521 · spring-projects/spring-framework 2012년 Spring 프레임워크 프로젝트 이슈로 등록된 "Containerless 웹 개발 아키텍처 지원" 요청에서 논의와 개발이 시작되었다. (위 issue가 생성되고 약 1년 뒤 아래와 같은 ..

What is Prometheus? Prometheus SoundCloud에서 개발된 애플리케이션이나 서버, OS 등 다양한 대상으로 부터 지표를 수집/모니터링할 수 있는 tool kit으로, 지표 수집을 통한 모니터링을 주요 기능으로 하고 있다. Prometheus의 아키텍쳐는 다음과 같다. Pulling Prometheus는 Pulling 방식으로 데이터를 수집한다. 설정 파일의 모니터링 대상 목록에 대한 IP나 기타 접속 정보(prometheus.yml파일의 scrape_config)를 바탕으로 모니터링 대상의 자원 정보(metric)를 읽어 온다. 만약에 읽어오려는 정보가 Prometheus 데이터 포맷을 지원하지 않는다면 별도의 exporter를 이용해서 쉽게 읽어올 수 있다.(Node Expo..