[플레이데이터 SK네트웍스 Family AI 캠프 6기] 2주차 회고

Yunazz·2024년 10월 7일
0

🗓️기간

24.09.30 - 24.10.04

👍Liked

이번 주는 파이썬 강의가 마무리되고, 본격적으로 DB(Database) 학습을 시작하는 주다. 다음 단계로 넘어간다니(AI 학습으로의 어나더 도약) 오늘도 신난다.😊
DB는 기초부터 차근차근 가르쳐 주신다. 아는 내용이다보니 스스로가 약간 루즈해지는 것 같아 조금 더 알찬 시간을 위해 배우는 내용과 관련한 심화된 내용은 없는지 중간중간 구글링을 병행하며 학습하는 시간을 가졌다.
(나의 학습 flow : 강의듣기 ('아 이런게 있었지? 아 이런 것도 있구나!') ➡️ 구글링 (그럼 그건 어떻게? 언제? 왜? 사용하는거지? 사람들은 어떻게 사용하고 있지? 내 프로젝트에서 적용할만한가? 성능 향상에 도움이 되나? 등등 질문의 꼬리에 꼬리에 꼬리 물기!) ➡️ 강사님이 제공해주신 문제 풀기(sql이 익숙해질 수 밖에 없도록 반복되면서도 활용이 가능한 다양한 예제로 구성되어 있었음.)

(멍때리면 어쩌나 걱정했는데...) 강의를 통해 뭔가 깊게 파고드는 시간을 가질 수 있어서 즐거웠다! 다음에 적용해 보고 싶은 것들이 리스트업 되는 것은 덤!

📚Learned

DECIMAL

❗데이터 타입에 대해서 배울 때, 가상화폐 트레이딩 플랫폼에서 일할 때가 생각났다. 일할 당시 수수료를 계산하거나, 실시간 환율 정보를 바탕으로 가격 변동 등을 고려하며 달러와 한화를 계산해야 하는 등의 상황이 많았다. 계산식 자체에는 문제가 없었지만, 계산 결과가 미세하게 다르거나 부동소수점 문제들이 종종 발생하곤 했다. 그때 문득 우리가 사용했던 데이터 타입이 float였다는 사실이 떠올랐다. 만약 그 당시 decimal 타입을 사용했더라면 어땠을까 하는 생각이 들었다. 물론 decimal이 모든 문제를 완벽하게 해결해 주지는 않았을 수도 있겠지만, 더 명확한 계산 결과(오차 출이기)를 얻을 수 있었을지도 모른다는 생각이 들었다.

핵심 ➡️ 정밀한 고정 소수점 숫자를 저장하는 데 적합하며, 정확한 계산이 중요한 경우 주로 사용된다. 정밀도와 규모를 통해 소수점 이하 자릿수와 전체 자릿수를 제어할 수 있다. DECIMAL은 부동 소수점 타입에 비해 성능 면에서 비용이 클 수 있지만, 정확성이 중요한 경우에는 필수적이다. 선언방법: DECIMAL(정밀도, 규모)

고정 소수점 숫자 vs 부동 소수점 타입

  • 고정 소수점 숫자 (DECIMAL): 정밀한 값을 다루는 데 적합. 특히 금융 데이터나 환율과 같은 작은 오차가 중요한 경우 사용.
  • 부동 소수점 형식 (FLOAT/DOUBLE): 근사치 계산에 유리하지만 정밀도가 떨어질 수 있다. 통계/과학적 계산처럼 큰 범위의 값이 필요한 경우 적합.

실무 참고사항

  • 다양한 DBMS에서 DECIMAL을 다루는 방식은 조금씩 다를 수 있다.
    ( MySQL - DECIMAL의 최대 정밀도는 65, 소수 자릿수는 30 )
    ( PostgreSQL - NUMERIC 타입으로 DECIMAL과 동일하게 동작, 정밀도와 규모의 제한이 거의 X )

  • 성능 - DECIMAL 타입은 매우 정밀하지만, FLOAT나 DOUBLE에 비해 계산 비용이 더 높을 수 있다. 즉, 대량의 데이터를 다룰 때는 성능 저하가 발생할 수 있으므로, 필요한 경우 정밀도와 성능 간의 균형을 맞춰한다.

  • 저장 공간: DECIMAL은 데이터베이스에서 각 숫자를 고정된 형식으로 저장하므로, 메모리 사용량이 클 수 있다. 각 DBMS마다 다르지만, 정밀도에 따라 메모리 할당이 다르게 이루어지므로, 과도한 정밀도를 설정하는 것은 비효율적일 수 있다.

  • 반올림 문제: 숫자가 정의된 규모를 초과하면 자동으로 반올림된다.

UNSIGNED

UNSIGNED는 SQL에서 숫자 데이터 타입에 사용되는 속성으로, 해당 컬럼이 음수 값을 가질 수 없음을 의미한다. 즉, UNSIGNED가 설정된 경우, 해당 컬럼은 0 이상의 값만 저장할 수 있다.
이렇게 하면 음수 값을 저장할 필요가 없는 경우, 더 큰 양의 정수를 저장할 수 있는 장점이 있다. 주로 ID 같은 값을 저장할 때 사용된다.

❗몰랐다... id 만들떄 unsigned 추가해서 만들어야겠다..!

escape

escape 배우던중.. escape로 사용할 수 있는 문자의 조건이 뭐지?하는 궁금증이 생겨서 구글링

  • 단일 문자(알파벳,한글,숫자,기호 등 sql에서 유효한 어떤 문자도 될 수 있다.)
  • 일반적으로는 \, !, # 를 사용함!

🚧Lacked

  • DB 관련 레퍼런스를 찾는게 조금 어려운 것 같다. DB 성능에 대해서 참고할만한 책이나 글 좀 검색해봐야겠다.

🎯Longed For

  • 강사님 제공 빈템플릿 활용해서 복습하기
  • 예습과 복습을 위한 DB 관련 자료 읽기
profile
웹개발(프론트엔드,백엔드)

1개의 댓글

comment-user-thumbnail
2024년 10월 8일

유나님! 지난 한 주도 고생 많으셨네요 👍👍 단순히 강사님 강의를 듣는 것에서 끝나는 게 아니라, 추가로 궁금한 점들을 구글링 통해서 셀프로 해결하는 모습! 너무 바람직한 것 같습니다 :)
decimal 타입 관련해서 적어주신 사례가 개발자들이 계속 해서 공부를 해야 하는 이유 같네요!!
본격적으로 시작될 AI 파트들도 기대해주시고, 좋은 자료들 있으면 다른 분들과도 공유해서 다 같이 참고하면 좋겠습니당! 이번주도 화이팅이요~~

답글 달기