분류 전체보기

배경인덱스에는 B트리, 혹은 B트리의 변형인 자료구조가 사용됩니다. 그 이유를 설명해 보세요.나 왜 이거 대답 못해..? 쭈글.. B 트리 인덱스의 장점먼저 인덱스는 데이터베이스 내부에 특정 필드값을 기준으로 정렬된 테이블을 만든다.말은 테이블이라고 했지만 실제 데이터는 B트리 형태로 저장됨.  왜 B트리 형식을 사용할까?B트리는 대용량 데이터에 대해 빠른 탐색이 가능하다. 균형 잡힌 구조로 데이터가 정렬된 상태를 유지한다.트리의 각 노드는 여러개(2개 이상)의 자식 노드를 갖는다.자식 노드가 여러개 이므로, 일반 트리보다 탐색을 위한 연산 횟수가 적다. 아래는 제품 번호(기본키)를 기준으로 인덱스 테이블(B트리형)이 생성된 모습이다.    대용량 입출력을 위한 B 트리자식 노드가 여러개이고, 정렬된 상..
배경야 너...CORS 설명해봐!.. (쭈글).. REST API 방식으로 프로젝트를 진행하면서 CORS 문제를 해결하기 위해 서버 설정에서 localhost:3000 으로 CORS 설정을 해주었다.개념적으로 알고있지만, 잘 와닿지 않아서 한번 더 공부해보려고 한다.  CORS(CrossOriginResourceSharing)"어디에서" 백엔드 서버에 요청을 보내면 CORS로 막히게 될까?바로 브라우저에서 요청할 때 이다. 즉, 브라우저를 통해 사이트에 접속하고, 사이트에서 서버로 요청을 보낼 때 브라우저가 이 요청보내는 사이트를 못믿고 CORS 제한을 거는 것이다. 언제 문제가 될까?나쁜 사람들이 사용자로 하여금 자신들이 만든 나쁜 사이트 xxx.com 으로 접속을 유도한다.현재 내 "브라우저"는 나의..
실습 데이터 세팅교재에 나와있는 github 링크에서 sql 파일을 다운받았다. 실습을 위해 도커로 MySQL 8.4버전 컨테이너로 띄움명령어 : docker run --name mysql-study -e MYSQL_ROOT_PASSWORD=password -d -p 3306:3306docker 환경에 mysql 8.4버전 실행중이고, 받은 파일을 아래 명령어를 통해 docker 컨테니어 내부로 복사해줬다.명령어 : docker cp [다운받은 복사할 폴더] [컨테이너id]:/init-db 그럼 아래처럼 docker 컨테이너 접속하고 cd init-db 후 ls해보면 실습 sql파일이 복사되었다.mysql -u root -p (아래는 미리생성해준 mysql_study DB에 넣어보려고 했는데, sql이 ..
MySQL을 기준으로 스터디 합니다.물리엔진 용어MySQL 구성요소MySQL 엔진SQL문을 토대로 문법검사등을 수행하고, SQL을 최소 단위로 분리한다.데이터를 빠르게 찾을 수 있는 경로를 탐색한다.(최적화 경로 탐색)스토리지 엔진으로 부터 받은 데이터를 가공 및 연산(필터링 join 등) 한다.스토리지 엔진(ex InnoDB)요청받은 SQL문을 토대로 디스크나 메모리에서 필요한 데이터를 가져오고, MySQL 엔진으로 보내줌스토리지 엔진에 따라 쓰기효과, 빠르게 읽는 효과 등 다를 수 있으므로 적절한 스토리지 엔진을 선택해야함.  이 책은 MySQL 8.0  버전의 InnoDB 엔진 기준으로 설명하고 있다. 파서(parsor) : 사용자가 요청한 SQL문을 쪼개 최소 단위로 분리하고 트리를 만든다.(문법..
코틀린 DSL 관련 내용이 많이 나오는데, 이부분은 생략하고 추후에 따로 공부해야할 듯 하다. 아이템 11. 가독성을 목표로 설계하라아래의 코드를 보면 일반적으로 A의 코드가 B보다 읽기 쉽다.B의 코드는 코틀린에서 자주 사용하는 구문들을 사용했음에도, 코틀린 숙련자들도 읽기 쉽지 않다.// 1. 읽기 쉽다if (person !- null && person.isAdult) { view.showPerson(person)} else { view.sohwError()}// 2. 읽기 어렵다person?.takeIf { it.isAdult } ?.let(view::showPerson) ?: view.showError() A의 구문은 B보다 아래와 같은 장점이 있다.- 읽기 쉽다.- 디버깅이 용이하다...
🎯 문제상황프로젝트를 진행해감에 따라서 데이터 베이스 변경사항을 기록해놓으면 좋을 것 같다고 생각해서, 그동안은 resource 경로에 직접 테이블 변경 사항 sql문을 적어주었다.   이렇게 기록을 해주고, 어플리케이션을 시작할 때마다 모든 변경사항들이 자동으로 반영되어 최신화 되도록 하기 위해서 application-local.yml에서 아래 처럼 설정해주었다. 위는 실제 애플리케이션 구동마다 해당 sql문을 순차적으로 실행하게 된다. 문제는 여기서 발생하는데, 아래처럼 init_schema.sql은 이미 테이블이 생성되어 있다면 생성하지 않도록 되어있다. 하지만 아래 제약 조건을 거는 파일(즉, 테이블 내부의 설정을 변경하는 파일)의 경우에는, 애플리케이션이 시작될 때마다 제약 조건이 걸리게 되고..
고민사항현재 퀴즈 애플리케이션의 패키지 구조는 아래와 같습니다.  Game 도메인이라는 패키지가 존재하고, 해당 패키지 안에 Game 도메인과 관련한 CRUD를 책임지는 Game API 서비스가 존재하고, 게임 진행 비동기 서비스를 담당하는 Game Engine 서비스가 존재합니다. 여기서 2가지 고민사항이 발생합니다.첫번째는, Game API 를 책임지는 서비스와 WebSocket을 통해 게임 비동기 서비스를 담당하는 Game Engine 서비스가  하나의 패키지에 있지 않도록 하고싶다 입니다.고민을 한 이유는, 현재 Game API 서비스는 게임 시작 요청이 들어오면 Game 진행 로직을 Game Engine 서비스에게 위임하고 있는 방식인데, 이때 비동기 로직을 통해 별도의 스레드에서 실행하게 됩..
테이블 더미데이터 삽입(약 100만개)프로젝트에 적용시켜 볼 조회쿼리에 대한 성능을 측정하기로 했다.성능 측정에 필요한 테이블에 약 100만개 정도의 데이터를 삽입하기로 했다. 프로젝트에서 사용한 테이블 구조는 아래와 같다. 복잡한 조회에 사용되는 테이블은 크게 아래 4개와 같다.game, member_game_result, game_quiz, quiz 그래서 4개의 테이블에 약 100만개의 데이터를 삽입해주었다.아래와 같은 코드를 통해 정합성을 맞춰주면서 랜덤 데이터를 최대한 넣어 주었습니다!더보기퀴즈 테이블(quiz) -> 100만개 생성-- 높은 재귀(반복) 횟수를 허용하도록 설정-- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다.)SET SESSION cte_max_recursion..
[현재 문제 점] [Redis 아키텍처] [Sentinel 적용해보기]
Don't stop 훈
'분류 전체보기' 카테고리의 글 목록 (2 Page)