티스토리

그릿 속의 해빗
검색하기

블로그 홈

그릿 속의 해빗

loosie.tistory.com/m

Connecting The Dots

구독자
49
방명록 방문하기
공지 프로그래머로 사는 법 요약본 (샘 라⋯ 모두보기

주요 글 목록

  • Database Index 탐구: Hash, B+-Tree, LSM Tree Index 탐구: 예제 Log Structured 저장소 이전에 DB 인덱스 개념에 대해 다뤘었다. 더 나아가 인덱스에 대해 공부해보았다. 이를 설명하기 위해 Mac 터미널 환경에서 bash 함수를 사용하여 기본적인 key-value 저장소를 만들었다. #!/bin/zsh db_set(){ echo "$1, $2" >> database } db_get() { grep "$1," database | sed -e "s/^$1,//" | tail -n 1 } 해당 파일은 append-only만 가능한 로그 저장소이다. 그러면 중복된 key가 들어갈 경우에는 'tail -n 1' 명령어로 인해 가장 마지막에 추가된 key의 value가 조회된다. > db_set 1234 '{"name":"aaa"}' > db_.. 공감수 0 댓글수 0 2023. 1. 29.
  • Database Index 탐구: 디스크 I/O, 랜덤 액세스 데이터베이스 저장소, 디스크 Disk 데이터베이스에서 데이터를 저장하고 관리하는 장치로 디스크를 가장 많이 사용한다. 디스크는 메모리 공간이 넉넉한 반면에 속도가 느리다는 단점이 있다. 그래서 메모리에 임시로 데이터를 저장하여 빠르게 읽어올 수 있는 캐시를 사용하여 웹 서비스 성능을 향상시키기도 한다. 메모리에 접근할 때는 나노초(ns)단위로 처리할 수 있으나, 디스크에 접근할 때는 밀리초(ms)단위의 시간이 필요하다. 사람 입장에서는 ms가 빠를 수도 있겠지만 컴퓨터 입장에서는 상대적으로 굉장히 느린 속도이다. 디스크 I/O 부분이 성능에 가장 영향을 미치는 요소이다. 보통 디스크 I/O는 데이터베이스에 데이터를 기록하고 기록된 정보를 찾아 꺼내오는 것을 말한다. DBMS 입장에서 보면 디스크 I/O는.. 공감수 1 댓글수 0 2022. 5. 22.
  • [DB] 캐싱과 캐싱 전략에 대해 알아보자 Cache Cache는 데이터나 값을 저장하는 임시 저장소로, 데이터를 더 빠르고 효율적으로 액세스할 수 있게 해준다. 원본 데이터 접근보다 빠르다. 같은 데이터를 반복적으로 접근하는 상황에서 사용하기에 알맞다. 인증 세션 값과 같은 잘 변하지 않는 데이터일수록 더 효율적이다. 컴퓨터 메모리 계층 구조 레이어별로 캐시를 보면 용량은 위로 갈수록 커지고 속도로 밑으로 내려갈수록 빨라진다. 보통 우리가 사용하는 Redis는 Memory층에 존재한다고 보면 된다. Disk가 제일 느리고 L3 < L2 < L1 순으로 속도가 빠르다. Disk 접근 속도가 SSD를 쓰고있지만 Memory와 비하면 속도가 굉장히 차이난다. 그렇기 때문에 Memory에 올려놓고 쓰는 게 Disk에서 읽어오는 것보다 훨씬 빠르다. 그.. 공감수 5 댓글수 0 2022. 4. 13.
  • [DB] REDO와 UNDO 동작 과정을 이해해보자 (지속성을 구현하기 위해) REDO와 UNDO를 배워야 하는 이유 트랜잭션이 가지고 있어야 하는 특성에 'ACID'라는 것이 있다. 이 특성을 구현하기 위해서 REDO와 UNDO는 빠질 수 없으므로 이들을 배울 필요가 있다. REDO와 UNDO에 대한 설명에 들어가기에 앞서 ACID 특성이 대체 무엇인지를 먼저 살펴보자. A(Atomicity) 원자성 트랜잭션에 포함된 데이터의 변경은 '전부 OK'이거나 '모두 NG'라는 'all or nothing'을 말한다. DBMS는 수행 중인 트랜잭션에서 데이터를 일부만 변경하고 나머지는 수행하지 않은 채 커밋할 수 없다.예를 들어, 어떤 트랜잭션에서 A 계좌에서 출금하고 B 계좌에 입금했을 때 '출금은 기록됐지만 입금은 기록되지 않았다'는 상황이 발생하면 곤란하다. 원자성은 이런 일이 일.. 공감수 9 댓글수 0 2021. 10. 27.
  • [DB] 대기와 Lock에 대해 알아보자 대기와 Lock 구조를 알아야 하는 이유 시스템을 운영하다 보면 많은 시스템에서 데이터베이스 안에 대기가 발생해 성능이 제대로 나오지 않거나 처리가 지연되기도 한다. 대기와 구조를 제대로 이해하지 않으면 튜닝도 못 하고, 지연을 해소할 수도 없다. 나아가 'Lock 대기', 'Deadlock(교착 상태)'과 같은 장애를 만날 수도 있다. 이런 경우도 대기나 Lock의 구조를 제대로 이해하고 있지 않으면 대처도 어렵고 애플리케이션 담당자에게 설명하기도 어렵다. (해당 글은 오라클을 기준으로 작성하였다) 데이터베이스에 Lock이 필요한 이유 데이터베이스를 창고로 비유하고 오라클을 창고 업자에 비유해서 Lock이 왜 필요한지 이야기해보자. 고객이 창고에 맡긴 물건(ID:1)의 내용에 숫자 1을 더하고 싶다고 .. 공감수 7 댓글수 0 2021. 10. 24.
  • [DB] RDB 데이터 구조에 대해 알아보자 RDB 데이터 구조를 배워야 하는 이유 이 글은 오라클 기준으로 작성하였다. 오라클은 전달받은 데이터를 그대로 저장하는 것이 아니라, 몇 개의 상자로 나누어서 저장하도록 고안됐다. 그래서 상자와 관련된 이야기(데이터 구조)는 평상시 업무에서도 빈번하게 화두에 오르기 때문에 몰라서는 안된다. 또한, 애플리케이션 개발 팀에서도 테이블이나 인덱스의 생성과 생성 요청을 해야 하므로 어느 정도의 지식은 필요하다. 그리고 성능과 관련된 부분에서도 데이터 구조와 관련된 지식은 필요하다. 데이터 구조에 관한 용어는 다음과 같다. 미리 익숙해지도록 하자. 테이블스페이스(tablespace) 세그먼트(segment) 익스텐트(extent) 블록(block) 데이터 파일(datafile) 기존 데이터 저장방식 문제점 단순하.. 공감수 0 댓글수 0 2021. 10. 24.
  • DB 동작과정을 이해해보자 (애플리케이션과 DB 커넥션) DB 동작과정 살펴보기 이 글은 오라클 기준으로 작성하였다. 애플리케이션에서 오라클로의 커넥션 과정의 이해가 필요한 이유는 애플리케이션에서 접속하는 것을 최적화하는 것만으로도 DB의 성능을 끌어올릴 수 있고, 애플리케이션에서 피해야만 하는 코딩 방식을 이해하는 데도 도움이 되기 때문이다. 오라클은 애플리케이션 서버를 사용한 시스템이나 클라이언트/서버 형태의 시스템에서도 많이 사용된다. 즉 오라클과 '오라클을 사용하는 애플리케이션'이 같은 서버에 있는 경우는 드물며, 애플리케이션(오라클 클라이언트)과 오라클이 네트워크를 통해서 통신하는 경우가 많다. 그러므로 접속 설정으로 인한 장애가 쉽게 발생하지만, 간단한 장애일 때는 아키텍처를 이해하고 있다면 대부분 쉽게 해결할 수 있다. 소켓 동작 이미지 오라클은 .. 공감수 1 댓글수 0 2021. 10. 14.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.