[TIL] 0809 Database 이것저것1
배운 것
1. 비교는 금물! 존버는 승리한다(?!)
프로그래머스 데브코스 데이터베이스 교육이 시작됐다. 한기용 강사님이 교육을 시작하면서 배움에 대해 이야기를 하셨다.
너무 공감되었고, 내가 지금 겪고 있는 과정이 너무 자연스러운 과정이라는 걸 확인할 수 있었다.
한기용 강사님께서 말하기를 배움 자체를 즐겨야 한다, 잘 하는 사람 보고 기죽지 않아야 한다, 라고 말씀해주셨다.
처음 코딩을 배웠을 때 1) 내가 뭘 모르는지 모름 2) 뭘 모르는지 알게 되면 나는 왜 이것도 모르지? 이 두 가지 생각 때문에 정말 힘들었다. 지금 생각해 보면 처음 배우니까 모르는건 당연했던건데 그땐 새로운걸 처음 배울 때 마주하는 못난 나 자신을 받아들이는것 자체가 힘들었다. 아무튼 어찌어찌 그 시기를 견디고 견뎌서 지금까지 왔고 지금은 이런 생각은 안 하게 됐다! 자연스레 안하게 된 건 아니고 자꾸 스스로를 갉아먹는 상황이 힘들어서 그 상황을 벗어나고자 여러 노력(?)과 생각을 했다.
일단 곰곰이 생각해 봤다. 현재 내가 바꿀 수 없는 것과 바꿀 수 있는 것이 무엇인지.
내가 바꿀 수 없는 것은
- 똑똑함(?)
- 전공
이 두 가지였다. 컴공을 나왔으면 이 필드에 대해서 더 많은 정보를 얻을 수 있었을 것이고, 내가 더 똑똑했더라면 빠르게 흡수할 수 있었을 것이다. 바꿀 수 없는 것에 미련을 가지는 것만큼 어리석은 일도 없다. 이 생각을 떨쳐버리려면 어떻게 해야 하지?
그래서 내가 바꿀 수 있는 것을 생각했다.
내가 바꿀 수 있는 것은
- 성실함
- 꾸준함
- 그냥 하기
이 세 가지였다. 그러니까 누구에게나 똑같이 주어진 시간을 최대한 잘 활용하는 거. 그거 말고 답이 없었다. 여러 분야에서 성공한 사람들의 인터뷰를 많이 찾아봤는데 공통점이 하나있었다. 꾸준히 그냥 하는 것. 그래서 꾸준히 그냥 해보기로 했다. 시간을 최대한 잘 활용해보기로 했다. 그리고 지금은 어느정도 안정감을 가지고 재미있게 학습하는 법을 배우게 됐다. 온전히 학습에만 몰두할 수 있는 이 시간이 너무 소중하고 즐겁다. 그러니 과정을 즐기자!
2. 관계형 데이터베이스
웹 / 앱 서비스에 필요한 데이터를 저장해주는 관계형 데이터베이스를 프로덕션 관계형 데이터베이스라고 지칭하며, MySQL / PostgreSQL 같은 관계형 데이터베이스는 빠른 처리속도가 중요하다.
그럼 MySQL, PostgreSQL는 어떤 차이를 가지고 있을까? 어떤 환경에 어떤 데이터베이스 적합할까?
MySQL | PostgreSQL | |
프로세스 방식 | Multi Thread | Multi Processe |
성능 | 간단한 트랜잭션에 더 뛰어나다. | 복잡한 쿼리 실행 환경에서 더 뛰어나다. |
Update 방식 | 별도 Rollback Segment를 사용한다.(PostgreSQL 보다 우수하다.) | 데이터와 같은 Block을 사용한다.(과거 행을 삭제하고 변경된 데이터를 새로운 행에 추가하는 형태이다.) |
Join | Nested Loop Join만 지원한다. | nested loop join, hash join, sort merge join 와 같은 다양한 Join을 지원한다. |
간단하게 서칭해본 결과로는,
- MySQL : 간단한 데이터 트랜잭션을 위한 데이터베이스가 필요한 웹 기반 프로젝트에 많이 사용된다.
- PostgreSQL : 데이터를 검증해야하는 대규모 시스템에 많이 사용된다.
+ 빠른 처리속도보단 큰 데이터를 처리하는 데이터베이스를 데이터 웨어하우스 관계형 데이터베이스라고 지칭하며 BigQuery / Spark 와 같은 것들이 있다.
+ 프로덕션 관계형 데이터베이스는 컴퓨터 1대에 들어가는 데이터베이스이다보니, 컴퓨터 1대에 들어갈 수 있는 메모리의 크기나 디스크 크기 한계가 있다.
3. Star schema
프로덕션 관계형 데이터베이스 에서는 보통 스타 스키마를 사용해 데이터를 저장한다.
스타 스키마는 fact 테이블과 dimension 테이블로 구성된다.
fact 테이블을 중심으로 dimension 테이블이 뻗어져 나오는 형태를 취하고 있어 스타라는 이름이 붙게 되었다.
데이터를 논리적 단위로 나눠 저장하고 필요 시 조인한다.
스타 스키마는 스토리지 낭비가 덜하고 업데이트가 쉽다는 장점이 있다. 그러나
여러 테이블을 조인해야하는 경우에 시간과 리소스를 써야하는 작업이기 때문에 속도 저하를 일으킬 수 있다는 단점이 있다.
4. Denormalized schema
단위 테이블로 나눠 저장하지 않아서 별도의 조인이 필요 없는 형태이다. 이는 스토리지를 더 사용하지만 조인이 필요 없기에 빠른 계산이 가능하며 컴퓨터 1대짜리의 솔루션이 아니라 다수의 컴퓨터로 구성이된다.(클러스터 구조)