일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 플로이드-워셜 알고리즘
- DFS
- OS
- 아키텍처
- 데이터베이스
- Docker
- HTML
- CS
- Dijkstra
- queue
- jpa
- 운영체제
- 완전탐색
- It
- 알고리즘
- 자료구조
- 레디스
- redis
- 백준
- Algorithm
- db
- Data structure
- 영속성 컨텍스트
- BFS
- javascript
- PYTHON
- 프로그래머스
- CSS
- java
- deque
- Today
- Total
목록분류 전체보기 (93)
If at first you don't succeed, try again

* 개요https://cyr0331.tistory.com/99 [DB] Index 실습(대용량 데이터 처리)* 개요얼마 전 대용량 시스템 공부를 진행하면서, DB에 약 700만건의 테스트 데이터를 삽입하였다.그 후 페이징 처리를 하기 위해서 조회를 하였는데, 다음과 같은 결과가 나왔다.select * from articlecyr0331.tistory.com지난 게시글을 통해 Index 실습을 진행하였다.인덱스를 생성함으로써 약 700만개의 데이터를 조회하는 시간을 17초에서 0.02초로 줄일 수 있었다.그런데 과연 인덱스를 사용함으로써 문제는 전부 다 해결되었을까? * 뒷 페이지 조회문제가 전부 해결됐는지 확인하기 위해 이번엔 50000페이지를 조회해보도록 하겠다.select * from article ..

* 개요얼마 전 대용량 시스템 공부를 진행하면서, DB에 약 700만건의 테스트 데이터를 삽입하였다.그 후 페이징 처리를 하기 위해서 조회를 하였는데, 다음과 같은 결과가 나왔다.select * from article where board_id = 1 order by created_at desc limit 30 offset 90;1번 게시판의 91번 게시글에서 120번 게시글까지 가져오는 데에 17초 이상이 걸린다.실제로 사용자가 페이지를 조회하고자 한다면 불편함을 토로할 것이다.explain 명령어를 통해 쿼리 플랜을 확인해보았다.explain select * from article where board_id = 1 order by created_at desc limit 30 offset 90;쿼리 타..

* HTTPHTTP는 웹 브라우저와 웹 서버 간의 데이터 송수신을 담당하는 프로토콜이다.주로 HTML, JSON, 이미지, 동영상 등 웹 컨텐츠를 전송하는 역할을 한다.기본적으로 TCP/IP 네트워크 위에서 동작하는 프로토콜이다.HTTP는 클라이언트에서 서버로 요청(Request)을 하고 서버가 응답(Response)을 주는 단방향 구조를 가지고 있다. * WebsocketWebsocket은 브라우저와 서버 간의 양방향 통신을 제공하는 프로토콜이다.HTTP와는 다르게 한 번 연결을 맺으면, 지속적으로 데이터를 주고 받을 수 있다.그리고 클라이언트 -> 서버로의 요청이 아니라 클라이언트의 요청 없이도 서버 -> 클라이언트로 정보를 실시간으로 보내줄 수 있다.HTTP 통신이 아니기 때문에 http:// 대신..

* Redis 캐싱Redis 캐싱이란, redis 캐시에서 접근해서 데이터를 빠르게 가져오는 방식이다. * Cache Aside 전략Cache Aside 전략은 look aside 전략 또는 lazy loading 전략이라고 부른다.예시를 통해 cache aside 전략의 작동 방식을 알아보자.- 게시판 서비스 배포처음 게시판 서비스를 배포했기 때문에 DB와 redis에는 데이터가 저장이 되어있지 않다.user가 들어와 게시글 작성을 함으로써 데이터를 저장한다. 이 데이터는 DB에 저장된다. 여기서 주의할 점은 redis에는 저장이 되지 않는다는 점이다.사용자가 데이터를 조회하려고 요청한다. 이 때, DB로부터 조회를 하기 전, redis에 데이터가 존재하는지 먼저 확인한다.redis에 데이터가 없는 것..
* 데이터 저장 명령어 set# set [key 이름] [value]$ set member:name "James Brook" # 띄어쓰기를 해서 저장하려면 ""으로 묶어줘야 함$ set member:nickname wanda * 데이터 조회 명령어 get# get [key 이름]$ get member:name$ get member:nickname * 저장된 모든 key 조회$ keys * * key를 통해 데이터 삭제# del [key 이름]$ del member:name$ get member:name # 삭제되었는지 확인 * 데이터 저장 시 만료시간(TTL) 정하기Redis는 RDBMS와는 다르게 데이터 저장 시 만료시간을 설정할 수 있다. 즉, 영구적으로 데이터를 저장하지 않고 일정 시간이 되면 데이..
* Redis란?레디스는 "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템이다. 또한 레디스는 데이터 처리 속도가 매우 빠른 In-Memory 기반의 NoSQL 데이터베이스이다. * Redis의 장점레디스는 인메모리에 모든 데이터를 저장한다.따라서 데이터의 처리 성능이 굉장히 빠르다. * Redis의 기능캐싱세션 관리실시간 분석 및 통계메시지 큐지리공간 인덱싱속도 제한실시간 채팅 및 메시징

