database

    [GraphQL] GraphQL이란?

    GraphQL GraphQL은 API를 위한 쿼리언어이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임이다. GraphQL은 특정 데이터베이스나 특정 스토리지 엔진과 관계되어 있지 않으며 기존코드와 데이터에 의해 대체된다. 쿼리언어(Query Language) 쿼리언어는 정보를 얻기 위해 보내는 질의문을 만들기 위해 사용되는 컴퓨터 언어이다. 데이터베이스 시스템에 저장된 데이터를 가져오기 위해 사용하는 SQL GraphQL(Graph Query Language) SQL이 데이터베이스에서 데이터를 가져오는 목적을 가진다면 GraphQL은 클라이언트가 데이터를 서버로부터 가져오는 것을 목적으로 한다. GraphQL vs REST GraphQL은 RESTful API가 이미 존재하고 널리 쓰이던 2..

    Dead Lock(교착상태)

    DeadLock 데이터베이스에 데드락이란 여러개의 트랜잭션이 실행되지 못하고 서로를 무한정 기다리고 있는 교착상태를 뜻한다. 교착상태란 두개 이상의 작업이 서로의 작업이 끝나기를 기다리고 있는 상태로 결과적으로 아무것도 완료되지 못한다. Transaction 트랜잭션은 작업의 안정성을 보장해주는 것이다. 여러개의 작업을 하나의 논리적 단위로 묶어 반영과 원상복귀를 조정할 수 있게 하기 위해 사용된다. 사용자의 입장에서는 작업의 논리적 단위로 이해할 수 있고 시스템의 입장에서는 데이터들을 접근 혹은 변경하는 프로그램의 단위가 된다. Locking(교착상태 예방) 로킹은 하나의 트랜잭션이 데이터를 액세스하는동안 다른 트랜잭션이 그 데이터 항목을 액세스할 수 없도록 하는 병행제어 기법이다. 사실상 필요한 데이..

    [mongoDB] MongoDB에 대하여

    NoSQL "Non Relation Operation Database SQL" 관계형 데이터베이스가 아닌 SQL 나는 관계형 DB만을 사용해봤고 사용해왔다. NoSQL 비관계형 데이터베이스에 대해선 들어보기만 했지 실제로 사용해본적은 없었다. 데이터직군에 있는 지인도 NoSQL을 사용하고 요즘 채용공고에도 MongoDB와 같은 비관계형 데이터베이스가 많이 보인다. NoSQL에 대해 알아보자 feat.몽고디비 일반적인 관계형데이터베이스는 데이터의 중복을 제거하고 무결성을 보장하기 위해 정규화를 진행한다. (1,2,3 정규화) 이러한 정규화 과도한 JOIN으로 성능저하의 문제를 야기한다. 당장 내가 사용하는 쿼리만 봐도 JOIN이 난무한다. 하지만 NoSQL은 중첩데이터 형태를 띔으로 불필요한 JOIN을 최..

    [Oracle] 계층형 쿼리

    계층형 쿼리 한 테이블에 담겨있는 여러 레코드들이 서로 상하관계(부모, 자식)을 이루며 존재할 때, 이 관계에 따라 레코드를 상,하위 한 구조로 가져올때 사용되는 SQL START WITH ... CONNECT BY 절로 생성 Oracle 9 부터 지원한다. START WITH 절에 시작 조건을 찾은 후 CONNECT BY 절에 연결조건을 찾는다. SELECT [컬럼]... FROM [테이블] WHERE [조건] START WITH [최상위 조건] CONNECT BY [NOCYCLE][PRIOR 계층형 구조 조건]; SELECT DEPT_NAME, DEP_CD, PARENT_CD, LEVEL FROM DEP START WITH PARENT_CD -- 최상위 노드 설정, CONNECT BY PRIOR DE..

    Redis에 대하여

    Redis Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터베이스 관리 시스템이다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소이다. db-engines.com 에서 key, value 저장소 중 가장 순위가 높다. Redis 의 특징 Key, Value 구조이기 때문에 쿼리를 사용할 필요가 없다. 데이터를 디스크에 쓰는 구조가 아닌 메모리에서 데이터를 처리하기 때문에 속도가 빠르다. String, Lists, Sets, Sorted Sets, Hashes 자료 구조를 지원한다. String : 가장 일반적인 key-value 구조의 형태 Sets : String의 집합. 여러개의 값을 하나의 value 에 넣을 수 있..