진짜 개발자
본문 바로가기

Database (총 10개)

Redis - 영속화(Persistence) 이번 포스팅에서는 Redis의 영속성(Persistency) 에 대해서 알아보도록 하겠습니다 1. RDB 첫번째 영속성을 얻기 위한 방법은 RDB입니다. 관계형 DB가 아니라, Redis Database의 줄임말입니다. 이 방법은 지정된 간격으로, 데이터의 스냅샷을 찍어 저장합니다. 즉, 현재 메모리에 저장된 데이터 상태들을 특정 시점에 저장하는 방법을 말합니다. 장점 RDB는 매우 압축된(작은 크기의) 특정 시간에 대한 메모리 상태(데이터)를 나타냅니다. Ex) 예를들어, 시간마다, 또는 매일 스냅샷을 통해 Redis에 장애가 발생한 경우 원하는 특정 지점의 데이터를 복구할 수 있습니다. 별도의 저장소로 보낼 수 있는 단일 압축 파일이기 때문에 재해 복구에 좋습니다. 단점 특정 시간마다 현재 메모리의 ..
Database - 샤딩과 파티셔닝 이번 포스팅에서는 파티셔닝과 샤딩의 차이에 대해 알아보도록 하겠습니다. 대규모 트래픽, 데이터를 다루는 곳에서는 확장성을 위해서 샤딩, 파티셔닝을 필수적으로 고려하게 됩니다. 파티셔닝에서는 수평(테이블의 Row를 특정 컬럼의 값을 기준으로 나누는 것)파티셔닝과 수직(컬럼을 여러 테이블로 나누는것)파티셔닝이 존재합니다. 필자는 수평파티셔닝 == 샤딩으로 잘못 인지를 하고있었습니다 .. 샤딩, 파티셔닝(수평) 차이 위 글에 나온것을 보면 샤딩과 파티셔닝 모두, 큰 데이터를 여러 서브셋으로 나누어 저장하는 기술을 말합니다. 하지만, 샤딩의 경우에는 각 서브셋을 여러 인스턴스에 저장하는 반면, 파티셔닝은 하나의 인스턴스의 여러테이블에 나누어 저장하는 것을 말합니다. 샤딩 샤딩은 앞서 말씀드렸듯이 하나의 큰 데이..
Mysql - Mysql 성능 최적화 - 1 (시스템 설정) MySQL의 시스템 설정 SQL의 실행 성능향상은 어플리케이션에서의 성능향상에 비해 보다 쉽게 수십배에서 수백배까지 가능합니다. 따라서 우리가 실행할 쿼리가 어떻게 동작하는지를 이해하는것이 정말 중요합니다. 이번 포스팅에서는, SQL 쿼리에 영향을 주는 MYSQL의 시스템설정들에 대해서 알아보도록 하겠습니다. ORACLE이나 여타 DB에서는 기본적으로 적용되는 설정들이 다르기 때문에, MYSQL에 대한 설정임을 주의해주세요. 1. SQL모드 설정STRICT_ALL_TABLES기본적으로 저장하려는 값의 길이가 컬럼에 지정된 길이보다 긴 경우, 기본적으로 에러가 발생하지 않고 가능한 길이만큼만 잘라서 저장이 되게 되어있습니다.이때, 만약 저장하려는 길이보다 긴 경우, 에러를 발생시켜 값이 저장되지 않기를 원..
Mysql - Mysql(InnoDB)를 사용할때 성능을 위해 알아야하는 것(Index의 중요성) 이번 포스팅에서는, 자신이 DBMS로 mysql 을 사용한다고 말한다면, 당연히 알아야하는 것에 대해 간단히 알아보려고합니다. 1. Mysql의 구조 먼저, Mysql을 사용할 때 기본으로 알아야하는 것에 알아보기 전에 이해를 돕기 위해, Mysql의 기본구조를 간단하게 살펴보도록 하겠습니다. Mysql은 크게 Mysql 엔진과, 스토리지 엔진 부분으로 나뉩니다. 1.1 Mysql 엔진 Mysql 엔진은 파서, 전처리기, 옵티마이저, 쿼리실행기 등으로 구성되어 있으며, 사용자의 요청을 받아, 쿼리를 검사하고, 스토리지 엔진에게 데이터 읽기 또는 변경에 대한 실행 요청을 합니다. 1.2 스토리지 엔진 스토리지 엔진은 실질적으로, 데이터 파일로부터 데이터를 읽거나, 데이터를 쓰고 변경하는 작업을 진행합니다...
Mysql - group by, having, max(count), inner query 예제 (가장 많이 조회된 글의 번호 구하기) 가장 많이 조회된 글 번호 구하기 쿼리 예제 이번 포스팅에는 가장 많이 조회된 글의 번호를 구하는 쿼리를 알아보도록 하겠습니다. 1. Table사용할 테이블의 스키마 입니다. no는 외래키이며 post(게시판) 테이블의 기본키로 글 번호를 뜻합니다. post_statistic테이블의 기본키는 no, access_date(합성키) 입니다. 이런식으로 글 번호마다 언제 조회를 했는지를 저장하는 테이블입니다. 2. 가장 많은 조회수를 가지는 글번호(no) 구하기2.1 no별 조회수 구하기 (Group by)우선 각 no 별 조회수를 구하기 위해 group by 를 이용하여 쿼리를 작성합니다. ( group by를 사용해야 하는 경우 - https://wkdtjsgur100.github.io/groupby-ha..
Mysql - select문 응용 select문 응용 Select문 응용mysql의 select문의 응용방법을 살펴보도록 하겠습니다. 최근 모 기업의 코딩테스트를 보았는데. 마지막 문제에서 간단한 쿼리 문제가 나왔었습니다. 근데 시간도 시간이지만 자신이 없어서 인지 뺑뺑돌다가 결국 시간이 다되어 제대로 풀어보지도 못했습니다. 때문에 sql에 대한 공부도 조금씩 다시 해나아갈 예정입니다. 예제 DB 자료이번 포스팅의 예제에서 사용될 Sampl DB는 Mysql에서 제공하는 World.db입니다. 아래의 경로는 mysql 홈페이지에서 제공하는 world.db 설치방법 document 링크입니다.https://dev.mysql.com/doc/world-setup/en/world-setup-installation.html 1. 검색결과의 정렬(..