목록데브코스 웹 백엔드 (15)
영권's
트랜잭션 소개 테이블 내용을 변경하는 SQL들이 연달아 실행되며 이것들이 마치 하나의 SQL처럼 다 같이 성공하던지 아니면 실패 해야 한다면 트랜잭션의 사용이 필수이다. 트랜잭션이란? Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법 이는 DDL이나 DML중 레코드를 수정/추가/삭제한 것에만 의미가 있음 SELECT에는 트랜잭션을 사용할 이유가 없음 BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용 ROLLBACK을 사용하여 되돌릴 수 있음 트랜잭션의 좋은 예 은행 계좌 이체 계좌 이체: 인출과 입금의 두 과정으로 이뤄진다. 만일 인출은 성공했는데 중간에 에러가 나서 입금이 실패한다면 잘못된 것이다. 이 두 과정은 동시에 성공하던지 실패해야 한다..
JOIN SQL 조인은 두 개 이상의 테이블들을 공통 필드를 가지고 통합 스타 스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용 JOIN의 결과로 양쪽의 필드를 모두 가진 새로운 테이블을 만들어짐 조인의 방식에 따라 다음 두 가지가 달라짐 어떤 레코드들이 선택되는지? 어떤 필드들이 채워지는지 JOIN 문법 SELECT A.*, B.* FROM raw_data.table1 A _/* INner, LEFT, RIGHT, CROSS */ JOIN raw_data.table2 B ON A.key1 = B.key1 and A.key2 = B.key2 WHERE A.ts >= '2019-01-01'; JOIN 시 고려해야 할 점 먼저 중복 레코드가 없고 Primary key의 uniqueness가 보..
MySQL 소개 1995년 스웨덴 회사였던 MySQL AB에 의해 개발된 관계형 데이터베이스 오픈소스로 시작됨 My는 개발자 중 한 사람의 딸의 이름이었음 2008년 썬 마이크로시스템이 MySQL AB를 $1B를 주고 인수 2009년 오라클이 썬을 인수하면서 MySQL이 유료화 여부가 쟁점이 됨. 2010년 MySQL의 처음 개발자였던 Monty가 MySQL과 호환이 되는 MariaDB라는 오픈소스 개발 MySQL 특징 한동안 웹개발 표준 기술 스택 중의 하나였음 LAMP : Linux, Apache, MySQL, PHP 지금도 PostgreSQL와 함께 가장 널리 쓰이는 프로덕션용 관계형 데이터베이스 용량 증대(Scaling) 방식 Scale-Up : 서버에 CPU와 Memory 추가 Scale-Out..
이 글은 한기용님의 요즘 세상에서의 배움이란 어떤 것인지에 대해서 말씀을 듣고 여러가지 생각이 들어서 10일동안의 회고 및 앞으로의 다짐과 나중에 데브코스 과정중 혹은 취업 이후에라도 스스로 나태해졌을 때 다시 한번 나의 마음을 다잡을 수 있기 위해 쓰게 되었다. 배움에는 정체기가 항상 존재한다. 가장 중요한 것은 이걸 즐기면서 해당 구간을 버틸 수 있어야한다. 내가 뭘 모르는지 생각해봐야 한다. 내가 어디서 막혔는지 구체적으로 질문할 수 있나? 잘 하는 사람 보고 기죽지 않기 한기용님이 말씀해주신 것중 첫 번째로 잘 하는 사람보고 기죽지 않기라고 하셨는데 나도 예전에 이런부분을 실제로 많이 느낀부분이 있었다. 그 경험이 무엇이냐면 나는 운동을 좋아해서 고양시 보디빌딩 대회에 나가서 입상을 한 적이 있다..
데이터베이스가 왜 필요한가? 모든 IT서비스는 데이터를 만들어내고 이는 기록되어야 함 예) 쿠팡에서 회원 가입시 회정정보 저장 필요, 구매 관련 정보 저장 필요 등등 어디에 이런 데이터를 저장할까? 프로덕션 관계형 데이터베이스 어떤 서비스의 운영에 필요한 데이터를 저장하는 곳(MySQL, PostgreSQL ,... ) 빠른 처리속도가 중요함 vs 데이터 웨어하우스 관계형 데이터베이스 데이터를 구조화된 테이블들의 집합으로 구성하여 저장하고 관리 개발자라면 잘 알아야하는 기본 기술 관계형 DB의 프로그래밍 언어가 SQL 데이터 분석을 위한 데이터베이스 데이터 웨어하우스 회사 관련 데이터를 저장하고 분석함으로써 의사결정과 서비스 최적화에 이용 BigQuery, Snowflake, MySQL ... 처리속도 ..
함수형 인터페이스란 추상 메서드가 단 한개만 있는 경우 해당 인터페이스는 함수형 인터페이스 입니다. static 메서드나 default 메서드의 존재 여부는 상관없습니다. @FunctionalInterface 어노테이션을 통해 컴파일 타임에서 함수형 인터페이스인지 검증할 수 있습니다. 원래 인터페이스를 인스턴스로 만들기 위해서는 Implements 해서 구현한 클래스를 사용하거나 익명 구현 클래스를 사용하는 방법이 있었습니다. 자바 8에서부터는 추상메서드가 하나인 함수형 인터페이스의 경우에는 좀 더 줄여서 쓸 수 있는 람다 표현식이 있습니다. 메소드 레퍼런스(Method Reference)는 Lambda 표현식을 더 간단하게 표현하는 방법입니다. 람다가 하는 일이 기존 메서드 또는 생성자를 호출하는 거라..