불타는 키보드

고정 헤더 영역

글 제목

메뉴 레이어

불타는 키보드

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기
    • 소프트웨어
      • 네트워크
      • 인프라
      • 자료구조 + 알고리즘
      • 운영체제
      • 디자인 패턴
    • 언어
      • Javascript + Typescript
      • Python
      • HTML + CSS
    • 프레임워크+라이브러리
      • Django
      • Express
      • Vue
    • 데이터베이스
      • NoSQL
      • RDBMS
    • 버전관리도구
      • Git
    • 나의 기록
      • 낙서장
      • 그냥 글
      • 초보는 장비탓을 한다
      • 기타 일지

검색 레이어

불타는 키보드

검색 영역

컨텐츠 검색

데이터베이스

  • Row vs Column oriented Databases

    2023.12.04 by moonionn

  • [Redis]패턴 조건을 활용해 key 집합 추출하기(SCAN)

    2023.07.10 by moonionn

  • 반짝세일 이벤트에서의 재고관리시스템 스터디

    2022.11.30 by moonionn

  • [데이터베이스]B tree가 뭐죠?

    2021.06.28 by moonionn

  • mongoose로 relation 설정하기 (populate 이용하기)

    2020.09.26 by moonionn

  • MongoDB Atlas를 사용해 Node.js로 데이터베이스 연결하기

    2020.09.16 by moonionn

  • SQL(관계형 데이터베이스) 핵심정리

    2020.09.16 by moonionn

  • 장바구니와 상품의 관계, Sequelize로 구현하기(다대다 관계)

    2020.09.11 by moonionn

Row vs Column oriented Databases

