전체 글 71

[MySQL] 비율별로 등급나누기 NTILE, PERCENT_RANK

프로그래머스 대장균의 크기에 따라 분류하기2https://school.programmers.co.kr/learn/courses/30/lessons/301649 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  # NTILE 풀이WITH COLONYGROUPS AS (SELECT ID, NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) AS GROUPRANKFROM ECOLI_DATA)SELECT ID, CASE WHEN GROUPRANK = 1 THEN 'CRITICAL' ..

SQL 2024.08.23

[MYSQL] 프로그래머스: 재귀문 (recursive) 사용하기 + 예제

WITH와 함께 recursive를 쓰면 재귀 서브쿼리를 만들 수 있다.구조는 do while문과 비슷한데, anchor member 부분에 초기 세팅 쿼리를 작성하고아래의 recursive member에 반복할 쿼리를 작성한 뒤union all로 두 쿼리를 이어주면 된다.가장 아래에는 재귀쿼리릐 중단조건을 작성해줘야 한다. 1. 프로그래머스 : 입양 시각 구하기(2)WITH RECURSIVE hours AS ( SELECT 0 AS hour UNION ALL SELECT hour + 1 FROM hours WHERE hour 0시부터 23시까지 각 시간대별로 발생한 입양 건수를 구하는 문제입니다.입양이 없었던 시간도 표시해야 하므로 0부터 23까지 틀을 만들어주기 위해 재귀쿼리가 필요합..

SQL 2024.08.06

[udemy] 데이터 베이스 엔지니어링 - 데이터베이스 내부 이해

1. 테이블과 인덱스가 디스크에 어떻게 저장되는지테이블은 행기반 / 열기반에 따라 저장 형태가 달라짐(행기반일 경우) 각 행별로 저장되며 페이지 단위로 저장됨-> 읽어올 때 한 행만 읽어오는 것이 아닌, 페이지 단위로 읽어온다페이지들은 '힙'이라는 자료구조에 저장되는데, 여기에 접근해서 데이터를 읽어오는 것은 큰 비용이 드는 일임-> 인덱스를 사용하면 비용을 줄일 수 있음- 인덱스 : 힙을 가리키는 포인터를 모아둔 자료구조 2. 행 기반 vs 열 기반 데이터베이스행 기반 데이터베이스열 기반 데이터 베이스읽기/쓰기에 최적화쓰기가 느림OLTP ( '운영'계 데이터 처리)OLAP ( '분석'계 데이터 처리)압축에 유용하지 않음압축에 좋음집계에 유용하지 않음집계에 좋음다중 컬럼에 유용한 쿼리다중 컬럼에 비효율적..

온라인강의 2024.07.03

[udemy] 데이터 베이스 엔지니어링 - Durabiltity

Durabiltity지속성은 고객이 데이터베이스에 만든 권한을 비휘발성 시스템 저장소에 지속시키는 과정입니다. 하지만 지속성을 위해서는 디스크에 저장해야 하므로 '느리다'고 말하곤 합니다.그래서 Postgre 데이터베이스는 메모리에 저장한 후 스냅샷을 찍어 디스크에 백업하므로 '빠르다'라는 점을 강조하기도 합니다. 다시 돌아와, 커밋된 트랜잭션에 의해 변경된 것들은 SSD, 하드드라이브같은 비휘발성 저장소에 저장되어야 합니다.지속성을 보장하기 위해서는 어떤 과정을 거칠까요? 디스크에 실제로 기록하고 지속성을 갖기 위해서는 시간이 걸리기 때문에 사용되는 몇가지 기술이 있습니다. 1. WAL그래서 데이터베이스에서는 변경 사항의 버전인 '델타'만 적용합니다.그리고 쓰기 전용 로그인 write ahead log..

온라인강의 2024.07.01

[udemy] 데이터 베이스 엔지니어링 - Consistency

Consistency일관성이란, 실제로 디스크에 있는 것과 데이터 모델이 일치해야한다는 원칙입니다.데이터가 디스크에서 일관성을 유지할 수 있지만, 데이터의 읽기는 여러 인스턴스가 동기화되지 않아 일관성이 없어질 수 있습니다. 참조무결성에 의한 불일치가 발생할 수 있습니다.예를 들어, 다음과 같은 데이터베이스가 있습니다.PICTURE_ID  (PK)BLOBLIKES1xx52xx1USER (PK)PICTURE_ID (PK) (FK)Jon1Edmond1Jon2Edmond4 1번 사진에 대한 좋아요는 5개이지만, 실제 2명의 유저만 좋아요를 누른 상태입니다.이는 좋아요를 눌렀다 취소하는 이벤트를 LIKES에 반영하지 않아 일관성이 깨진 경우입니다. 또한, Edmond는 4번 사진에 좋아요를 누른 기록이 있지만,..

온라인강의 2024.07.01

[udemy] 데이터 베이스 엔지니어링 - Atomicity

Atomicity원자성이란, 한 트랜잭션의 모든 쿼리는 성공해야 한다는 원칙입니다.즉 한 트랜잭션이 데이터베이스의 작업 단위이며, 분할될 수 없습니다.모종의 원인으로 실패한 쿼리가 있을 경우 해당 트랜잭션은 롤백되어야 합니다.만약 데이터 베이스가 다운되어 롤백할 수 없다면,데이터베이스가 다시 실행된 후 쿼리들이 성공했더라도 실패했다고 인지해야 합니다.해당 트랜잭션이 최종적으로 커밋되지 않았기 때문입니다.하지만 이러한 처리 방식은 데이터베이스의 종류에 따라 다릅니다. 예를들어, 다음과 같은 장부가 있습니다. ACCOUNT_IDBALANCE1$10002$500 Account 1에서 Account 2로 100$를 보낸다면 1. Account 1에서 -$1002. Account 2에서 +$100두 개의 쿼리가 ..

온라인강의 2024.07.01

[udemy] 데이터 베이스 엔지니어링 - Isolation

Isolation 고립성고립성은 동시에 발생하는 다른 트랜잭션과 완전히 고립된 상태에서 트랜잭션이 실행되는 결과입니다. 현재 진행 중인 내 트랜잭션이 다른 진행 중인 트랜잭션에서 발생한 변경 사항을 볼 수 있을까요?정답는 상황에 따라 다르다! 입니다.그래서 다양한 읽기 현상에 대해서 알아야 하는데요,  디버깅하기 어렵게 만드는 읽기 현상들을 해결하기 위한 고립수준까지 이어서 알아보겠습니다. Read Phenomena 읽기 현상들1. Dirty reads 더티 읽기다른 트랜잭션이 쓴 내용을 읽지만 실제로는 아직 커밋되지 않은 것을 읽는 현상트랜잭션 1트랜잭션 2상품 1의 판매량 15를 읽어옴  상품 1의 판매량에 5를 더해 20을 만듦판매량 20에 가격 10을 곱해 매출을 계산 커밋롤백=> 원래 매출 집계..

온라인강의 2024.06.30

[leet code] Add Two Numbers / JAVA (with chatGPT), 단일 연결 리스트, 얕은 복사

두 개의 음수가 아닌 정수를 나타내는 두 개의 비어 있지 않은 연결 목록 이 제공됩니다 . 숫자는 역순 으로 저장되며 각 노드에는 단일 숫자가 포함됩니다.두 숫자를 더하고 그 합계를 연결된 목록으로 반환합니다.숫자 0 자체를 제외하고는 두 숫자의 첫째 자리에 0이 포함되어 있지 않습니다. Input: l1 = [2,4,3], l2 = [5,6,4]Output: [7,0,8]Explanation: 342 + 465 = 807/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = ..

chatGPT와 함께 알고리즘을~

알고리즘 푸는데 챗GPT가 웬말이냐! 라고 할 수도 있지만...인공지능이 점점 똑똑해지는 요즘 시대에 기계보다 나은 인간이 되기 위해선상대를 우선 알아야 하는 것이 아닐까?그래서 chat GPT는 알고리즘을 어떻게 푸는지 체험해보기로 했다.집단지성 속에서 가장 좋은 방법을 뽑아 알려주니까그 코드를 분석하다보면? 내가 미처 몰랐던 방법들도 알 수 있겠지!그럼 레츠 고~

[OSI 7계층,TCP/IP 5계층] 3계층, 4계층

3계층 : 네트워크 network 계층ICMP 전송* ICMP : Internet Control Message Protocol, 네트워크의 연결성을 확인하고 오류를 보고받기 위한 프로토콜L3라우터가 ICMP 리퀘스트를 받았을 때 어디로 보낼지 결정하는 방법 : 라우팅 테이블을 보고 패킷이 1번 2번 어디에도 속하지 않을때 0으로 defalult 설정된 서브넷 마스크를 가진 포트로 패킷을 내보낸다. L2 스위치의 포워딩 테이블과 같은 역할 but 엔지니어가 직접 설정함 (CCNA, CCIE) 랜에서 랜으로 갈때, 다른 wan으로 갈때 2계층의 주소가 자동적으로 바뀌면서 넘어간다.망분리 : 서브넷 마스크는 같게, IP 주소 마지막 숫자는 다르게 - 하나의 망에서 쓸 수 있는 호스트의 수는 반으로 줄어듦 서브..

네트워크 2024.05.23