2장. 개략적인 규모 측정
·
시스템설계
핵심요약근사치를 활용한 계산.가정을 작성 해 둘 것.단위 붙이는 것을 습관화 할 것.(1) 2의 제곱수최소 단위는 1바이트(8비트)ASCII 문자 하나가 차지하는 메모리 크기가 1바이트흔히 쓰이는 데이터 볼륨 단위ns = 나노초, μs = 마이크로초, ms = 밀리초1나노초 = 10^-9초1마이크로초 = 10^-6초 = 1,000나노초1밀리초 = 10^-3초 = 1,000μs = 1,000,000ns응답 시간의 시각화 핵심메모리는 빠르지만 디스크는 느리다.디스크 탐색은 가능한 피하라.단순한 압축 알고리즘은 빠르다.데이터를 인터넷으로 전송하기 전에 가능하면 압축하라.데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸린다.
그래프탐색 - DFS와 BFS
·
Java & Spring/알고리즘
□ DFS와 BFS에 대한 개념 강의 영상https://www.youtube.com/watch?v=_hxFgg7TLZQ&t=624s  □ 실행 코드코드 보기import java.io.*;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); static int N, M, ..
1. 사용자 수에 따른 규모 확장성(무상태 웹 계층, 데이터 센터, 메시지 큐, 로그, 메트릭, 자동화, 샤딩)
·
시스템설계
(7) 무상태(stateless) 웹 계층상태 의존적인 아키텍쳐 위 그림에서 사용자 A가 서버 2에 요청하게되면 인증이 실패하게된다.이를 해결하기 위해서는 로드밸런서에서 고정 세션이라는 기능을 사용해야하는데 이는 로드밸런서에 부담을 준다.장애 처리도 힘들고, 서버 확장도 어렵게된다.무상태 아키텍쳐 위 그림에서서 사용자로부터의 요청은 어떤 웹 서버로도 전달 될 수 있다.웹 서버는 상태 정보가 필요할 경우 공유 저장소로부터 데이터를 가져온다.이런 구조는 단순하고, 안정적이며, 규모 확장이 쉽다.(8) 데이터 센터가장 가까운 데이터 센터로 안내되는 지리적 라우팅(geoDNS-routing 또는 geo-routing)※ x%의 사용자는 US-East로 (100-x)%는 US-West로 안내된다고 가정위와같은 아..
1. 사용자 수에 따른 규모 확장성(데이터베이스 다중화, 캐시, CDN)
·
시스템설계
(4) 데이터베이스 다중화많은 데이터베이스 관리 시스템이 다중화를 지원한다.보통은 서버사이에 주(master)-부(slave) 관계를 설정하고 데이터 원본은 주서버에, 사본은 부 서버에 저장하는 방식이다.쓰기 연산(write operation)은 마스터에서만 지원한다.부 부데이터베이스 주 데이터베이스로부터 그 사본을 전달받으며, 읽기 연산(read operation)만을 지원한다.장점성능향상 : 주-부 다중화 모델에서 모든 데이터 변경 연산은 주 데이터베이스 서버로만 전달되는 반면 읽기 연산은 부 데이터베이스 서버들로 분산되므로 병렬로 처리될 수 있는 query의 수가 늘어나므로 성능이 좋아진다.안정성 : 데이터베이스 서버 일부가 물리적으로 파괴되어도 데이터는 지역적으로 다중화시켜 놓았다면 데이터는 보존..
1. 사용자 수에 따른 규모 확장성(단일서버, 데이터베이스, 규모확장)
·
시스템설계
(1) 단일서버사용자가 도메인 이름을 이용하여 웹사이트에 접속접속을 위해서 DNS에 질의하여 IP주소로 변환하는 과정 필요(DNS는 보통 외부시스템)반환된 IP주소(123.456.123.101)으로 HTTP요청 전달요청받은 웹 서버는 HTML페이지나 JSON형태의 응답 반환(2) 데이터베이스사용자 증가 시 (1)의 과정에서 서버와 데이터베이스를 분리하나는 트래픽을 처리다른 하나는 데이터베이스용※ 위와같이 분리함으로써 독립적으로 확장 가능데이터베이스의 종류와 선택관계형 데이터베이스(RDBMS) : 자료를 열, 칼럼으로 표현, SQL을 사용하면 여러 테이블에 있는 데이터를 그 관계에 따라 조인(join)하여 합칠 수 있다.비 관계형 데이터베이스(NoSQL) : 조인 연산을 지원하지않음사용목적아주 낮은 응답 ..
[백준] Java - 1929번 : 소수 구하기
·
Java & Spring/코딩테스트
- 알고리즘 : 에라토스테네스의 체- 전체코드코드 보기import java.io.*;import java.util.ArrayList;import java.util.List;public class Main { public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { String[] input = br.readLine..
[백준] Java - 1018번 : 체스판 다시 칠하기
·
Java & Spring/코딩테스트
- 알고리즘 : 브루트 포스- 전체 코드더보기import java.io.*;public class Main { public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { String[] input = br.readLine().split(" "); int N = Integer.parseInt(input[0..
자료구조 - R트리(R-Tree)
·
이론공부
□ R-Tree 개념R-Tree는 점, 선, 면과 같은 2차원 이상의 공간 정보를 효율적으로 저장하기위한 자료구조로 위치기반 데이터에서 자주 사용된다. □ R-Tree 구조R-Tree는 여러개의 노드에 MBR(최소 경계 사각형)을 저장하여 그안에 포함되는 객체들의 공간을 나타낸다.□ MBR(최소 경계 사각형)각 객체에 사각형으로 경계를 만들고 묶어서 표현하면 아래와 같다.  위 MBR을 트리로 나타내면 아래와 같다. 부모 노드(Parent Node): 한 노드에 대해 바로 위에 연결된 노드.자식 노드(Child Node): 한 노드에 대해 바로 아래에 연결된 노드.리프 노드(Leaf Node): 자식이 없는 노드. 트리의 끝을 나타냄.형제 노드(Sibling Node): 같은 부모 노드를 공유하는 노드들..
MySQL 공간 인덱스(Spatial Index) 적용 - 체육관 검색
·
Java & Spring/고도화
※ MySQL 공간 함수 공식 문서□ 전체 QueryDsl 코드- MySQL의 공간인덱스를 사용하기 위해 Point타입을 사용R-Tree자료구조 @Override public Page search(String name, String address, GymType gymType, Point userLocation, Double requestDistance, Pageable pageable) { BooleanExpression condition = buildSearchCondition( name, address, gymType, userLocation, requestDistance); NumberTe..
DB 인덱싱(Database Indexing)
·
이론공부
DB 인덱싱(Database Indexing)은 데이터베이스에서 데이터를 더 빠르게 검색하기 위해 사용하는 기술데이터베이스에서 대량의 데이터를 검색할 때, 인덱스를 사용하면 특정 데이터를 빠르게 찾아낼 수 있어 성능을 크게 향상시킬 수 있다.1. 인덱스의 개념책의 목차와 유사하게, 인덱스는 데이터베이스 테이블의 특정 열(column)에 대한 검색용 정보를 미리 저장해둔 자료 구조인덱스를 사용하면 테이블의 모든 행을 하나씩 탐색하지 않아도 되므로, 검색 속도가 크게 향상된다.2. 인덱스의 작동 방식인덱스는 일반적으로 'B-트리(Balanced Tree)'나 '해시(Hash)'와 같은 자료 구조로 저장인덱스는 특정 열의 값을 기준으로 정렬하여 저장하므로, 데이터 검색 시 이진 탐색(Binary Search)..