* Docker 조작법Docker는 터미널에서 명령어(Command Line Interface)를 통해 조작한다. * Docker 사용해보기 먼저 Docker 터미널을 띄운 다음, 이미지를 다운받아보자. 다운받을 이미지는 nginx 서버이다.$ docker pull nginx위의 명령어를 통해 nginx 이미지를 다운받았다. 다운을 잘 받았는지 확인해보자. $ docker image ls위의 명령어를 통해 확인해보니 nginx가 잘 다운로드 된 것을 확인해볼 수 있다.그럼 이제 다운로드 된 이미지를 실행해보자. $ docker run --name webserver -d -p 80:80 nginx위의 명령어는 타 명령어에 비해 복잡하다. 여러 옵션이 붙어있다. 하나씩 명령어를 파보자.옵션의미docker ..

* Docker란?Docker는 애플리케이션을 컨테이너라는 독립적인 환경에서 실행할 수 있도록 도와주는 오픈소스 플랫폼이다. * Docker를 쓰는 이유Docker를 쓰는 가장 큰 이유는 이식성이다.이식성이란 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성이다. * Docker의 장점매번 귀찮은 설치 과정을 일일이 거치지 않아도 된다.버전, 환경 설정, 운영 체제와 같은 옵션들을 항상 일관되게 프로그램을 설치할 수 있다.각 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간에 서로 충돌이 일어나지 않는다. * 컨테이너란?컨테이너는 애플리케이션, 필요한 라이브러리, 설정 파일 등을 하나의 패키지로 묶은 독립적인 실행 환경이다.컨테이너는 VM(가상머신)보다 가볍고 빠르게 실행된다..
* 시스템 아키텍처시스템 아키텍처는 시스템의 구조나 설계 방식을 의미한다.시스템 아키텍처는 시스템의 확장성, 유지보수성, 성능에 큰 영향을 미친다. * 모놀리식 아키텍처모놀리식 아키텍처는 애플리케이션의 모든 기능이 하나로 통합된 아키텍처를 의미한다.모놀리식 아키텍처가 적용된 애플리케이션은 서비스의 모든 기능을 포함하고 있다.간단한 구조를 가지기 때문에 초기에 쉽고 빠르게 개발할 수 있다. * 모놀리식 아키텍처의 특징- 모든 기능이 단일 코드베이스로 결합- 소규모 시스템에서 개발 및 배포가 간단하기 때문에 자주 사용됨- 따라서 빠르고 효율적으로 개발 가능- 특정 부분만 확장하기가 어려움- 변경 사항이 시스템 전체에 영향을 미침- 대규모 시스템에서 적용하려고 할 때, 복잡도가 커지고 개발이 어려워짐 * 마이..
* 영속성 컨텍스트란?엔티티를 영구 저장하는 환경이라는 뜻이다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.em.persist(member);persist() 메서드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. * 엔티티의 생명주기- 비영속(new / transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 - 영속(managed) : 영속성 컨텍스트에 저장된 상태- 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태- 삭제(removed) : 삭제된 상태 * 비영속// 객체를 생성한 상태(비영속)Member member = new Member();member.setId("member1");..