오늘 한일
- 기사단원의 무기
for문을 통해 1부터 number까지 검사하였고 검사하는 수를 1부터 검사하는 수의 제곱근까지 검사하여 검사하는 값이 같은 값의 제곱과 같지 않으면 한번 더 추가하여 중복 검사하는 경우를 줄였다. 소수의 개수 num이 limit보다 크면 power를 answer에 더해주었고 아니면 num을 answer에 더해주었다.
- 샤딩(Sharding)
샤딩은 데이터베이스에서 데이터를 분할하여 여러 개의 작은 부분으로 나누는 기술이다. 이는 시스템의 확장성 및 성능을 개선하기 위한 방법으로, 특히 대규모 데이터베이스 및 분산 시스템에서 많이 사용된다.
- 데이터 분할 : 데이터를 여러 개의 샤드(shard)로 나누어 저장한다. 각 샤드는 전체 데이터베이스의 일부분을 포함하며, 독립적으로 저장 및 관리된다.
- 확장성 : 샤딩을 통해 시스템의 수평적 확장이 가능하다. 즉, 더 많은 샤드를 추가함으로써 처리량을 증가시키고, 성능을 향상시킬 수 있다.
- 성능 향상 : 데이터가 여러 샤드에 분산되어 있으므로, 각 샤드에 대한 쿼리 처리 시간이 줄어든다. 이는 동시에 여러 처리할 때 유리하다.
- 고가용성 : 샤딩을 통해 시스템의 장애가 발생하더라도 전체 시스템이 다운되지 않고 일부 샤드만 영향을 받도록 할 수 있다. 이는 시스템의 안정성을 높이는 데 도움이 된다.
어려웠던 점
- 제곱근으로 횟수를 줄이지 않고 처음부터 끝까지 검사했었는데 그렇게 하니 시간 초과로 실패하였었다. (소수는 같은 수의 제곱이 아닐 때는 두 개씩 짝지어져 있는 것을 이용하여 검사 횟수를 줄여 해결하였다.)
- 샤딩에 대해 배웠지만 정확한 원리와 방법을 잘 이해하지 못하겠다. (샤딩을 직접 사용해 서버를 만들어보면 이해하는데 도움이 될 것 같다.)
오늘의 TIP
- 파티셔닝(Partitioning)은 더 쉬운 관리와 더 빠른 액세스를 위해 데이터베이스를 더 작은 부분으로 나눈다. 그러나 샤딩과 달리 행이 아닌 데이터 열을 구분하는 수직 분할이 포함된다. 수평 파티셔닝은 샤딩과 유사하지만, 파티셔닝은 단일 DB에서 주로 사용된다는 점에서 차이가 있다.
'TIL' 카테고리의 다른 글
TIL#39(숫자 짝꿍, 자바스크립트 클래스와 객체) (0) | 2024.06.13 |
---|---|
TIL#38(옹알이(2), 트랜잭션) (0) | 2024.06.12 |
TIL#36(소수 만들기, 덧칠하기, HTTP와 TCP 그리고 웹소켓) (0) | 2024.06.10 |
TIL#35(카드 뭉치, 풋살 온라인 팀프로젝트) (0) | 2024.06.07 |
TIL#34(2016년, 객체 지향 프로그래밍, 프로그램 언어의 다형성) (0) | 2024.06.05 |