본문 바로가기

전체 글

(89)
데이터 베이스 최적화 고려요인 저장되는 데이터 타입을 고려문자열인지, 숫자인지, 숫자의 범위인지, 문자열의 길이는 어떻게 되는지문자열과 숫자: 데이터의 성격에 따라 적절한 타입을 선택합니다. 예를 들어, 숫자 타입은 정수(INTEGER), 부동 소수점(FLOAT, DOUBLE), 고정 소수점(DECIMAL) 등이 있으며, 각 타입은 저장할 수 있는 값의 범위와 정밀도가 다릅니다. 문자열의 경우, 고정 길이(CHAR)와 가변 길이(VARCHAR)를 구분하여 사용해야 하며, 길이 제한을 설정함으로써 메모리 사용을 최적화할 수 있습니다.데이터 타입 선정 기준: 데이터의 최대 크기, 사용 빈도, 쿼리의 종류에 따라 타입을 선정합니다. 예를 들어, ID 값이나 코드 값은 VACHAR보다는 CHAR로 고정하는 것이 검색 속도 향상에 도움이 될 ..
웹 스크래핑 Jsoup 스크래핑 활용분야  여러 쇼핑몰의 데이터를 스크래핑해서 쇼핑몰간의 가격비교사이트, 특정 카테고리에 해당하는 아이템 모아서 한번에 보여주는 사이트, 여러회사의 취업공고를 모아서 보여주는 사이트, 업무 자동화, 핀테크 회사에서 사용자대신 공공데이터를 스크래핑 후 서류제출과정 대신하여 간편화, 무궁무진한 활용가능함 스크래핑 정책  main페이지의 robot.txt(https://finance.yahoo.com/robots.txt)을 조회하면 해당 사이트의 스크래핑 정책을 확인할 수 있다. 스크래핑을 허용한다고하여도 해당 사이트에 부하가 걸리지 않는 정도에서 운영하여야한다.  스크래핑  Jsoup library는 beautiful Soup의 java버전으로 해당 라이브러리를 사용한다.개발자는 자신의 서비스가 의..
데이터베이스 기술개념 - [북스터디] 데이터 베이스를 지탱하는 기술 1.데이터 베이스가 없으면 무엇이 곤란한가? 2. 인덱스로 고속 액세스 실현하기인덱스의 개념인덱스 : 리스트의 인덱스는 각 요소가 저장된 순서를 나타내는 숫자라면, 데이터베이스의 인덱스는 찾고자하는 레코드의 위치를 빠르게 탐색하기 위한 별도의 자료구조(B tree, Hash Table)이다. 데이터베이스는 Update문을 실행시킬때, record와 함께 index도 업데이트 하여 1가지 이상의 업데이트 행위를 함. 인덱스의 기본 원리 : 인덱스의 기본적인 원리는 대규모 데이터 집합에서 특정 데이터를 빠르게 찾기 위해 정렬된 상태를 유지하는 것입니다. 인덱스는 데이터베이스의 전체 데이터를 스캔하는 대신, 인덱스가 가리키는 특정 경로를 통해 데이터를 찾아 접근 시간을 단축합니다. B-트리 인덱스BST의 이진..
성능 최적화 전략 성능저하의 원인프로그램이 어떤 자원을 많이 쓰는지에 따라 CPU바운드, I/O바운드 작업으로 나뉜다. I/O 바운드 작업은 디스크, 네트워크, 파일 시스템 등과 같은 입출력(I/O) 작업을 많이 요구하는 작업을 의미한다. CPU-바운드 작업은 CPU의 연산 능력을 많이 요구하는 작업을 의미한다. 주로, 실무에서는 CPU-바운드 작업 보다는 I/O-바운드 작업이 많다. 메모리 계층구조에 따른 소요시간계층구조에 따른 소요시간이 다르다. 외부 데이터 접근을 최소화하는 것이 백엔드 입장에서 가장 중요한 성능적 로컬 SSD/HDD 접근 (디스크 I/O)SD: 100 ~ 500 마이크로초.HDD: 수 밀리초.내부 데이터베이스(DB) 접근 : 약 50,000 ~ 500,000 CPU 사이클(수백 마이크로초 ~ 몇 밀..
개발 도메인 고려하기 도메인을 중심으로 준비하라내용용약 취준생들은 자기가 좋아하는 분야가 무엇인지 확인을 하고, 그 분야를 다루는 회사를 가는 것이 이상적이다. 어떤 분야를 통해서 수익을 창출하는가. 도메인이라는 어떤 분야를 통해서 수익을 창출하는가이다. 도메인 지식이 있다는 것은 문제를 빠르고 정확하게 해결할 수 있다는 의미로 볼 수 있다. 회사에서 신입에게 바라는 것은 최소한의 비용과 시간으로 업무에 빠르게 적응할 수 있는가 라는 것이 정말 중요하다.그러므로 아래와 같은 분야에 진출하는 것이 중요할 것.자기가 관심을 가지고 있던 분야 ; 도메인에 대한 지식이 없기 때문에 도메인에 관련된 용어부터 공부를 해야한다.직접 사용을 하고 있던 서비스 ; 문제를 해결해야하는데, 그 문제가 왜 벌어지는지 이해를 못한다.개발자는 코드라..
Spring 동시성이슈 해결 동시성이슈여러 요청이 동일한 자원에 접근하며 발생하는 문제를 통칭함. 주로 DB에서 동일한 레코드를 동시접근하면 문제가 발생.예) 사용자1과 사용자2가 계좌1의 잔액 1만원을 1천원 사용하는 요청을 동시에 보냈을때, 사용자1의 요청에 의해서 잔액이 9천원이 되기전에 사용자2의 요청이 시작되어 두 사용자의 요청 결과가 각각 잔액 9천원으로 저장되어 2천원 사용이 되어도 1천원만 감소하는 경우. 동시성이슈 해결방안1. DB의존적인 해결방식 : DB 기기의 Isolation Level을 Serializable로 장치를 하거나 JPA의 Optimist Lock, Pessimistic Lock을 사용하여 DB의 기능을 사용- 단점 : DB서버는 인프라 확장이 어려워 성능의 한계가 뚜렷한 기기이다. DB의존적인 방..
DB 트랜잭션 트랜잭션 정의트랜잭션 : 데이터 베이스의 상태를 변화시키기 위해 수행하는 작업단위. (DB에 쿼리문을 통해서 CRUD를 하는 행위)작업단위 :  여기서 작업단위는 작업단위의 세부 작업들을 묶음 정의하기 나름임, Spring에서 @Transacitional으로 표기한다. 트랜잭션의 필요성데이터 일관성 문제: 여러 작업이 하나의 트랜잭션으로 묶이지 않으면, 일부 작업만 완료되고 다른 작업은 실패할 수 있습니다. 이는 데이터의 일관성을 해칠 수 있습니다.데이터 무결성 문제: 트랜잭션 없이 수행된 작업은 롤백이 불가능합니다. 이는 애플리케이션의 데이터 무결성을 보장하는 데 큰 문제가 될 수 있습니다.동시성 문제: 트랜잭션은 동시에 접근하는 여러 트랜잭션 간의 충돌을 방지하고, 격리 수준을 통해 데이터의 일관성을..
스프링부트 전체구조 스프링 전체흐름1. Server Startup:When you start your Spring Boot application (or deploy it to a servlet container like Tomcat), the server begins its initialization process.2. Spring Boot Application Initialization:SpringApplication.run(): This method is called in your main() method, which starts the entire Spring application.Spring Boot Auto-Configuration: Spring Boot auto-configures the application c..