728x90
반응형

컴퓨터(Computer Science)/데이터베이스, DB, DataBase 19

NoSQL 이란

Not Only SQL 이란 뜻이다. 충분히 SQL도 복잡한데.. 왜 NoSQL이란게 나왔냐??라고 한다면 RDBMS처럼 요즘 많이 쓰는 관계형 DBMS의 한계를 극복하기 위해서 새롭게 수평적 확장을 할 수 있도록 만든 포맷이다. 알아보자 그렇다면 어떤 사람들이 NoSQL을 필요로할까???? 대표적으로 2가지라고 말할 수 있다. 데이터 규모의 확대되는 서비스 –저장할 데이터가 많아지면서 읽기/쓰기에 있어서 RDB가 제약 요소가 됨 –RDB의 수평적 확장성 한계로 새로운 해결책이 필요 웹 서비스처럼 구조가 변화무쌍한 서비스 –저장할 데이터의 형태가 계속 변화 –사용자의 데이터 요구가 일관적이지 않고 다양 NoSQL이 어떤 특징을 가지고 있는데??? 기본적으로 key & value 로 저장하지만 여러가가지로..

Redis 와 Memcached

Redis ( REmote DIctionary Server ) 캐시 시스템 영속성, 다양한 데이터 구조 제공 모든 데이터를 메모리에 저장하기 때문에 빠른 성능 Read 성능을 개선하기 위한 서버 측 복제 지원 Write 성능을 개선하기 위한 클라이언트 측 샤딩(Sharding) 지원 Key-value 형태로 데이터를 저장 NoSQL의 DB 일반적으로는 싱글스레드 작업으로 수행함(Slow Query 지양) Memcached 보다 기능이 많음 메모리 이상의 데이터는 LRU(Last Recently Used) 알고리즘으로 삭제 → 다르게 가능 Master-Slave 구조로 Fail-Over 가능 주요 기능 다양한 데이터 구조 정렬과 같은 작업을 수행할 때는 기존의 DBMS에서는 On-Disk작업으로 시간이 더..

DB 기본 용어

요즘에 많이 쓰이는 RDBMS 기본 DB 구조 Relation(=table), 테이블 : 같은 성격을 가진 데이터들의 집합 tuple(=row, record) : 테이블의 각 행 Attribute(=column, field) : 테이블에서 속성을 나타내는 각 열 Cardinality : tuple의 수. 데이터 집적도 Degree : attribute의 수 Snapshot, 스냅샷 DB에 저장되어있는 특정 순간의 데이터 집합 상태 데이터베이스의 모든 상태가 유효해야함 DB가 유효한 상태란 Schema에 명시된 모든 구조와 제약조건들이 만족된 상태를 말함(수행 중인 트랜잭션이 없음) Snapshot 생성 1 : 데이터베이스를 shut down 후 Snapshot 생성 Snapshot 생성 2 : Snaps..

Index, 인덱스

정의 데이터 레코드에 빠르게 접근하기 위해 쌍으로 구성되는 데이터 구조 Index가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 뒤지는 FULL TABLE SCAN이 발생 원래 DB Table의 Column인 Data를 인덱스 생성함 SMITH는 Location을 통해서 직접 접근 가능 나오게 된 배경 DB의 양 (row) 가 많아짐에 따라 실행 속도가 차이가 나기 시작함(합 연산) JOIN을 할 때마다 실행 속도가 차이 나기 시작함(곱 연산) 서브 쿼리를 할 때 마다 실행 속도가 차이 나기 시작함(곱 연산) 테이블 자체가 커짐에 따라 테이블에 연산을 적용하는 것이 슬로우 쿼리를 만들게 됨 목적 RDBMS의 검색 성능 향상 SELECT 쿼리의 WHERE 절이나 JOIN 키워드를 사용했을 때 쓰임 ..

Key, 키

Key : DB에서 조건을 만족하는 튜플을 찾거나 정렬의 기준이 되는 속성(Attribute) 튜플 : 릴레이션을 구성하는 각각의 행, 속성의 모임 종류 · 슈퍼키(Super Key) 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 중복되는 값은 나타나지 않음 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있음 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못함 => 위의 표를 보면 Student_ID 만으로도 하나의 튜플을 확정 지을 수 있고 SSN으로도 확정지을 수 있음 =..

DB 파티셔닝, Partitioning

DB 공부를 소홀히 했었다. 솔직히 내가 슬로우쿼리를 엄청나게 개선시킬 자신은 없지만 DB와 작업이 어떻게 되는지는 알아야 한다. 그래서 DB를 공부하기로 했다. 알아보자 DB 파티셔닝이 무엇인지부터 알아보자 파티셔닝이란 논리적인 데이터 element들을 다수의 entity로 쪼개는 행위 라고 한다. 즉, 한 덩어리로 있어도 되는 것들을 쪼개는 행위다. DB 입장에서 말하자면 큰 table이나 index를, 관리하기 쉬운 partition이라는 작은 단위로 물리적으로 분할하는 것을 의미한다. **물리적인 데이터 분할이 있더라도, DB에 접근하는 application의 입장에서는 blackbox 이다. => 알 수 없어야 한다. ??? 음.. 왜 필요한데??? 서비스의 크기가 점점 커지고 DB에 저장하는 ..

