분류 전체보기

Redis

[Redis] Redis Cluster

파티셔닝을 통해서 데이터를 분산으로 저장하다 보면 예상하지 못한 문제로 인해서 서버에 장애가 생길 수 있다. 서버에 장애가 생기게 되면 데이터 유실이 발생할 수 있고 제공하는 서비스에도 심각한 영향을 미칠 수 있다. 이를 방지하기 위해서는 분산 서버마다 복제된 서버를 함께 운영해야 한다.(고가용성을 위함) 이와 같이 Redis 환경에서 데이터 분산처리를 위한 파티셔닝 시스템과 안정성 확보를 위한 복제 시스템을 함께 사용하는 것을 Redis Cluster 라고 부른다. Cluster를 사용하여 데이터를 분산시키는 목적을 가지는데 하나의 서버에서 분산처리를 한다면, 해당 서버에 장애가 발생했을 때 분산처리 자체가 불가능해진다. 이를 해결하고자 최소 3대의 Master 서버를 통하여 데이터를 분산하여 저장하는..

Redis

[Redis] Redis 란?

Redis는 nosql의 한 종류로써 모든 데이터를 메모리에 저장하고 조회하는 인메모리 방식의 데이터베이스이다. nosql 구조답게 key-vale 데이터 구조 스토어이고 여러 자료구조를 지원하며 크게 String, Bitmaps, Bitfield, Hashes, Lists, Sets, Sorted sets, Geospartial indexess... 등의 타입을 지원한다. RDB (Relational DataBase)에 비해 많은 자료구조를 지원한다는 장점도 있지만, 인메모리 방식의 DB 이기 때문에 Disk 에 직접 읽고 쓰는 작업을 수행하는 RDB에 비해서 월등히 빠르다는 장점이 있다. 1) 영속성을 지원하는 인메모리 데이터 저장소이다. 2) 읽기 성..

JS

[JS] Promise

Promise 란? Promise 란 자바스크립트에서 비동기 처리에 사용되는 객체이다. Promise 객체가 만들어진 기원은 기존에는 비동기 처리시에 순서를 보장하기 위해서 Callback 함수를 사용했는데 이 callback 함수가 다루기고 힘들고, 코드가 더러워지는 경향을 보여 더 깔끔하게 비동기 처리를 할 수 있게 만들어주는 Promise 객체가 나오게 되었다. Promise 는 대표적으로 3가지의 상태가 존재한다. 1. Pending(대기) 2. Fulfilled(이행) 3. Rejected(실패) 1. Pending(대기) 먼저 new Promise() 메서드를 호출하면 내부적으로 대기 상태가 된다. 또한, new Promise() 메서드를 호출할 때 콜백함수를 선언할수 있고 파라미터는 reso..

JS

[JS] 콜백 함수

비동기 처리 방식에 의해서 발생할 수 있는 문제를 콜백 함수를 사용하여 어느 부분 방지할 수 있다. 동기/비동기 처리가 궁금하다면 - [JS] 동기/비동기 처리 [JS] 동기/비동기 처리 동기 방식은 서버에서 클라이언트로 요청을 보냈을 때 응답이 돌아와야 다음 작업을 수행할 수 있는 방식이다. 즉, 선행작업이 아직 끝나지 않은 상태라면 후행작업은 대기해야만 한다. 이와 다 goodbyeanma.tistory.com console.log('front'); setTimeout(() => { console.log('middle'); },0) console.log('back') 이런방식의 코드는 비동기 처리 방식 때문에 코드 작성자의 의도대로 출력되지 않는다. 그럼 코드작성자의 의도대로 출력이 되게 하려면 어떤..

JS

[JS] 동기/비동기 처리

동기 방식은 서버에서 클라이언트로 요청을 보냈을 때 응답이 돌아와야 다음 작업을 수행할 수 있는 방식이다. 즉, 선행작업이 아직 끝나지 않은 상태라면 후행작업은 대기해야만 한다. 이와 다르게 비동기 방식은 요청을 응답이 돌아오느냐에 상관없이 현재 작업이 시작하면 동시에 다음작업도 실행된다. 동기적 처리 (Synchronous) 동기적 처리의 예시를 들어보면 아래와 같다. console.log('front'); console.log('middle'); console.log('back'); 기본적으로 절차적 프로그래밍에 익숙해진 개발자라면 이 정도의 결과는 당연히 코딩한 순서대로 나온다는 것을 예측할 수 있을 것이고 예측대로 답이 도출될 것이다. 비동기적 처리 (Asynchronous) 비동기처리의 가장 대..

SQL Tuning

[MSSQL] sp_lock

