본문 바로가기

언어 & 라이브러리30

[SQL] 프로그래머스 SQL 고득점 KIT 문제 풀이 정답 -2 JOIN 풀이 없어진 기록 찾기 -- 코드를 입력하세요 SELECT outs.ANIMAL_ID, outs.NAME from ANIMAL_OUTS as outs left join ANIMAL_INS as ins on outs.ANIMAL_ID=ins.ANIMAL_ID where ins.ANIMAL_ID is null order by outs.ANIMAL_ID 있었는데요 없었습니다 SELECT ins.ANIMAL_ID, ins.NAME FROM ANIMAL_INS as ins JOIN ANIMAL_OUTS as outs ON ins.ANIMAL_ID = outs.ANIMAL_ID WHERE ins.DATETIME > outs.DATETIME ORDER BY ins.DATETIME 오랜 기간 보호한 동물 1 .. 2022. 4. 2.
[SQL] 프로그래머스 SQL 고득점 KIT 문제 풀이 정답 -1 SELECT 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS 역순 정렬하기 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = "Sick" 어린 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NOT INTAKE_CONDITION = "Aged" 동물의 아이디와 이름 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS 여러 기준으로 정렬하기 SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER B.. 2022. 3. 30.
[레디스] 레디스 클러스터를 도커에서 구성해보자 레디스 클러스터란? 센티넬보다 발전된 형태로 멀티 마스터 구조를 지원합니다. 샤딩을 지원해 데이터 분산으로 가용성을 높입니다. Failover 기능으로 센티넬 없이 자동으로 노드 관리를 해줍니다. cluster는 스케일 아웃이 가능합니다. 확장성이 좋습니다. [Deprecated] 스케일 아웃 시에 해시 알고리즘의 이슈를 피하기 위해 Consistent Hashing을 적용해 모든 키의 재매핑을 막고 평균적인 키만 재매핑 시켜줍니다. 레디스 클러스터와 Consistent Hashing Tech Note 정보 stdio.h 님이 작성하신 글입니다. 카테고리: [ NoSQL ] 게시됨: 03 December 2019 작성됨: 03 December 2019 최종 변경: 03 December 2019 조회수: .. 2022. 3. 17.
[레디스] 메모리 관리 기법 RDB vs AOF 차이 레디스 노드 로그를 분석하다가 RDB와 AOF라는 메모리 관리 방식에 대해 알게 되어 궁금증이 생겨 찾아보게 되었습니다. 데이터의 영속성을 위한 두 가지 방식입니다. RDB(Redis DataBase) 스냅샷과 비슷한 역할을 합니다. 특정 시점의 메모리 데이터를 전부 바이너리 파일로 저장합니다. AOF 파일보다 사이즈가 작아 로딩이 빠릅니다. 저장 방법은 redis.conf의 save로 설정합니다. save 10 1: 10초간 1번 이상 변경 시 저장 여러 개도 지정해 하나라도 만족하면 수행합니다. 메모리를 많이 사용합니다. 대규모 데이터에 적합합니다. AOF(Append Only File) appendonly.aof에 저장됩니다. INSERT,UPDATE,DELETE 명령 수행 시마다 기록됩니다. ap.. 2022. 3. 17.
[레디스] 레디스 Master-Slave를 도커에 올려보자 이번 포스팅에서는 Master - Slave를 구성하고 도커에 올려보고 장애 시 어떤 로직이 발생하는지 알아보겠습니다. Sentinel Mode를 활용해 마스터 슬레이브를 감시하는 노드도 함께 만들어보겠습니다. docker compose를 활용하면 쉽게 노드를 구성할 수 있습니다. 구조는 Master 1, Slave 2, Sentinel 3개로 구성하겠습니다. 센티넬은 최소 3개 이상 홀수로 구성해야 합니다. docker-compose.yml version: '2' services: # master : bitnami/redis:6.2.6 redis-master: hostname: redis-master container_name: redis-master image: bitnami/redis:6.2.6 e.. 2022. 3. 17.
[레디스] 레디스에 대해 알아보자 레디스란?? NoSQL으로 Key-Value 타입 저장소이다. 영속성을 지원하는 인메모리 데이터 저장소이다. 읽기 성능 증대를 위해 Replication 지원. 쓰기 성능 증대를 위한 샤딩을 지원. 문자열뿐만 아니라 리스트, 해시, 셋 등 다양한 데이터 형식을 지원. 1ms 이하 빠른 응답시간 지원한다. 파티셔닝 지원으로 스케일 아웃이 쉽다. 레디스와 멤캐시드와의 차이 멤캐시드 또한 메모리 객체 시스템 멤캐시드는 멀티쓰레드를 지원해 스케일업을 통해 많은 다중 작업 처리가 가능하지만 레디스는 싱글 스레드 기반이다. 멤캐시드는 문자열만 지원한다 그러나 레디스는 문자열뿐만 아니라 리스트, 해시, 셋 등 다양한 데이터 형식을 지원한다. 스냅샷을 지원해 장애 상황시 복구에 이용할 수 있다. Master-Slave.. 2022. 3. 17.
자바 Optional이란 Optional 이란 NullPointerException을 피하기 위해 만들어진 클래스입니다. UserVO userVO = getUser(); if (userVO != null) { Address address = user.getAddress(); if (address != null) { String postCode = address.getPostCode(); if (postCode != null) { return postCode; } } } return "우편번호 없음"; 이렇게 Optional 사용하지 않으면 null 체크를 반드시 해야해서 번거로움이 많습니다. Optional userVO = Optional.ofNullable(getUser()); Optional address = userVO.m.. 2022. 2. 19.
카프카 명령어 정리 Docker에서 실행법 docker-compose -f docker-compose.yml up -d 카프카 쉘 진입법(kafka는 docker에 올라간 컨테이너 이름) docker exec -it kafka /bin/sh cd /opt/kafka_2.13-2.8.1/bin 으로 진입 ls로 확인하면 여러 파일이 있어 여기서 토픽 관련 명령어 수행 가능합니다. 카프카 토픽 생성 kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic {topic_name} repication-factor는 브로커 1개이며 partition 1개로 생성하는 명령어입니다. 권장 브로커는 3개입니다. 카프카 토.. 2022. 2. 12.
스프링에서 카프카 시작하기 진행중인 프로젝트에 적용하기 전에 간단하게 카프카로 보내는 프로젝트를 만들어 보겠습니다. 1. 프로젝트 생성 start.spring.io에서 gradle, spring boot 2.5.9 버전 dependency에 spring web과 kafka, lombok, websocket을 추가해주세요. 2. 설정 값 생성 클래스 생성하셔서 아래 값을 기입해주세요. 토픽과 그룹 아이디, 주소를 주입해줄거에요. public class KafkaConstants { public static final String KAFKA_TOPIC = "kafka"; public static final String GROUP_ID = "test"; public static final String KAFKA_BROKER = "loc.. 2022. 2. 9.
아파치 카프카란? 아파치 카프카란 대용량, 대규모 메시지 데이터 처리하기 위한 분산 메시징 플랫폼입니다. 카프카를 쓰는 이유? 서버가 늘어나면서 타겟이 한 곳이 아니라 여러 곳으로 분산해서 데이터를 보내게 됩니다. 실시간 트랜잭션 처리와 비동기 처리가 이뤄져야 하지만 관리하는 플랫폼이 없어 파이프라인 관리가 어려워집니다. 카프카는 송신자와 수신자 사이에 위치에 적절하게 메시지를 분리해줍니다. 송신자(Publisher): 카프카에 데이터를 전송만 담당한다. 누가 받는지는 신경 쓰지 않습니다. 수신자(Subscriber): 수신자는 카프카에 원하는 토픽을 구독하고 데이터를 받습니다. 누구에게 보낼지 신경 쓰지 않아도 되며 수신자는 원하는 토픽의 메시지만 가져올 수 있습니다. 유지보수, 트래픽, 에러 처리 등에 대해 유리해집니.. 2022. 2. 8.
SQLZOO The JOIN operation 문제 풀이 1. Modify it to show the matchid and player name for all goals scored by Germany. To identify German players, check for: teamid = 'GER SELECT matchid,player FROM game join goal on matchid=id WHERE teamid='GER' 2. Notice in the that the column matchid in the goal table corresponds to the id column in the game table. We can look up information about game 1012 by finding that row in the game table .. 2022. 1. 19.
해커랭크 HackerRank New Companies Advanced Select 문제 설명 Given the table schemas below, write a query to print the company_code, founder name, total number of lead managers, total number of senior managers, total number of managers, and total number of employees. Order your output by ascending company_code. Note: The tables may contain duplicate records. The company_code is string, so the sorting should not be numeric. For example, if the compan.. 2022. 1. 19.