Chapter 17: Transactions (Database System Conceptys 7th Edition) 을 공부하고 정리한 글 입니다. # 트랜잭션 이란? Single logical unit of work 데이터베이스 운영상 하나로 묶여야할 로직들을 모은 것 ex. 은행 송금 예시 (A가 B에게 10불을 송금한다.) 1. A의 잔액에서 10불을 차감한다. 2. B의 잔액에 10불을 더한다. "송금"로직에서 이 두 과정은 하나의 논리적인 작업으로 묶여야 하고, 1,2 과정 중 하나만 반영되거나 그래선 안 됨 # 트랜잭션의 특징 - ACID 원칙 앞선 송금 예시처럼 트랜잭션은 다음 네 가지 원칙 지켜야한다. Atomicity 트랜잭션은 한번에 반영되거나 전체 반영되지 않아야 한다. (All or..
11/26(토)에 DDD 동아리 중간발표를 가졌다. 각 팀은 지금까지 진행한 프로젝트 진행상황을 공유하는 자리였다. 우리 팀은 방탈출 관련 서비스를 제작 중인데, 중간에 아이디어가 기술적 한계에 부딪혀 2번 정도 엎어져서 생각보다 늦게 시작한 감이 없잖아 있었다. 그런데 중간발표를 보니 다른 팀도 비슷한 거 같아서 조금 마음이 놓였다... 동아리를 하면 좋은 점중 하나는 정말 다양한 사람을 만나볼 수 있다는 점 같다. 13년 차 백엔드 개발자 분도 있고, 카카오 계열, 네이버 계열 대기업 소속 현업자 분들도 활동을 하고 계셨다. 다들 직장인 분들이라 바쁘실 텐데도, 열심히 준비해서 발표를 해주셨다! 우리 팀도 이제 기획도 어느정도 윤곽이 잡혀서 디자인도 와이어프레임이 나왔고, 개발도 시작돼서 나름 순조롭..
처음으로 개발자 컨퍼런스에 다녀왔다. 포스트 코로나 시대로 접어들면서 오프라인 컨퍼런스가 많이 늘어나서 앞으로도 많은 관심을 가지고 적극적으로 참여해볼 예정이다. 이번에 참석한 컨퍼런스는 GDG에서 주관하는 DevFest 2022 - GDG Songdo, Incheon & GDSC Inha 였다. 입장권은 학생 입장권으로 만원 정도 Festa를 통해서 구입했다. 발표 주제는 다음과 같았다. GDG에서 주관해서 다 구글 관련 기술이었는데 백엔드 관련 세션은 좀 적어서 아쉬웠지만, 사실 백엔드 외에 다른 개발 영역에 대한 인사이트를 넓히고 싶어서 참여한 것도 있었다. 특이하게도 오후부터 저녁늦게까지 별도의 식사시간 없이 진행했다! 돔 형태로 생긴 강연장에서 발표를 진행했다. 입장하니 스티커를 주셨다. 스프링..
갑자기 새벽에 CI/CD 파이프라인이 먹통 된 거 같다는 소식을 받고 달려와서 확인해보니, 이번에는 신기하게도 처음보는 EC2 timeout 문제를 직면했다. SSH 접속을 시도해봤는데 timeout 뜨길래 EC2 관련 문제구나를 직감했다. AWS 대시보드로가니 연결성 검사에 실패했다는 상태 검사를 볼 수 있었다. 무슨 이유인지는 아직도 모르겠으나, 일단은 EC2 인스턴스를 중지 -> 시작 하는 방식으로 해결했다. (재부팅은 안 되더라...) 혹시라도 나중에 또 비슷한 현상이 발생하면 인스턴스를 중지(종료 아님!)후 재시작 해볼 것을 권장한다.
https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 더보기 해답 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO WHERE FAVORITES IN (SELECT MAX(f.FAVORITES) FROM REST_INFO f GROUP BY FOOD_TYPE) GROUP BY FOOD_TYPE ORDER BY FOOD_TYPE DESC 특정 칼럼에 대해서 최대값인 튜플을 찾아야 할 때 ..
https://school.programmers.co.kr/learn/courses/30/lessons/59413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 0~23시 시간을 담은 칼럼은 어떻게 생성할까? 힌트 : WITH RECURSIVE 더보기 해답 WITH RECURSIVE HOURS AS ( SELECT 0 AS HOUR UNION ALL SELECT HOUR+1 FROM HOURS WHERE HOUR < 23 ) SELECT h.HOUR HOUR, COUNT(DATETIME) COUNT FROM HOURS h LEFT OUTER JOIN AN..
https://school.programmers.co.kr/learn/courses/30/lessons/131537 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 더보기 해답 select date_format(t.sales_date, '%Y-%m-%d') sales_date, t.product_id, t.user_id, t.sales_amount from ( select online_sale_id, user_id, product_id, sales_amount, sales_date from online_sale union select offline_sale..
간혹 매우 큰 자리수의 숫자를 저장해서 사용해야 할 때가 있는데, 자바8 버전부터 지원하는 숫자 리터럴(Numeric Literals) 형식을 사용하면 매우 편리하게 표현할 수 있다. 숫자를 끊고 표기하고 싶은 부분에 언더스코어(_)를 첨가해주면 된다. 이러면 한눈에 100만임을 파악할 수 있어서 편리하다. 당연히 코틀린도 지원된다. 여담으로 파이썬, 스위프트, C++, C#, 자바스크립트 등 다양한 언어에서도 지원한다.