데이터베이스, 트랜잭션(Transaction) - 3(장애와 복구)

이 글에서는 트랜잭션 장애(failure)와 복구(recovery)에 대해서 알아보겠다. 살다보면 원치 않는 일을 마주하는 것처럼 DBMS도 정상적인 수행을 하다가도 장애가 발생할 수 있다. 원인도 각양각색이다. -소프트웨어 장애와 하드웨어 장애 하지만 우리는 하드웨어 장애라면 자신있다 -> 걍 새거로 교체하면 다 되는 것이다 ㅎㅎ 근데 소프트웨어적 에러는 우리가 참 처리하기 힘들다. 장애가 일어났을 경우 장애 이전의 상태로 복원하는 과정인 복구를 진행하기도 어렵다. 왜 위에 말이 나온건진 모르겠지만 그렇다면 우선 DB에서의 종류는 무엇이 있을까?? (3가지가 있다) -트랙잭션 장애 트랜잭션 내의 논리적 오류나 잘못된 입력 데이터 또는 시스템 내의 자원 부족으로 인한 트랜잭션의 중단이다. -시스템 장애 ..

데이터베이스, 트랜잭션(Transaction) -2(동시성 제어)

저번 글에서 상태 전이도를 보면서 트랜잭션에 대해서 동시성 제어를 해야한다고 말했다. 그것부터 이어서 가보자 동시성 제어(Concurrency Control) 동시성 제어는 꼭 필요하다. 컴퓨터 프로그래밍에서 무엇을 배웠든 간에 빠지지 않고 등장하는 주제 중 하나다. 혼자 사용하면 거의 필요 없지만 항상 다중 사용자 DBMS를 염두에 두고 설계한다.(왜? 돈벌어야지 ㅎ) -> 하나의 트랜잭션이 완료되지 않은 상태에서 다른 트랜잭션이 실행 가능?? 트랜잭션 간의 간섭이 발생하여 일관성이 깨지면 안되니까 제어를 하는 것이다. 바로 그것이 동시성 제어. 무슨 연산이길래 서로 간섭을 한다는 것일까??? 알아보자 역시나 읽고 쓰는 문제다. ㅎㅎ 내가 다 읽기 전에 누가 내용을 바꿔 써버리면 잘못읽게 되니까? re..

데이터베이스, 트랜잭션(Transaction) -1 (개념과 정의)

데이터베이스 모델도 설계를 다했으니 이제 진짜로 사용하는 단계에 돌입해야 한다. 하지만 그 전에 데이터베이스의 논리적 연산 단위인 트랜잭션에 대해 알 필요가 꼭 있다. 우선 응용프로그램에 대해서 살펴보자 일반 응용 프로그램의 구성 - 명령어들의 집합(메서드나 클래스 단위로 구성) 하지만 데이터베이스들은 다른 방식으로 응용프로그램을 바라봐야 한다. -> 세부 프로그램이 작업 단위가 된다. 데이터베이스 응용 프로그램의 구성 - 업무처리에 관련된 세부 프로그램 단위 - 세부 프로그램들은 데이터베이스에 대한 연산(검색/삽입/삭제/수정)으로 구성 - 예를 들면 은행에서 계좌이체, 대출, 예금, 출금 업무 다시 트랜잭션의 본 뜻은 - 논리적인 작업 단위를 구성하는 연산들의 집합 - 실행 중 멈추거나 중단되지 않는 ..

데이터베이스의 물리적 저장 구조와 인덱스

** 물리적 저장구조와 인덱스는 뗄레야 뗄 수 없는 조합이므로 같이 배워보자 관계형 데이터 모델에서 데이터베이스는 테이블의 집합이고 테이블은 레코드들의 집합이다. 최종적으로 디스크에 저장되어 관리해야하는데 저장 매체의 관점으로 살펴보는 것이다. 바로 그것이 물리적 저장 구조다. 물리적 데이터베이스는 운영체제가 관리하는 파일 시스템의 기능들을 이용하는데 DBMS 와 파일 시스템과의 관계는 아래 그림과 같다. ** 입출력 단위는 블록(Block)이 된다. -> 우리가 다루는 데이터 수준 블록이란 하나 이상의 레코드들이 저장된 단위를 말한다. 파일이란 하나 이상의 테이블들이 저장된 단위를 말한다. DBMS는 물리적 저장소가 아니라는 것이다. 도대체 어떻게 블록 내에 레코드를 저장하는 것일까?? 이런 SQL문이..

728x90
반응형