Study/DB

    [Mongo] 몽고(mongoDB)디비 CRUD 쿼리 문법 명령어 정리

    데이터베이스 명령어 데이터베이스 생성 show dbs -- 데이터베이스 리스트 출력 db -- 현재 사용하고 있는 데이터베이스 출력 db.stats() -- 현재 사용하고 있는 데이터베이스 정보 출력 데이터베이스 사용 use database -- 데이터베이스 사용 혹은 생성(존재하지 않을 경우 생성) -- use를 통해 생성된 데이터베이스는 그 안에 최소 한개의 Document가 존재해야 show dbs를 통해 확인 가능 데이터베이스 삭제 db.dropDatabase() -- 데이터베이스를 삭제 -- 이 명령어는 use DATABASE_NAME를 통해 지울 데이터베이슥 선택되어 있어야 한다. 컬렉션 명령어 컬렉션 생성 // db.createCollection( name[, option]) // name은..

    [DB] 데이터베이스 기초 개념

    데이터베이스(Database, DB)란? 여러 사람이 공유할 목적으로 체계화해 통합, 관리하는 데이터의 집합 스프레드 시트와 기능은 거의 유사하지만 컴퓨터 언어로 제어가 가능하며 앱이나 웹을 통해 공유가 가능하여 전세계 누구나 데이터베이스 접근하고 편집이 가능하다는 장점이 있음. 데이터베이스의 특징 실시간 접근성(Real-Time Accessibility): 실시간 처리에 의한 응답이 가능해야 한다. 계속적인 변화(Continuous Evolution): 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)로 항상 최신의 데이터를 유지한다. 동시 공용(Concurrent Sharing): 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다. 내용에 의한 참조(Co..

    [Redis] Redis(레디스) 자료구조

    Redis 데이터 타입 (Collection) Redisd의 장점 중 하나는 Key-value 스토리지에서 Value는 단순한 Object가 아니라 다양한 자료구조를 갖기 때문이다. String, Set, Sorted Set, Hash, List 등 다양한 타입을 지원한다. 이번 시간에는 각 레디스의 자료구조를 알아보고 자료구조를 이용하는 명령어(command)를 정리해보는 시간을 가져보겠다. Redis Collections 를 사용할 때 주의점 하나의 컬렉션에 너무 많은 아이템을 담으면 좋지 않다. 가능하면 10000개 이하의, 몇천개 수준의 데이터 셋을 유지하는게 Redis 성능에 영향을 주지 않는다. Redis - Strings 일반적인 문자열 값은 최대 512MB이며, String으로 될 수 있는..

    [DBMS] Redis(레디스)란? - 6

    Redis의 문제점 (주의해야 할 점) 그러나 Redis에도 설계 구조상 단점이 존재한다. 시간 복잡도 레디스는 자바스크립트와 같이 싱글 쓰레드 기반으로 돌아간다. 그래서 한 번에 딱 하나의 명령어만 실행하기 때문에, 긴 처리시간이 필요한 명령어를 쓰면 불리하고 요청 건을 처리하기 전까지 다른 서비스 요청을 받아들일 수 없고 서버가 다운 되는 현상이 일어날 수 있다. 따라서 전체 데이터를 다루는 시간복잡도를 가진 O(N) 명령어 keys, flush, getall 는 주의해서 사용할 필요가 있다. 대표적인 O(N) 명령 및 사례 - KEYS, FLUSHALL, FLUSHDB, Delete COLLECTIONS, Get All Collections - 모니터링 스크립트가 일초에 한번씩 keys 호출 - 큰..

    [DBMS] Redis(레디스)란? - 5

    Redis vs Memcached 앞서 우리는 세션을 저장하는 데 있어, In-memory DB를 활용하는 것이 효율적이라는 것을 배웠다. 같은 Relation Database라도 MySQL, MSSQL, Orcale 드으이 종류가 있듯이, In-memory DB에도 다양한 데이터베이스들이 존재한다. 그중에서도 세션 저장소로 가장 많이 사용되는 메모리 디비로는 Redis와 Memcached가 있다. 두 개의 공통점으로는 In Memory 저장소라는 점과 Key-value의 저장 방식을 가지고 있다. 이들의 특징은 다음과 같다. 무료 오픈소스 데이터베이스 이기 때문에 라이선스 비요이 대폭 절약된다. Sub-millisecond 단위의 높은 응답 속도를 보여주기 때문에 대용량 트래픽을 고려하는 우리 프로젝트..

    [DBMS] Redis(레디스)란? - 4

    Redis 활용하기 - 세션 스토어(Session Store) 서버 분산 처리 환경에서의 세션 불일치 보통 실무에서는 트래픽 부하를 방지하기 위해 로드밸런서에 서버를 여러대 운영한다. 그러나 서버를 여러대를 운영하게 되면 클라이언트의 세션이 서로 서버마다 달라 서비스 이용에 지장을 줄 수 있다는 문제점을 가지게 된다. 세션 불일치 문제와 해결방안 대한 자세한 내용 참고 --링크-- In-memory DB vs Disk based DB 별도의 세션 스토리지를 구성하여 세션의 정합성 문제를 해결하려고 할 때, Session storage를 이용하는 방법이 가장 이상적이다. 그럼 세션 스토리지로서 적합한 데이터베이스는 무엇일까? in-memory DB 메모리(RAM) 속도는 빠르지만 영속성을 보장하지 않고(데..

    [DBMS] Redis(레디스)란? - 3

    Redis 캐시의 활용 사례 Twitter는 140자 정도의 짧은 글을 올릴 수 있는 소셜 네트워킹 서비스(SNS)이다. Twitter에서의 Timeline은 사용자가 Follow(구독)하는 사용자들의 최근 트윗을 확인할 수 있는 페이지이다. 2012년 당시 Twitter는 15만명이 넘는 실시간 활동 사용자와 초당 30만 건이 넘는 Timeline 요청이 발생했었다. 이러한 규모의 Timeline 요청을 데이터베이스에 직접 접근하는 방식으로 처리하면 Query가 복잡해짐에 따라 속도가 현저히 떨어지는 문제가 발생한다. Twitter는 이 문제를 해결하기 위해 메모리 기반 NoSQL 기술인 Redis를 사용하였따고 한다. Twitter의 데이터 센터에 존재하는 방대한 야의 Redis Cluster는 각 ..

    [DBMS] Redis(레디스)란? - 2

    Redis 활용하기 - 캐시(Cache) 캐시(Cache) 란? Cache란 한 번 조회된 데이터를 미리 특정 공간에 저장해놓고, 똑같은 요청이 발생하게 되면 서버에게 다시 요청하지 말고 저장해놓은 데이터를 제공해서 빠르게 서비스를 제공해주는 것을 의미한다. 즉, 미리 결과를 저장하고 나중에 요청이 오면 그 요청에 대해서 DB 또는 API를 참조하지 않고 Cache를 접근하여 요청을 처리하는 기법이다. 서비스를 처음 운영할 때는 WEB-WAS-DB 정도로 작게 인프라를 구축하는데, 사용자가 늘어나면 DB에 무리가 가기 시작한다. DB는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생해도 데ㅣ터가 손실되지는 않지만, 매 트랜잭션마다 디스크에 접근해야하므로 부하가 많아지면 성능이 떨어진다. 그래..

    [DBMS] Redis(레디스)란?

    Redis (Remote Dictionary Server) Redis는 Remote(원격)에 위치하고 프로세스로 존재하는 In-Memory 기반의 Dictionary(key-value) 구조 데이터 관리 Server 시스템이다. 여기서 Key-value 구조 데이터란, mysql 같은 관계 데이터가 아닌 비 관계형 구조로서 데이터를 그저 '키-값' 형태로 단순하게 저장하는 구조를 말한다. 그래서 관계형 데이터베이스와 같이 쿼리 연산을 지원하지 않지만, 대신 데이터의 고속 읽기와 쓰기에 최적화 되어 있다. 그래서 Redis는 일종의 NoSQL로 분류되기도 한다. NoSQL은 Not Only SQL의 약자로써 기존 관계형 데이터베이스(RDBMS)보다 더 융통성 있는 데이터모델을 사용하고 데이터의 저장 및 검..