본문 바로가기
반응형

전체 글242

[MySQL] Window 함수란? 종류? 행과 행 간의 관계를 쉽게 정의하기 위한 함수이다. 분석 함수나 순위 함수로 알려져 있다. 다른 함수와 중첩해서 사용하지 못하지만, 서브쿼리에는 사용 가능 하다. SELECT WINDOW_FUNCTION(ARGUMENTS) OVER (PARTITION BY 칼럼 ORDER BY WINDOWING절) FROM 테이블명; 종류 그룹 내 순위(RANK) 관련 함수 RANK, DENSE_RANK, ROW_NUMBER 그룹 내 집계(AGGREGATE) 관련 함수 SUM, MAX, MIN, AVG, COUNT 그룹 내 행 순서 관련 함수 FIRST_VALUE : 가장 먼저 나온 값 출력 LAST_VALUE : 가장 나중에 나온 값 출력 LAG : 이전 값을 출력 LEAD : 다음 값을 출력 그룹 내 비율 관련 함수.. 2023. 1. 7.
[MySQL] Join의 종류 Join 이란? 두개 이상의 테이블을 서로 연결하여 마치 하나의 테이블인 것처럼 데이터를 조회할 수 있다. Join의 종류 1. Inner Join 조건이 일치하는 행만 가져온다. (교집합) 2. Left Outer Join (Left Join) 왼쪽 테이블의 정보는 모두 가져오고, 대상이 되는 테이블은 Join 조건이 일치하는 행만 가져온다. 3. Right Outer Join (Right Join) 오른쪽 테이블의 정보는 모두 가져오고, 대상이 되는 테이블은 Join 조건이 일치하는 행만 가져온다. 4. Full Outer Join 기준이 되는 테이블의 정보는 모두 가져오고, 대상이 되는 테이블은 Join 조건이 일치하지 않아도 가져온다. (Null로 채워짐) 저는 실무에서 주로 Inner Join과.. 2023. 1. 6.
Redis proxy 분산처리 - predixy sentinel 및 cluster를 지원하는 레디스 proxy ex) HAproxy, twemproxy redis-cli에서 쉽게 작업할 수 있다. 클러스터링 되어있는 레디스의 key값을 client 단에서 분산처리 할 필요 없이 predixy 서버에서 알아서 분산처리 해준다. 기본포트: 7617 참조 [레디스] 클러스터링 적용하기 - predixy 레디스 클러스터링 적용하기 predixy란 predixy는 haproxy와 같은 프록시 서버로서 클러스터링 되어있는 레디스의 키값을 클라이언트단에서 분산처리 해줄 필요 없이 predixy서버로 요청을 보내면 알아 co-pilot.tistory.com 2023. 1. 6.
테스트 코드 작성 프레임워크 - Spock 테스트 코드의 중요성 기능에 대한 불확실성 감소, 기능을 안전하게 보호 ex) A 기능을 추가 개발하여 오픈했는데, 기존 B 기능이 문제가 발생 개발 초기에 문제 발견에 도움을 줌 -> 개발 시간 단축 ex) 배포후 문제 발생 -> 원인파악 -> 다시 테스트 -> 코드수정 = 야근 Spock Groovy 언어를 이용하여 테스트 코드를 작성할 수 있는 프레임워크 Junit 보다 간결한 코드 - 주석으로 블록을 구분하고 메소드 이름 또한 제약사항이 많이 존재 given, when, then 코드 블록을 명확히 구분 -> 가독성이 좋다 메소드명을 문자열로 선언 가능하다 Spock 작성 순서 테스트 클래스는 Groovy 클래스로 생성, Specification 클래스를 상속 받는다. feature(테스트메서드).. 2023. 1. 4.
LoadBalancing 방법, 설계 LoadBalancing 방법 트래픽 분산 규칙 1 Round-Robin2 IP Hashing3 Hashing4 Least Connections5 Least Time6 Random 부하 분산 기준TCP ConnectionTrafficweightHTTP Request Count   LoadBalancer 세팅를 위해서 우선 서버의 이용가능 상태 판별해야한다. 서버 연결 확인 방법1 TCP, UCP 연결 정상 여부2 HTTP 연결 200 응답 여부2번이 health check 비용이 크고 확인 방법이 구체적이다. LoadBalancing 설계LoadBalancing을 통해 서비스 가용성을 높였지만 LoadBalancer 서버에 장애가 생긴다면?!HA(99.5% 이상의 가용성) 을 가능하게 하려면 DNS에 M.. 2023. 1. 2.
TCP/IP, TCP, UDP 란? TCP/IP 인터넷 표준 네트워크 프로토콜 TCP 규약과 IP 규약을 합쳤다. TCP (Transmission Control Protocol) OSI 4계층 - 전송 계층 올바른 순서로 패킷이 전달되도록 보장한다. -> 데이터를 패킷으로 분할하여 시퀀스 번호를 부여하고, 수신측에서는 이 번호를 확인하고 필요에 따라 순서를 정렬한다. 데이터 손실 없이 신뢰성이 높다. -> 수신 측에서 수신했다는 것을 알리는 패킷을 송신측에 전송한다. -> 송신 측에서 전송한 패킷이 도착했는지 여부를 판단할 수 있다. -> 일정 시간이 지나도 대답이 없는 경우 패킷을 다시 전송하여 손실을 방지한다. 수신확인과 재전송을 하므로 무거운 프로토콜이다. IP (Internet Protocol) OSI 3계층 - 네트워크 계층 네트.. 2023. 1. 1.
[PHP] redis 라이브러리 - Predis 알아보기 PHP에서 Redis 장비로의 접근을 위한 Redis Client 라이브러리이다. php >= 5.3 이 요구된다. Github 링크 Readme를 잘 보고 필요한것을 공부해야 한다. GitHub - predis/predis: A flexible and feature-complete Redis client for PHP. A flexible and feature-complete Redis client for PHP. - GitHub - predis/predis: A flexible and feature-complete Redis client for PHP. github.com 특징 redis-cluster 지원 (Redis >= 3.0) redis-sentinel 지원 client-side shardin.. 2022. 12. 30.
Redis - Serialize, Unserialize 란? 직렬화 저장의 단점 Serialize 객체를 데이터 스트림으로 만드는 것. 바이트 형태로 바꾸는 것 사용하는 곳: 파일 저장, 패킷 전송 시 파싱 가능한 데이터를 만들기 위해 사용한다. 그러면 Redis Set 할 때 시리얼라이즈해서 저장하는 이유는 무엇인지 궁금해서 찾다가.. 우아한 형제들 기술블로그에서 해당 부분에 대한 단점을 적은 글을 보았다. 자바 직렬화, 그것이 알고싶다. 실무편 | 우아한형제들 기술블로그 {{item.name}} 자바의 직렬화 기술에 대한 대한 두 번째 이야기입니다. 실제 자바 직렬화를 실무에 적용해보면서 주의해야 할 부분에 대해 이야기해보려고합니다. 자바 직렬화 실제 업무에서 사용 techblog.woowahan.com 긴 시간 동안 외부에 저장하는 의미 있는 데이터들은 자바 직렬화를 사용하지 .. 2022. 12. 29.
Redis data types 자료구조 유형 Redis 의 장점으로는 다양한 자료구조가 있는점이다. 주로 사용되는 대표적인 타입: String, Set, Sorted Set, Hash, List 그외 : Bitmap, HyperLogLog, Geospatial, Stream, Bitmap, Bitfield 이해하는데 도움이되는 그림 Redis CLI $ docker exec -it {Container id} redis-cli --raw Strings 단순한 insert 문을 대체하기 위해 사용한다. ex) 유저의 token 저장, 이미지 저장 등 SET : 데이터를 저장한다. GET : key의 값을 조회한다. INCR : key에 저장된 수를 1씩 증가한다. INCRBYSET : key에 지정한 수만큼 증가시킨다. DECR : key에 저장된 수.. 2022. 12. 29.
728x90
반응형