혹시 통계 데이터 조회를 위해 구글 빅쿼리 혹은 아마존 레드시프트를 사용한다는 말, 들어보셨을까요? 흔히 사용되는 MySQL, PostreSQL 등 외에도 이런 별도의 데이터 저장소들을 사용하는 경우는 많이 보았을 겁니다. 막연하게 "그냥 MySQL과는 다른 어떤 통계용 DB? 데이터 웨어하우스? 인가보다?" 라고 생각하고 넘어갈 수 있지만, 오늘은 이 데이터 저장소들이 어떻게 차이가 나는지 적어보고자 합니다. 데이터베이스 시스템은 데이터를 어떻게 저장하느냐에 따라 크게 두 가지로 나뉩니다. 하나는 행(row)을 중심으로 저장하는 row oriented (한국말로는 행 기반, 혹은 행 지향), 다른 하나는 열(column)을 중심으로 저장하는 column oriented (한국말로는 열 기반, 혹은 열 ..

데이터베이스 2023. 12. 4. 00:29

[Redis]패턴 조건을 활용해 key 집합 추출하기(SCAN)

패턴 조건을 활용한 서브셋이 필요한 사례 개발하면서 문자열을 다루다보면, 딱 떨어지는 무언가를 찾기보단 특정 조건을 충족시키는 문자열들을 찾고 싶을 때가 많습니다. SQL에서는 like 절, 자바스크립트에서는 includes()나 match() 등이 이런 경우 사용되겠네요. 레디스에서도 마찬가지입니다. 특정 상황을 예로 들어 보겠습니다. 사이트의 성능 개선을 위해 가장 자주 호출되는 데이터인 카테고리 관련 데이터들은 전부 캐싱한다 가정하겠습니다. 그럼 카테고리 캐시는 아래와 같이 구성할 수 있겠습니다. 키 이름 예시 역할 값 예시 categories:all:ko 전체 카테고리(한국어) [ { id: 1, title: "식품", status: "Normal" }, { id: 2, title: "가전", ..

데이터베이스/NoSQL 2023. 7. 10. 02:58

반짝세일 이벤트에서의 재고관리시스템 스터디

문제 발생 며칠전 회사 서비스 중 한 곳에서 타임어택 한정수량 이벤트를 진행했습니다. 그런데 생각보다 많은 사람들이 몰려 서버가 처참히 뻗어버렸습니다. 동시접속자 수가 10만을 훌쩍 넘어버려 서버가 버티질 못한 것이죠. (아니 우리 사이트가 이렇게 인기가 많았나? 😓) 상황의 예시를 들자면 아래와 같습니다. - 제한 수량 300 - 1 고객 1 지급 제한 서버가 죽는 데에는 이런저런 원인들이 있었지만 역시나 데이터베이스 과부하가 주요 이슈였습니다. (나로선 여태 이론상으로만 들어오던) 데드락 구경도 실컷 할 수 있었습니다 ^^ 이용 고객에게는 짜증나고, 시니어들 입장에서는 골치 아프겠지만..... 응애 개발자 입장에서는 참 좋은 스터디 경험이 아닐 수 없습니다! 코드 준비 express와 sequeliz..

데이터베이스/NoSQL 2022. 11. 30. 01:55

[데이터베이스]B tree가 뭐죠?

인덱싱의 필요성 데이터베이스에서 어떤 데이터를 가져오려 하는 상황을 가정해 봅시다. 이때 모든 데이터를 풀 스캔(처음부터 끝까지 쭉 탐색)으로 가져온다면 데이터를 가져오는 시간은 매우 오래 걸릴 것입니다. 특히나 데이터베이스 시스템은 디스크 기반이라 I/O 작업에서 상당한 시간을 소모합니다. 보통 디스크의 작업 속도가 얼마나 느린지를 가늠하기 위해 CPU, 메모리와 비교하곤 하는데, CPU와 메모리 모두 보통의 경우 나노세컨드 단위가 언급되는 반면 디스크는 밀리세컨드 단위가 소요되기 때문입니다. 디스크는 왜 느린가요? 데이터를 읽기 위해서는 *헤드를 움직여 데이터가 저장된 위치(*트랙)를 찾아야 합니다. 이때 소요되는 시간을 탐색 시간(seek time)이라고 합니다. 그 후 원하는 정보가 있는 *섹터가..

데이터베이스 2021. 6. 28. 04:35

mongoose로 relation 설정하기 (populate 이용하기)

mongodb는 관계형 데이터베이스들과 다르게 모델끼리의 관계를 직접 설정할 수 없습니다. 하지만 다른 documents들이 서로를 참조할 수 있게끔 설정할 수 있습니다. mongodb와 node.js의 ODM인 몽구스를 활용해 해당 기능을 구현해보려 합니다. 1. 모델(혹은 Collection) 생성 우선 예시를 위해 상품 모델과 상품판매자 모델을 생성합니다. 👇상품 모델 (sellerId 쿼리 주목) // 참고: 각자 documents들의 _id는 원래 자동으로 생성됩니다. const mongoose = require('mongoose'); const Schema = mongoose.Schema; const product = new Schema({ _id: Schema.Types.ObjectId, n..

데이터베이스/NoSQL 2020. 9. 26. 10:53

MongoDB Atlas를 사용해 Node.js로 데이터베이스 연결하기

MongoDB-Community (로컬 컴퓨터에 설치하는 데이터베이스) 외에도 MongoDB를 이용할 수 있는 방법이 있습니다. 바로 클라우드 서비스인 MongoDB-Atlas입니다. 1.Atlas로 데이터베이스 설정하기 www.mongodb.com/try Try MongoDB Products Try MongoDB products free. Download locally, or use in the cloud. Our software makes it easy for developers to work with data. www.mongodb.com Cloud, On-Premises, Tools 중 Cloud로 들어가 회원가입을 하고 Get started free를 클릭합니다. 저는 공부하는 단계이니 공짜인 ..

데이터베이스/NoSQL 2020. 9. 16. 09:07

SQL(관계형 데이터베이스) 핵심정리

인스턴스 > 스키마 > 테이블 구조로 이루어져 있습니다. 데이터를 본격적으로 저장하는 곳이 테이블입니다. 👇테이블 예시 테이블의 데이터들은 그 종류에 따라 필드로 구분됩니다. 필드 혹은 속성 혹은 프로퍼티 👇필드 이름 영역 하나의 필드를 공유하는 곳을 column이라고 부릅니다. 👇first_name column 하나의 완전한 데이터를 행(row), 레코드, 엔티티로 부릅니다. 모든 데이터들은 테이블의 rule에 맞게 들어와야 합니다. (ex. 데이터 종류.. 데이터 타입.. 데이터 크기 등) 데이터의 종류에 따라 한 스키마 안에서 다른 테이블에 저장됩니다. 그리고 한 테이블 안에서 각 필드의 기준에 맞게 데이터가 저장이 됩니다. 테이블의 필드는 각각 명확한 기준의 데이터 유형과 데이터 크기를 요구합니다..

데이터베이스/RDBMS 2020. 9. 16. 02:58

장바구니와 상품의 관계, Sequelize로 구현하기(다대다 관계)

한명의 고객은 하나의 장바구니를 가지고 있습니다. (일대일) 하지만 하나의 장바구니는 여러 개의 상품을 담습니다. 반대로, 하나의 상품 종류는 여러 고객의 장바구니에 포함될 수 있습니다. 그렇다면 장바구니와 상품의 상관관계를 어떻게 설정해야 할까요. 우선 예시를 위해 장바구니와 상품 모델을 각각 생성해 봅니다. const Sequelize = require('sequelize');// 시퀄라이즈 패키지 const sequelize = require('../util/database');// 인스턴스 // creating carts table const Cart = sequelize.define('cart', { id: { type: Sequelize.INTEGER, autoIncrement: true, a..

데이터베이스/RDBMS 2020. 9. 11. 06:41

추가 정보

인기글

최신글

페이징

이전
1 2
다음
TISTORY
불타는 키보드 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바