공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/데이터베이스 6

if kakao 2021 - PostgreSQL ecosystem

https://if.kakao.com/session/59 if(kakao)2021 함께 나아가는 더 나은 세상 if.kakao.com PostgreSQL EcoSystem 1996년 오픈소스 프로젝트로 오픈됨. 현재까지도 1년에 한 번은 메이저 버전이 오픈됨. Extension: 다양하고 실험적인 기능을 패키지 형태로 제공하는 기능. 예시: 데이터 암호화 기능 (pg), pivot table 쿼리를 쉽게 구현할 수 있는 tablefunc. FDW : Foreign Data Wrapper 원격지의 데이터를 로컬 table처럼 사용할 수 있게 해주는 extension. 원격 데이터 + 로컬 데이터 join이나 DML 실행이 가능함. 데이터 처리 로직을 보다 간단히 구현할 수 있음. Orafce : 오라클과 ..

Transaction Isolation - MySQL과 Postgresql 비교

Transaction Isolation Level / read phenomena ACID 4요소 중 하나가 isolation. 가장 높은 수준의 isolation -> all concurrent txn will not affect each other. 반대로 말하면, txn이 다른 txn에게 영향을 줄 수 있는 정도가 구분된다는 뜻. 이걸 Read Phenomenon이라 부른다. Dirty Read : uncommitted txn값을 읽어들이는 것. txn이 commit일지 rollback일지 알 수 없기 때문에 incorrect data를 사용하게 될 가능성이 높음 Non-Repeatable Read : 동일한 쿼리 요청을 했는데 응답값이 달라지는 경우 Phantom Read : 2와 비슷하지만, 하나..

빠르게 정리하는 데이터베이스 (3) Normalization

Database Normalization DB 정규화: 목적저장되는 데이터의 중복을 줄이고불필요한 데이터 변경을 최소화하며단순한 쿼리로 원하는 데이터를 얻기 위함. 예컨대 위와 같은 테이블 구조에서university 이름과 주소는 서로 의존적임. (일반적으로) 이름이 바뀌면 주소도 같이 바뀌어야 함.정규화 관점에서는 이런 형태의 데이터를 Redundancy로 취급한다.따라서, 서로 의존성을 띄고 있는 university 이름 / 주소 정보는 별도의 테이블로 만든 뒤, primary key를 Student 테이블에 매핑한다.제1정규화 (1NF) 확장하기 쉬운 DB 테이블 구조여야 한다.모든 DB 테이블의 value는 atomic해야 한다하나의 컬럼에는 하나의 데이터 타입만 허용한다.컬럼명은 unique해야..

간단하게 GORM 다루어보기

https://www.youtube.com/watch?v=9koLNdEcSR0 위 영상에서 다룬 내용들을 정리했음. 2020년 8월 기준 영상이라, 영상 이후 변경 혹은 수정된 방식의 GORM 사용법으로 업데이트했다. GORM Code-first ORM. go code로 Create DB Schema, interact with DB with Writing SQL Query 등을 가능하게 함. https://gorm.io/docs/models.html package main import ( "fmt" "log" "gorm.io/gorm" "gorm.io/driver/sqlite" ) /* 테이블 정의하기 - gorm.Model을 struct의 정의부에 추가한다. - primary Key인 ID, creat..

빠르게 정리하는 데이터베이스 (2) - MySQL Stored Procedure

Stored Procedure SQL은 근본적으로는 non-procedure Language이지만, Stored Procedure가 있기 때문에 procedural Language 취급을 받기도 한다. 반복되는 작업 수행을 위해 서버에 저장해 둔 일련의 명령을 의미함. compiled Language만큼 빠르진 않지만 속도도 나쁘지 않음. Application Independent. 애플리케이션 구현 언어에 독립적으로 작동 가능하다. 애플리케이션에 필요한 기능을 모아두고, 매번 sql문을 생성하고 실행할 때보다 시간 / 돈 절약이 가능함. 애플리케이션은 DB와 통신하는데, 보통 여기가 bottleNeck인 경우가 많음. 직접 쿼리를 internet 통해서 DB 서버로 전송할 경우, 인터넷 속도가 곧 애플..

빠르게 정리하는 데이터베이스 (1) 기본개념, DB Structure

introduction What is SQL? (DB Management) SQL : 데이터베이스 서버가 Constructing Statements을 실행할 수 있도록 지원하는 데이터베이스용 언어. Database - 저장하고 싶은 데이터를 저장할 수 있는 공간. 정확한 정의는 "DBMS의 관리하에 놓여 있는 Persistent Data의 집합." Persistent Data : 일반적으로 컴퓨터 램에 올라간 데이터는 애플리케이션이 종료되면 사라짐. 애플리케이션이 종료되거나 컴퓨터가 꺼져도 계속 보존되는 데이터를 말함. DBMS : persistent Data가 저장된 데이터베이스를 관리하기 위한 서버. ex) MySQL. SQL을 실제로 데이터베이스에서 작동할 수 있도록 실행하며, 쿼리 최적화도 담당한..