본문 바로가기
728x90
반응형

db5

[DB] partitioning, sharding, replication ❓ partitioning 종류 vertical partitioning 수직 파티셔닝 정규화 1NF, 2NF, 3NF, BCNF 를 통해 테이블을 나누는 것도 vertical partitioning 입니다. 어떤 테이블에서 select를 통해 특정 컬럼만 가져오는 쿼리를 만들었을 때, 디스크에서 메모리로 데이터를 가져올 때 where 조건에 맞는 것들 중에 select 한 특정 컬럼만 골라서 가져오는 것이 아니라 일단 해당하는 로우를 모두 가져오게 됩니다. 그럼 이때 어떤 컬럼이 사이즈가 매우 큰 데이터(ex 게시글 본문)를 가지고 있는데 select 한 컬럼이 아니라면 필요없는 데이터를 가져온게 되니 메모리 낭비가 발생합니다. 이럴 때 vertical partitioning 을 하면 효율적입니다. 이런.. 2024. 3. 22.
[DB] 인덱스에서 B tree 를 쓰는 이유 B tree는 BST(Binary Search Tree, 이진 탐색 트리) 보다 확장된 형태입니다.  BST는 자식노드가 최대 2개인 트리 왼쪽 서브트리는 부모보다 작은 값, 오른쪽 서브트리는 부모보다 큰 값 B Tree는 이보다 확장되어 자식노드를 2개 이상 가질 수 있는 트리입니다.모든 leaf 노드(최하위 노드)들은 같은 레벨에 있습니다. 최대 자식노드 수 M이 5 일 때 5차 B tree 라고 합니다. 최대 자식 수    M최대 키 수       M-1최소 자식 수    M/2의 올림        (root, leaf node 제외)최소 키 수       M/2의 올림 – 1   (root node 제외)    DB 인덱스에 B tree 계열을 사용하는 이유 B tree 계열 (B+ tree, B.. 2024. 3. 20.
[DB] 인덱스, unique index, multicolumn index, hash index where name = '홍길동' name 이라는 컬럼에 인덱스 없으면 100만개 full scan – 시간복잡도 O(N) 인덱스가 걸려있고 B-tree 기반이라면 O(logN) 일반 인덱스 : 중복 가능 유니크 인덱스 : 중복 불가능 여러개를 한번에 묶어서 인덱스 생성 가능 = multicolumn index 테이블을 생성하면서 만들 수도 있고 테이블 생성 후에 만들 수도 있음 primary key에는 RDBMS가 자동으로 인덱스를 생성해준다. where a = 7 and b = 95; 위의 경우 a에 대해서 인덱스를 생성하면 인덱스내에서 a = 7인 것을 찾고 또 a = 7인 것들을 full scan해서 b = 95 인 것을 찾아야 하기 때문에 비효율적이다. 그래서 a, b를 하나로 묶은 인덱스를 만.. 2024. 3. 19.
[DB] ACID, 동시성 제어, serializabiliy, recoverabiliy, lock, MVCC, isolation 레벨 이쁘게 그림도 넣고 설명하고 싶지만 지금은 공부만 하는걸로도 시간이 부족하다.. 일단 설명만,, 데이터베이스 4가지 성질 ACID - Atomicity 원자성 : 하나의 트랜잭션은 모두 반영되거나 모두 반영되지 않아야 한다. - Consistency 일관성 : 동일한 규칙을 가지고 처리되어야 한다. - Isolation 격리성 : 동시에 여러 트랜잭션이 실행되어도 각각 별개로 동작해야 한다. - Durability 영속성 : 적용된 데이터는 영구적이어야 한다. concurrency control 동시성 제어는 다음을 제공한다 - serializabiliy 직렬화가능성 - recoverabiliy 회복가능성 스케쥴 : 각 트랜잭션 내의 오퍼레이션(연산자)들의 순서(리드, 라이트, 커밋 등) 시리얼 스케쥴과.. 2024. 3. 18.
[DB] 스키마가 뭔데? 스키마는 메타데이터의 집합 입니다. 테이블이 몇개있는지테이블 명이 뭔지테이블 용량이 얼마인지컬럼이 뭐가 있는지컬럼 길이는 몇인지인덱스가 뭔지뷰가 몇개인지함수, 트리거 등등 => DB를 설명하기 위한 데이터, 즉 메타데이터의 집합 = 스키마 스키마는 db의 구조와 제약 조건에 관한 전반적인 명세를 정의한 메타데이터의 집합입니다. 거두절미하고 실제 DB를 봅시다 create schema myschema;로 생성된 스키마는 데이터를 그룹화하여 네임스페이스같은 역할을 합니다.스키마는 여러개를 생성할 수 있고스키마가 다르면 테이블 명을 똑같이 할 수 있습니다.(물론 헷갈리니 그렇게 하진 않겠지만)  그럼 외부 스키마, 내부 스키마, 개념 스키마는 무엇이냐그냥 "개념적으로 나눈 것" 그 이상도 이하도 아닙니다.실제.. 2024. 2. 14.
728x90
반응형