Database

· Database
키참조 무결성 : 참조할 수 없는 외래키 값을 가질 수 없음개체 무결성 : 기본키에 속하는 속성은 비어 있을 수 없음  테이블 vs 릴레이션테이블 : 데이터베이스의 데이터가 저장된 물리적 구조를 가리키는데 주로 쓰이는 용어릴레이션 : 데이터베이스 모델링에서 주로 쓰이는 용어  트랜잭션이 가지는 속성ACID원자성 (atomicity) : 하나의 트랜잭션은 모두 실행되거나 전혀 실행되지 않아야 함일관성 (consistency) : 트랜잭션의 실행 전후에 데이터베이스 상태가 일관되어야 함독립성 (isolation) : 여러 트랜잭션이 병렬 실행되는 경우에도 서로 간섭하지 않도록 격리 되어야 함영구성 (durability) : 완료된 트랜잭션의 실행 결과는 데이터베이스에 영구 보존되어야 함 ORM (Object..
INDEXIndex는 테이블에서 특정 찾기 작업을 빠르게 수행하기 위해서 MySQL이 별도로 만드는 데이터 구조를 말함컬럼별로 만들어짐PK나 FK로 지정된 컬럼은 기본적으로 Index를 갖게됌특정 컬럼을 바탕으로 자주 검색시 Index 생성은 큰 도움이 될 수 있음SELECT / DELETE / JOIN 빠르게 하고 INSERT / UPDATE는 느리게 함테이블에 너무 많은 INDEX를 추가하면 인덱스의 로딩으로 인한 오버헤드로 인해 시스템이 전체적으로 느려질 수 있음CREATE TABLE ryu_index ( id int NOT NULL auto_increment, user_id int not NULL, created timestamp not NULL default CURRENT_TIMESTAMP, c..
Stored ProcedureStored ProcedureDROP PROCEDURE IF EXISTS return_ryu;DELIMITER //CREATE PROCEDURE return_ryuBEGIN SELECT * FROM ryu;END //DELIMITER ;-- 띄어쓰기 중요하고 //는 $$도 상관없음 IN 파라미터 (입력 전용)DELIMITER //CREATE PROCEDURE return_ryu(IN channelName varchar(64))BEGIN SELECT * FROM ryu WHERE channel = channelName;END //DELIMITER ;CALL return_ryu('Facebook');-- 데이터를 직접 집어넣어서 프로시저를 돌릴 수 있음 INOUT 파라..
아래의 select를 자주 쓴다면SELECT s.id, s.user_idFROM session sJOIN channel c ON c.id = s.channel_id;아래처럼 등록 가능CREATE OR REPLACE VIEW test.session_details ASSELECT s.id, s.user_idFROM session sJOIN channel c ON c.id = s.channel_id;SELECT * FROM test.session_details;  View에 값 대입view에 값을 대입했는데 대입이 된다면 원래 테이블에 null 조건이 안걸려서 대입 된거원본 테이블을 확인하면 id만 들어가 있고 나머지 것들은 null이 들어감즉, 접근을 못하게 하거나 not null 형식 등등 제약을 해주어야 함
INNER JOIN양쪽 테이블에서 매치가 되는 레코드들만 리턴함양쪽 테이블의 필드가 모두 채워진 상태로 리턴됨대부분의 조인은 INNER JOIN LEFT JOIN왼쪽 테이블의 모든 레코들을 리턴함오른쪽 테이블의 필드는 왼쪽 레코드와 매칭되는 경우에만 채워진 상태로 리턴됨 FULL JOIN왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴함매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴됨LEFT JOIN(UNION VS UNION ALL) => 중복제거 / 중복 포함RIGHT JOIN CROSS JOIN왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 리턴함 SELF JOIN동일한 테이블을 alias를 달리해서 자기 자신과 조인함 -- InnerJoinSELECT * FROM vit..
String FunctionsLEFT(str, N)REPLACE(str, exp1, exp2)UPPER(str)LOWER(str)LENGTH(str)LPAD, RPAD // STRING의 길이가 짧을 경우 부족한 공간을 채워줌SUBSTRINGCONCAT  Type Castingcast(category as float)convert(expression, float)  GROUP BY와 함께 쓰이는 Aggregate 함수GROUP BY & Aggregate 함수[Aggregate 함수] COUNT, SUM, AVG, MIN, MAX, GROUP_CONCAT...SELECT LEFT(created, 7) AS mon, COUNT(1) AS session_countFROM prod.sessionGROUP ..
기초 문법SELECT 테이블들에서 레코드들을 읽어오는데 사용SELECT 필드이름1, 필드이름2FROM 테이블 이름WHERE 선택조건GROUP BY 필드일므1, 필드이름2 ORDER BY 피들이름 [ASC|DESC]LIMIT N  CASE WHENCASE WHEN 조건1 THEN 값1 WHEN 조건2 THEN 값2 ELSE 값3END 필드 이름  COUNT의 이해Null 1 1 0 0 4 3 value가 이와 같을 때COUNT(1) -> 7COUNT(0) -> 7COUNT(NULL) -> 0COUNT(value) -> 6COUNT(DISTINCT value) -> 4 DELETE FROM vs TRUNCATEDELETE FROM vs TRUNCATETRUNCATE 는 조건없이 모든 레코드 삭제, 속도가..
· Database
https://hangbok-archive.com/data/rdbms/%EC%84%9C%EB%B8%8C%EC%BF%BC%EB%A6%AC-vs-join/ SQL 성능 비교 : 서브쿼리 vs JOIN - H-A서브쿼리 vs JOIN : 서브쿼리와 JOIN 문은 데이터베이스에서 정보를 추출하는 두 가지 주요 방법입니다. 성능 차이는 데이터 양, 인덱스의 존재 여부, 데이터베이스 종류 등에 따라 다를 수 있습니hangbok-archive.com 해당 글을 보면 성능차이를 이해할 수 있습니다
· Database
트랜잭션Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법BEGIN; -- START TRANSACTION    A의 계좌로부터 인출;    B의 계좌로 입금;END; -- COMIT BEGIN = START TRANSCATIONEND = COMMITROLLBACK // 되돌리기 autocommit = true자동 commit트랜잭션 묶고 싶으면 따로 작성 필요MySQL은 기본이 trueSHOW VARIABLES LIKE 'AUTOCOMMIT' 확인가능SET autocommit = 0 or 1 변경가능autocommit = falseCOMMIT이 호출될 때까지 커밋안됌 DELETE FROM / TRUNCATE테이블에서 모든 레코드 삭제where 사용해 특정 레코드만 삭제 가능..
· Database/etc
Docker특정 프로그램과 (그 프로그램을 실행하는데) 필요한 기타 소프트웨어들을 하나의 패키지로 만듬으로써 해당 프로그램의 개발과 사용을 도와주는 오픈소스 플랫폼이 패키지를 먼저 파일 시스템 형태로 만드는데 이를 Docker Image라고 함Docker Image를 실행시킨 것을 Docker Container라고 부르며 응용프로그램에 해당 구조[Docker Container #1] [Docker Container #2][App A bin/libs] [App B bin/libs][Docker Engine][호스트 운영체제][컴퓨터] Docker Registry (Docker Hub)다양한 Docker Image들의 집합소Docker Image의 인스턴스가 결국 Docker Container
· Database
MySQL 특징용량 증대 방식Scale-Out : Master-Slave 구성일반적으로 클러스터 구성이라고 하지만 MySQL은 지원하지 않음 클라우드자원을 필요한 만큼 (거의) 실시간으로 할당하여 사용한 만큼 지불장점초기 투자 비용이 크게 줄어듬CAPEX (Capital Expenditure) vs OPEX (Operating Expense)리소르 준비를 위한 대기시간 대폭 감소Shorter Time to Market노는 리소스 제거로 비용 감소글로벌 확장 용이소프트웨어 개발 시간 단축Managed Service (SaaS) 이용  AWSEC2 - Elastic Cloud ComputeAWS의 서버 호스팅 서비스리눅스 혹은 윈도우 서버를 런치하고 로그인 가능가상 서버들이라 전용 서버에 비해 성능이 떨어짐..
· Database
프로덕션 관계형 데이터베이스 (RDBMS)(MySQL, PostgreSQL) 대표적   (마이시쿠얼~~)OLTP ( OnLine Transaction Processing)빠른 속도에 집중, 서비스에 필요한 정보 저장빠른 처리속도가 중요!구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지2단계로 구성됌가장 밑단에는 테이블들이 존재 (엑설의 시트)테이블들은 데이터베이스라는 폴더 밑으로 구성 (엑셀의 파일) 데이터 웨어하우스회사 관련 데이터를 저장하고 분석함으로써 의사 결정과 서비스 최적화에 사용Redshift, BigQuery, Snakeflake, HiveOLAP (OnLine Analytical Processing)처리 데이터 크기에 집중처리속도 보다는 구조화된 큰 데이터를 처리하는 것이 중요 ..
류가든
'Database' 카테고리의 글 목록