업무를 진행하다 보면 테이블의 특정 칼럼에 대해 LOCK 이 걸려 해당 칼럼에 액세스 하지 못하는 경우가 있다. 심한경우 락이 승격되어 테이블 자체에도 액세스 하지 못하는 경우가 생길 수 가 있다. 이럴 경우에 어떤 방식으로 락을 발생시킨 트랜잭션을 잡아내어 대응할 수 있는지 확인해보자. 아래의 데이터를 이용하여 실습을 진행해보자. SELECT * FROM dbo.TBLINSASHTEST WITH(NOLOCK) 위의 테이블에서 트랜잭션 제어어를 사용하여 홍길동의 이름을 변경하는 쿼리를 날려보자. BEGIN TRAN UPDATE dbo.TBLINSASHTEST SET name = N'도로시' WHERE num = 1001 위와 같이 TRANSACTION 을 열고 UPDATE를 해주게 되면 TBLINSATE..

SQL Basic

[MSSQL] COMMIT, ROLLBACK, SAVEPOINT

TCL(Transaction Control Language) 이란? TCL(Transaction Control Language) 은 트랜잭션 제어어로서 하나의 논리적 기능을 수행하는 연산자들의 집합인 트랜잭션 자체를 제어하는 구문을 말한다. 대표적으로 COMMIT, ROLLBACK, SAVEPOINT 가 존재한다. - COMMIT : 트랜잭션 저장 - ROLLBACK : 현재 실행되고 있는 트랜잭션 취소 -> 원복 - SAVEPOINT : 트랜잭션 내 저장점을 만들어 ROLLBACK 시 SAVEPOINT 로 돌아갈 수 있다. TCL 실습 아래의 데이터를 이용하여 실습을 진행해보자. SELECT * FROM dbo.TBLINSASHTEST WITH(NOLOCK) BEGIN TRAN UPDATE dbo.TB..

SQL Tuning

[MS SQL] 페이징 처리 최적화

서비스를 제공하는 웹사이트에서 페이징 알고리즘을 쓰지 않는 곳은 없을 것이다. 페이징 알고리즘을 어떤 방법을 적용하느냐에 따라서 엄청난 성능 차이가 있을 수 있다. 예를 들어 아래와 같은 데이터가 있다고 가정해보자. SELECT COUNT(*) FROM dbo.TBLINSA_SH_FINAL WITH(NOLOCK) SELECT * FROM dbo.TBLINSA_SH_FINAL WITH(NOLOCK) 테이블 스키마와 인덱스 구성은 아래와 같다. 페이징 처리에서 정렬 자체를 salary와 ibsaDate로 할 것이기 때문에 아래와 같이 non-clustered index를 구성하였다. clustered index는 insaseq로 고유번호를 지정해두었다. declare @page_num int-- 페이지 번호..

면접대비 자료

DB 면접 예상 질문

1.Rdbms 와 no-sql 의 차이점은? RDBMS는 관계형 데이터베이스 관리 시스템을 의미합니다. 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스입니다. 또한 RDMBS는 관계를 맺고 모여있는 테이블들의 집합체로 이해할 수 있습니다. 이러한 테이블 간의 관계에서 서로의 칼럼을 기준으로 Join이 가능하다는 게 RDBMS의 가장 큰 특징입니다. NoSQL이란(Not Only SQL)의 비 관계형 데이터베이스로서 약자로 말 그대도 위에서 설명한 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하고 있습니다. NoSQL에서는 RDBMS와는 달리 테이블 간 관계를 정의하지 않습니다. 관계 정의가 없으니 Join이 불가능하고 트랜잭션을 ..

SQL Basic

[MSSQL] partition by

partition by 는 전제집합을 기준에 의해 소그룹으로(SUBSET) 나눈다. 아래의 로직은 다음과 같다 TBLINSA 테이블에서 buseo 컬럼을 기준으로 GROUP BY 시켜 파티션을 나눠 서브셋을 생성한 다음, SELECT 절에 존재하는 buseo값과 일치하는 서브셋에 내용들을 가져와서 집계함수를 통해 계산한다. 예시를 위해 사용된 TBLINSA 테이블 조회 SELECT * FROM dbo.TBLINSA WITH(NOLOCK) PARTITION BY 를 통해서 소그릅화 시켜 계산해주는 쿼리 SELECT num ,name ,buseo ,SUM(basicPay) OVER(PARTITION BY buseo) AS buseoPaySum FROM dbo.TBLINSA WITH(NOLOCK) 아래에는 b..

ssh9308
'분류 전체보기' 카테고리의 글 목록 (13 Page)