목록Infrastructure (10)
DHistory
개요대용량 데이터 검색을 진행함에 있어 ElasticSearch, MySQL FullText, MySQL Like의 성능을 비교를 했습니다.검색을 진행한 조건은 다음과 같습니다. 1. "abc" 로 시작하는 단어가 포함된 경우 → "def abcd gcf"2. "abc" 문자가 포함된 경우 → "def dabc gcf" Performance 비교는 hey를 활용하였습니다. Table Schema현재 데이터 건수는 275,684건이며 title에 index / fulltext 가 정의되어있습니다.Create Table: CREATE TABLE `post` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '(AI) ID', `title` varchar(100) COL..
개요SNS NewsFeed 조회 시 팔로잉 유저들의 최신 게시글을 조회해야합니다.팔로잉한 유저의 수가 1800명이고 각 유저들이 1000개씩 글을 작성했다고 가정합니다.게시글의 전체 데이터 개수는 1,800,000 건입니다. 팔로잉한 유저들의 게시글 중 최근 100개의 게시글을 조회를 진행해보겠습니다. 일반 쿼리 조회 구현 시 피드 목록 조회 시 비용이 비싼 쿼리를 조회해야합니다.(Post의 Dummy Data를 대규모 데이터로 넣기 위해선 시간이 오래 걸리므로 비싼 쿼리로 만들어 진행)@Service@RequiredArgsConstructorpublic class FeedService { private final PostRepository postRepository; private fina..
전제 1. AWS CLI 설치 2. AWS Access Key / Secret Key 등록 과정 1. Access Key 입력 2. Secret Key 입력 3. 자신이 사용할 region 입력 (ap-northeast-2: 서울) 4. aws cli 결과 기본 output format 설정 # 현재 등록된 정보 확인 및 변경 aws configure list
Root 계정 접속 1. 이름 클릭 -> Security credentials 클릭 2. Access key -> Create access key 클릭 3. understand ~ 체크 -> Create access key 클릭 4. Download .csv file 클릭 -> Done Secret 키는 현재 단계에서만 알 수 있으므로 csv file을 잃어버리지 않도록 저장한다. csv file을 저장하지 않고 Done을 누른 경우에는 생성된 Access Key를 삭제 후 1번 과정부터 다시 시작한다.
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target / password는 본인의 Mac 비밀번호를 입력한다. which aws aws --version 참고 최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface 이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이 docs.aws.amazon.com
11-3-2 MySQL 연산자 BETWEEN 연산자 BETWEEN 연산자는 크거나 같다와 작거나 같다라는 두 개의 연산자를 하나로 합친 연산자입니다. 다른 비교 조건과 결합해 하나의 인덱스를 사용할 때 주의해야할 점이 있습니다. # 쿼리 1 SELECT * FROM dept_emp WHERE dept_no BETWEEN 'd003' AND 'd005' AND emp_no=10001 # unique key 설정을 바로 하면 오류날 수 있으니 api 호출하는 곳에 물어봐야함. ; # 쿼리 2 SELECT * FROM dept_emp WHERE dept_no IN ('d003', 'd004', 'd005') AND emp_no=10001 ; 쿼리1(사진 왼쪽, BETWEEN 연산)은 dept_emp 테이블의 ..
11-3-2 MySQL 연산자 Equal = 기호를 사용하여 비교를 수행합니다. 연산자는 = 연산자와 비슷하지만 NULL 값에 대한 비교까지 수행합니다. Not Equal 결과를 반대로 만드는 연산자로 NOT을 사용합니다. ! 연산자를 사용할 수도 있습니다. REGEXP 문자열 값이 어떤 패턴을 만족하는지 확인하는 연산자입니다. RLIKE와 동일하게 수행하는 연산자입니다. 문자열을 하나하나 분리하여 조합하기 때문에 index를 사용할 수 없습니다. LIKE REGEXP 연산자보다는 훨씬 단순한 문자열 패턴 비교 연산자입니다. DBMS엣는 LIKE 연산자를 더 많이 사용합니다. LIKE 연산자는 정규 표현식을 검사하는 것이 아닌 어떤 상수 문자열이 있는지 없는지 정도를 판단하는 연산자입니다. LIKE에서 ..
기본적인 연산자는 MySQL에서도 거의 비슷하게 사용하지만 MySQL만 사용하는 연산자나 표기법이 있습니다. ANSI 표준 형태가 아닌 연산자가 많이 있습니다. 가능하면 SQL의 가독성을 높이기 위해 ANSI 표준 형태의 연산자를 사용하길 권장합니다. 11-3-1 리터펄 표기법 문자열 문자열 SQL 홑따옴표 (') MySQL 홑따옴표 (') / 쌍따옴표 (") SELECT * FROM departments WHERE dept_no='d0001'; SELECT * FROM departments WHERE dept_no="d0001"; SQL 표준에서는 문자열 값에 홑따옴표가 포함돼 있을 때 홑따옴표를 두 번 연속해서 입력하면 됩니다. MySQL에서는 쌍따옴표와 홑따옴표를 혼합해서 이런 문제를 피해 가기도 ..
MySQL 매뉴얼에 명시된 SQL 문법은 사용할 수 있는 모든 키워드나 기능을 하나의 문장에 다 표기해뒀기 때문에 한눈에 이해되지 않는다는 단점이 있습니다. 하지만 해당 버전에 맞는 SQL 문법을 참조하기에는 매뉴얼만큼 정확한 자료가 없습니다. INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tabl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] {VALUES | VALUE} (value_list) [, (value_list)] ... [ON DUPLICATE KEY UPDATE assignment_list] 대괄호 [] 선택 사항..
11-1-1 SQL 모드 MySQL 서버의 설정 파일에서 sql_mode를 설정할 때는 구분자(,)를 이용해 키워드를 동시에 설정할 수 있습니다. STRICT_ALL_TABLES & STRICT_TRANS_TABLES MySQL 서버에서 INSERT나 UPDATE 문장으로 데이터를 변경하는 경우 칼럼의 타입과 저장되는 값의 타입이 다를 때 자동으로 타입 변경을 수행합니다. ANSI_QUOTES MySQL에서는 문자열 값(리터럴)을 표현하기 위해 홑따옴표와 큰따옴표를 동시에 사용할 수 있습니다. Oracle 같은 DBMS에서는 홑따옴표를 문자열 값을 표기하는 데 사용하고, 큰따옴표는 칼럼명이나 테이블명과 같은 식별자를 구분하는 용도로만 사용합니다. => 문자열을 표현할 때는 홑따옴표를 사용하는 습관을 길러..