분류 전체보기 145

데이터 중심 애플리케이션 설계 (2장 데이터 모델과 질의 언어)

- 관계형 DB에서 다대다 관계를 표현할 때 어려움을 겪은 적이 있었는지? => Node.js에서 다대다 관계를 표현하기 위해 ORM을 사용할 때 TypeORM의 경우 테이블 간 가상의 연결 테이블을 만들어 주지만, Sequelize에서는 실제로 연결 테이블을 만들어줘야 하는 불편함이 있음  [1부 데이터 시스템의 기초]2장 데이터 모델과 질의 언어1. 관계형 모델과 문서 모델1.1 NoSQL의 탄생1.2 객체 관계형 불일치1.3 다대일과 다대다 관계1.4 문서 데이터베이스는 역사를 반복하고 있나?1.5 관계형 데이터베이스와 오늘날의 문서 데이터베이스2. 데이터를 위한 질의 언어2.1 웹에서의 선언형 질의2.2 맵리듀스 질의3. 그래프형 데이터 모델3.1 속성 그래프3.2 사이퍼 질의 언어3.3 SQL의..

데이터 중심 애플리케이션 설계 (1장 신뢰성/확장성/유지보수성 갖춘 애플리케이션)

- SLA(서비스 수준 협약서)에서 SLO(서비스 수준 목표)를 정하는 기준(응답 시간 중앙값 n초, 서비스 제공 시간 n.n% 이상)은 어떻게 정하는지?* "응답 시간 중앙값이 200밀리초 미만이고 99분위가 1초 미만인 경우 정상 서비스 상태로 간주하며 서비스 제공 시간은 99.9% 이상이어야 한다."  [1부 데이터 시스템의 기초]1장 신뢰성/확장성/유지보수성 갖춘 애플리케이션1. 데이터 시스템에 대한 생각2. 신뢰성2.1 하드웨어 결함2.2 소프트웨어 오류2.3 인적 오류2.4 신뢰성은 얼마나 중요할까?3. 확장성3.1 부하 기술하기3.2 성능 기술하기3.3 부하 대응 접근 방식4. 유지보수성4.1 운용성: 운영의 편리함 만들기4.2 단순성: 복잡도 관리4.3 발전성: 변화를 쉽게 만들기 [정리:..

내 코드가 그렇게 이상한가요 (9장 설계의 건정성)

- [전체] 11가지 경우와 관련해 실제로 겪은 문제 상황이 있었는지?- [전역 변수] '영향 범위를 최소화하도록 설계했지만 중복 코드가 많아진 경우' VS '전역 변수 등의 사용으로 영향 범위가 넓은 경우'?- [메타 프로그래밍] 실제로 메타 프로그래밍이 사용 된 경험? 사용한 이유? 장단점?- [패키지 구조] '기술 중심(계층형) VS 비즈니스 중심(도메인형)', 기술 중심 패키징이 더 효율적인 경우는?  9장 설계의 건전성을 해치는 여러 악마9.1 데드 코드9.2 YAGNI 원칙9.3 매직 넘버9.4 문자열 자료형에 대한 집착9.5 전역 변수9.6 null 문제9.7 예외를 catch하고서 무시하는 코드9.8 설계 질서를 파괴하는 메타 프로그래밍9.9 기술 중심 패키징9.10 샘플 코드 복사해서 붙..

[Monorepo] Turborepo 통한 모노레포 생성하기

풀스택으로 개발하는 프로젝트라 백엔드와 프론트엔드를 한번에 관리할 수 있도록 하는 모노레포(Monorepo)를 사용하고자 했다. * 모노레포에 대한 개념은 네이버D2 블로그에서 자세히 설명하고 있으니 아래 링크를 참고하면 좋겠다.1. 모노레포 개념 https://d2.naver.com/helloworld/09238842. 모노레포 도구 https://d2.naver.com/helloworld/7553804   Turborepo로 모노레포 생성하는 방법은 아래와 같이 간단하다. 1. turbo 전역설치npm install turbo --global2. 새 모노레포 생성npx create-turbo@latest 아래 사진과 같이 자동으로 구성된 것을 확인할 수 있다.=> turborepo 깃허브 레포지터리를..

[MySQL] 기본값은 decimal(10,0), 최대값은 decimal(65,38)

decimal(p,s) p는 전체 숫자의 자릿수, s는 소수점 이하 자릿수 가능한 값의 범위는 -(10^p - 1)/(10^s)에서 (10^p - 1)/(10^s)까지 decimal(3,1)인 경우 가능한 값의 범위는 -9.9에서 9.9까지 MySQL 기본값은 decimal(10,0), 최대값은 decimal(65,38) [출처] https://dev.mysql.com/doc/refman/8.3/en/fixed-point-types.html#:~:text=In%20standard%20SQL%2C%20the%20syntax,value%20of%20M%20is%2010. MySQL :: MySQL 8.3 Reference Manual :: 13.1.3 Fixed-Point Types (Exact Value)..

카테고리 없음 2024.04.02

[MySQL] 소수점이 있는 금액의 타입은 float? float, double 절대 금지! decimal 또는 string로 지정하자!

글로벌 서비스에서 환전한 금액이 아닌 해당 통화의 금액으로 데이터를 저장해야 하는 상황이 생겨 소수점이 있는 금액 데이터에 대해 고려하며 알게 된 사실이다. 소수점이면 float나 double이겠지라고 생각하고 DB 칼럼의 타입을 지정했다가는 근사치 값으로 연산이 이뤄지는 불상사가 일어날 수 있다. 아래 사진에서와 같이 MySQL 문서에서도 아예 제목 옆에 'Approximate Value(근사값)'라고 적고 있다. [출처] https://dev.mysql.com/doc/refman/8.3/en/floating-point-types.html 보다 직관적으로 말하지면 부동소수점(float, double)의 경우 아래와 같이 저장되고 출력된다. 1. FLOAT에 16777217을 입력하면 16777216이 ..

언어/MySQL 2024.04.02

내 코드가 그렇게 이상한가요 (3~4장 클래스 설계 & 불변 활용하기)

성능이 중요한 경우 불변변수가 아닌 가변변수를 사용하라고 하는데, 불변변수가 가변변수보다 성능에 더 좋은 경우는 무엇이 있을지? 메모리 관리불변변수는 한 번 생성되면 변경할 수 없으므로 메모리 관리가 간단합니다. 하지만 가변변수는 값이 변경될 때마다 메모리를 할당하고 해제하는 오버헤드가 발생할 수 있습니다.캐시 일관성불변변수는 값이 변하지 않기 때문에 여러 스레드 간에 안전하게 공유될 수 있습니다. 이는 캐시 일관성을 유지하는 데 도움이 됩니다. 반면 가변변수는 값이 변경될 수 있기 때문에 캐시 일관성을 유지하는 데 추가적인 오버헤드가 발생할 수 있습니다.병렬화불변변수는 여러 스레드 간에 안전하게 공유될 수 있으므로 병렬화를 쉽게 할 수 있습니다. 가변변수의 경우 값이 변경될 때 동기화 메커니즘이 필요할..