Today I learned
오늘은 데이터베이스를 이중화 작업을 한다는 가정을 하고 데이터베이스를 이중화하려면 어떤 식으로 해야 하는지 생각해 보고 공유하는 시간을 가지고 데이터모델링에 대해서 가볍게 학습했다 그리고 타입스크립트 학습을 진행했다
데이터베이스를 이중화하는 작업에서 내가 생각한 방법은 마스터 데이터베이스와 스탠바이 데이터베이스를 준비하고 일정한 시간이 지나면 스탠바이 데이터베이스가 마스터 데이터베이스를 싱크 하는 방식으로 생각했다
이렇게 이중화를 하면 정해진 시간 전에 마스터 데이터베이스가 다운이 된다면 스텐바이 데이터베이스는 씽크전의 데이터베이스를 가지고 있기 때문에 데이터손실이 발생한다고 생각을 했다
서로 아이디어를 공유하면서 제일 좋은 방법이라고 생각을 한 방법은 데이터베이스에 로그가 쌓이면 어느 시점에서 로그를 읽어 스탠바이 데이터베이스가 싱크를 진행한다 마스터 데이터베이스가 다운이 되어도 로그는 사라지지 않아서 로그를 읽어 싱크를 한다면 스탠바이 데이터베이스에도 데이터손실이 없다 여기서 또 생각해 봐야 할 문제가 있었다
싱크의 시간보다 더 빠르게 많은 양의 로그가 발생하면 어떻게 해야 할까? 바로 어디까지의 로그를 싱크를 했는지 저장해 두고 다음 싱크가 발생할 때 해당 로그 다음을 싱크 하게 만들면 된다 이렇게 데이터베이스의 다운타임을 최소화할 수 있게
이중화를 하는 방법에 대해서 생각해보면서 학습을 진행했다
타입스크립트를 학습하면서 type alias와 interface가 동일한 기능 같아 보여서 무엇을 사용해야 하는지 너무 궁금했다
궁금함을 해결하기 위해서 공식문서를 확인했다
타입스크립트 type alias와 interface의 비교!
type alias와 interface는 둘다 타입을 지정하는 데 사용한다
interface는 같은 이름으로 다시 선언하면 자동으로 확장이 된다 (선언 병합 Declaration merging)
type alias는 같은 이름으로 선언하면 에러가 발생한다
interface는 extends 키워드 type alias는 intersection( & )를 사용해서 확장이 가능하다
둘 다 implements 키워드를 사용해서 인터페이스 구현 가능하다
type alias는 intersection( & ), union( | ) 키워드와 tuple 사용이 가능하다 (intersection( & ), union( | ) 사용하면 extends, implements 키워드 사용 불가)
두 방식중 무엇을 사용할까?
공식문서에서는 type alias 대신 interface 키워드를 사용하는 것을 권장하고 있다
튜플이나 intersection( & ), union( | )을 필수적으로 사용하는 상황이 아니면 interface를 사용하자!!
오늘 배운점은 type alias와 interface를 상황에 맞게 사용해야 하는지 배웠고 데이터베이스의 이중화의 중요성과 데이터베이스를 이중화를 하는 방식에 대해서 배웠다
'과거공부모음' 카테고리의 다른 글
나의 개발일지 20220120 TIL(Today I learned) - module.exports와 export, 객체의 프로퍼티 확인 (0) | 2023.01.20 |
---|---|
나의 개발일지 20220119 TIL(Today I learned) - 크롤링 (0) | 2023.01.19 |
나의 개발일지 20220117 TIL(Today I learned) - logging (0) | 2023.01.17 |
나의 개발일지 20220116 TIL(Today I learned) - 실시간 주문 확인 (0) | 2023.01.16 |
나의 개발일지 WIL(Weekly I learned) 2023-01-15 (0) | 2023.01.16 |