전체 글

뭐든 공부하면 언젠간 다 도움이 될거야
· CS 정리
1. 캐시란?- 자주 참조되는 데이터나 계산 결과를 미리 저장해두어, 반복적인 데이터 접근이나 연산 속도를 빠르게 하기 위해 사용되는 고속의 임시 저장소를 모두 일컫어 캐시라 한다.- 주로 자주 접근하는 데이터에 대해서 연산 속도를 최소화하여 좋은 퍼포먼스를 내기 위해 사용한다- 자주 접근해야하는 데이터에 대해 접근 시간을 줄이고 시스템 성능을 향상 시키기 위해 사용한다고 보면 됨! + 내 생각* 쇼핑몰 같은 경우 상품상세페이지에 접근할 때 여러가지 데이터를 데이터베이스를 통해 가져오는데,상품정보 뿐만 아니라 관련 광고데이터, 배너데이터, 상품리뷰, 상품문의, 그 외 상세페이지에 들어가는 정보들이 무수하게 많다.그 중 자주 상품정보데이터는 계속 바뀔 수 있기 때문에 캐시를 하는 것은 좀 무리라고 생각이 ..
현재 우리 회사는 약 600만개의 상품데이터를 가지고 있다.디비엔진도 Myisam이다! 트랜잭션도 없고 테이블락밖에 없다현재는 그나마 상품정제를 통해서 상품수를 좀 줄여나가면서 db관리를 해나가고 있는데이보다 더 큰 상품개수를 가지고 있는 오픈마켓 이커머스 서비스들은 데이터베이스를 어떻게 관리하고 있을까?단순히 RDBMS를 테이블을 잘 정규화해서 쓴다던가 하는 내용은 너무 모호한 것 같다는 생각이 들어서 정리하고자한다.2억개의 데이터를 저장하고 보관하려면 데이터의 특성,용도,접근 패턴등에 따라서 달라질 수 있다 1. 데이터의 종류와 크기를 확인해보자- 텍스트 데이터인가? 로그, 메타데이터, 메시지등을 담은 데이터인가?- 숫자 데이터인가? 통계, 측정값등을 저장하는 데이터인가?- 이미지,비디오인가? 대용량..
· CS 정리
IT 개발자 단톡방에서 토론이 벌어졌다개발을 할건데 JPA를 할까 mybatis를 할까 라는 토론이었다여기서 사람들은 DDD라는 개념을 가져와서 토론을 진행했다나는 DDD를 모른다...!토론의 맥락을 따라가기 위해 DDD 개념을 찾아보았다 1. DDD란?DDD는 "Domain-Driven Design"의 약자로, 소프트웨어 개발 방법론 중 하나다. 이 방법론은 복잡한 소프트웨어 시스템을 개발할 때, 도메인(문제 영역)의 개념과 로직을 중심으로 설계하는 것을 강조한다.쉽게 말해서, DDD는 프로그램의 구조를 실제 비즈니스나 문제 상황을 반영하도록 만드는 것을 목표로 한다. 2. DDD의 주요개념도메인: 소프트웨어가 해결하려는 문제 영역. ex) 전자상거래 시스템에서는 상품, 주문, 결제 등이 도메인에 해당..
· DB
면접 단골 문제..!DDL DML DCL를 간단히 설명해볼 수 있나요?DDL , DML , DCL에 해당하는 명령어를 말해줄 수 있나요?데이터베이스에서는 데이터를 다루기 위한 모든 작업을 SQL을 이용해 작업한다.SQL은 다루는 객체나 용도에 따라서 그룹핑할 수 있다.DDL, DML, DCL, TCL로 나누어서 부른다. 1. DDL (데이터 정의어) - 데이터베이스의 구조 정의에 사용하는 언어- create : 테이블을 생성- truncate : 테이블 내용을 삭제 (초기화)  > drop과는 다른 개념임- alter : 테이블의 구조 변경 (컬럼 추가 등등)- drop : 테이블 삭제 (truncate는 내용만 삭제, drop은 아예 테이블 삭제) 2. DML(데이터 조작어) - 데이터 조작에 사용하는..
https://stackoverflow.com/questions/27776129/php-curl-curlopt-connecttimeout-vs-curlopt-timeout PHP cURL: CURLOPT_CONNECTTIMEOUT vs CURLOPT_TIMEOUTPHP has these two options related to timeout: CURLOPT_CONNECTTIMEOUT and CURLOPT_TIMEOUT. The descriptions on the PHP site are a bit vague. What's the difference? To use a real world example: say...stackoverflow.com PHP의 CURL을 사용할 때 옵션 값 중 CURLOPT_TIM..
· CS 정리
면접 단골 문제 1번 ..정규화란 무엇인가요?정규화를 실제로 해본 경험이 있나요?정규화를 해봤다면, 제 몇 정규형까지 만족시키게끔 고려하는 편인가요?1. 정규화 개념- 데이터 모델링을 할 때, 최대한 중복 데이터를 허용하지 않아야 저장공간을 효율성 있게 사용할 수 있고, 이에 따른 업무 프로세스의 성능을 기대할 수 있다. 이렇게 중복 데이터를 허용하지 않는 방식으로 테이블을 설계하는 방식을 정규화라고 한다.* 데이터 이상현상을 줄일 수 있음* 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보할 수 있음 2. 정규화 단계제 1정규화(1NF) -> 제 2정규화(2NF) -> 제 3정규화(3NF) -> BCNF(boyce-codd Normal Form) 정규화 -> 제 4정규화 ..  더 많은 정규화 단계..
· 일상
나는 대학생때 자바 수업이 있었다 C, C++, C#, PHP, JS 등등 여러가지 언어를 쓰는 수업을 들으면서 솔직히 벽을 느낀적은 없던 것 같다 문법이야 뭐 거의 대부분이 은근히 교집합이 약간씩 있고, 프로젝트할때도 크게 와 너무 어렵다 하면서 생각해본적은 없다 학부때 수준이야 그렇게 높은 수준을 요구했던 게 아니기도 하고,, 그런데 이상하게............. JAVA는 싫었다 비슷한 웹개발 언어인 PHP는 사랑했는데 JAVA는 싫었다 그 이후로 웹개발자라는 직업은 희망했으나 주 언어는 PHP로 지원해서 현재까지 다행히 회사를 다니고 있다 근데 이제, 다른 회사를 알아보려고 하는데 분명히 3년전에 회사를 알아볼 때는 PHP를 쓰는 회사가 많았는데,, 😭 웹개발 시장이 많이 달라졌다 PHP라는 언..
import org.springframework.http.HttpStatus;java 파일에 그냥 써서 추가해주면 추가가 된다 왜 vscode에서 ctrl + . 을 하면 안나올까 근디?
· DB/MySQL
MySQL 서버로 요청된 쿼리는 결과는 동일하지만, 내부적으로 그 결과를 만들어내는 방법은 매우 다양하다. 이런 다양한 방법 중에서 어떤 방법이 최적이고 최소의 비용이 소모될지 결정해야한다. MySQL에서도 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조하며, 그러한 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업이 필요하다. MySQL 서버를 포함한 대부분의 DBMS에서는 옵티마이저가 이러한 기능을 담당한다. MySQL에서는 EXPLAIN이라는 명령으로 쿼리의 실행 계획을 확인할 수 있는데, EXPLAIN 명령의 결과에는 상당히 많은 정보가 출력된다, 이러한 내용들을 제대로 이해하려면 옵티마이저에 대해 지식을 갖추고 있어야 한다. 스트리밍 방식 -..
· DB/MySQL
클러스터링 인덱스 - 클러스터링 : 클러스터링이란 여러개를 하나로 묶는다는 의미로 주로 사용됨 , 클러스터링 인덱스도 비슷하다 MySQL에서 클러스터링 인덱스는 InnoDV스토리지 엔진에서만 지원하며, 나머지 스토리지 엔진에서는 지원되지 않는다 - 클러스터링 인덱스는 테이블의 프라이머리 키에 대해서만 적용된다 - 즉, 프라이머리 키 값이 비슷한 레코드끼리 묶어서 저장하는 것을 클러스터링 인덱스라고 ㅍ ㅛ현한다. - 프라이머리 키 값에 의해 레코드의 저장 위치가 결정된다 - 프라이머리 키 값으로 클러스터링 된 테이블은, 프라이머리 키 값 자체에 대한 의존도가 상당히 크기 때문에 신중히 프라이머리 키를 결정해야 한다. - 프라이 머리 키 값에 의해 레코드의 저장위치가 결정되므로 클러스터링 인덱스와 클러스터링..
프흐프좋아
개발자로 살아남기