본문 바로가기
반응형

분류 전체보기299

[DB] ACID란? ACID - 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) ACID란? - 데이터베이스 트랜잭션들이 안정적으로 수행된다는 것을 보장하기 위한 성질을 카리키는 약어이다. 1. 원자성(Atomicity) - 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장한다. - 중간 단계까지 실행되고 실패하는 일이 없도록 하는것이다. 2. 일관성(Consistency) - 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지한다. 3. 고립성(Isolation) - 트랜잭션 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장한다. - 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 보.. 2023. 3. 16.
[MongoDB] Single Field Indexes, Compound Index (단일 인덱스, 복합 인덱스) [MongoDB] Single Field Indexes(단일 인덱스), Compound Index(복합 인덱스) Single Field Indexes (단일 인덱스) 쿼리에서 단 하나의 key만을 이용한다면 단일 키 인덱스를 사용해야 한다. db.records.createIndex( { score: 1 } ) records 필드를 키로 인덱스를 만든다. 여기서 1은 오름차순, -1은 내림차순을 의미한다. score생성된 인덱스는 다음과 같이 필드에서 선택하는 쿼리를 지원한다 . db.records.find( { score: 2 } ) db.records.find( { score: { $gt: 10 } } ) 생성한 인덱스를 확인하기 위해서 아래와 같이 조회 할 수 있다. db.records.getInde.. 2023. 3. 14.
[DB] 인덱스 저장 방식(Clustered Index, Non-Clustered Index) 인덱스 저장 방식에는 Clustered Index과 Non-Clustered Index가 있다. Clustered Index 1. 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식이다. 2. 실제 데이터가 순서대로 저장되어 있어 인덱스를 검색하지 않아도 원하는 데이터를 빠르게 찾을 수 있다. 3. 데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬 해야한다. 4. 한 개의 릴레이션에 하나의 인덱스만 생성 가능하다. Non-Clustered Index 1. 인덱스의 키 값만 정렬되어 있을 뿐 실제 데이터는 정렬되지 않는 방식이다. 2. 데이터를 검색하기 위해서 먼저 인덱스를 검색하여 실제 데이터의 위치를 확인해야하므로 클러스터드 인덱스에 비해 검색 속도가 떨어진다. 3. 한 개의 릴레.. 2023. 3. 14.
[MongoDB] 인덱스(index)란? 인덱스 설계 시 고려할 점 [MongoDB] 인덱스(index)란? 인덱스 설계 시 고려할 점 인덱스(index)란? 1. index는 우리 말로 색인이라 한다. 2. 데이터베이스의 인덱스는 원하는 정보를 빨리 찾을 수 있도록 돕는 색인의 역할을 한다. 3. 영어사전에서 a, b, c ... 알파벳 순서대로 정렬이 되어있듯이 인덱스도 순서가 있는 무언가로 정렬되어 있다. 4. 작은 숫자에서 큰 숫자 혹은 반대 즉, 정방향이든 역방향이든 무언가로 정렬이 되어있다. index가 왜 필요할까? 1. 정렬기준, 정렬조건을 알고 있다면 전화번호부, 책, 사전등에서 내가 원하는 정보가 어디쯤 있을지 예상이 가능하다. 2. 인덱스가 없이 정렬되지 않고 작성되어있는 책, 사전이라면 찾는 정보가 어디쯤 있을 지 예상하지 못한채 하나하나 찾아야 한.. 2023. 3. 13.
[DB] NDV, 카디널리티, 선택도, 밀도란? NDV(Number of Distinct Value), 카디널리티(Cardinality), 선택도(Selectivity), 밀도(Density) NDV(Number of Distinct Value) NDV는 특정 컬럼에 unique한 값이 얼마나 있는지 나타낸다. 중복되는 값이 존재하지 않는 primary key와 같이 unique한 속성을 지닌 컬럼의 경우는 테이블의 행수와 개수가 일치한다. 카디널리티(Cardinality) 카디널리티(Cardinality)는 특정 데이터 집합의 유니크(Unique)한 값의 개수이다. NDV와 값이 같다. 주민등록번호와 이름이라는 컬럼이 있는 테이블이 있다고 가정해보자. 주민등록번호는 값이 중복되지 않는 유일한(Unique) 값이다. 이름은 값이 중복되기도 하는 값이다.. 2023. 3. 13.
[js] 코드 최적화 - falsy값, 삼항 연산자, fallback값(nullish값 체크) falsy값 체크, 삼항 연산자, fallback값(nullish값 체크)의 코드 최적화 방법 (클린코드) 1. falsy값 체크 타입스크립트가 아니라 자바스크립트를 사용한다면 꼭 해야하는게 타입 체크이다. 특히, null ,undefined ,0 ,false ,NaN , "" 값을 체크해서 점검해야 할 때가 있다. 논리 부정연산자인 "!" 를 이용하면 쉽게 쓸 수 있다. const isFalsy = (value) => { if ( value === null || value === undefined || value === 0 || value === false || value === NaN || value === "" ) { return true; } return false; }; // 위 코드를 아래와 .. 2023. 3. 12.
[MongoDB] $elemMatch (query) [MongoDB] 몽고 DB에서 배열 요소에 대한 쿼리, $elemMatch (query) $elemMatch 연산자는 지정된 모든 쿼리 기준과 일치하는 요소가 하나 이상 있는 배열 필드가 포함된 문서와 일치한다.{ : { $elemMatch: { , , ... } } } - 단일 조건만 지정하는 경우 $elemMatch 표현식 내부에 $not 또는 $ne 연산자를 사용하지 않는다. - $elemMatch , $elemMatch 생략할 수 있다. - $elemMatch안에서 $where 식을 지정할 수 없다. - $elemMatch안에서 $text 쿼리 식을 지정할 수 없다.  요소 일치* MongoDB Shell에서 진행아래와 같은 문서 내용을 삽입해준다.db.scores.insertMany([ { .. 2023. 3. 10.
[MongoDB] 배열의 여러가지 Query 종류 배열의 여러가지 Query 종류 ( 배열과 일치, 요소에 대한 쿼리, 배열 요소에 대한 복합 필터 조건으로 쿼리, 여러 기준을 충족하는 배열 요소에 대한 쿼리, 인덱스 위치로 요소 쿼리, 배열 길이로 쿼리 ) * MongoDB Shell에서 진행 아래와 같은 문서 내용을 삽입해준다. db.inventory.insertMany([ { _id: 1, item: "A", price: 25, colors: ["blank", "red"], diff: [ 14, 21 ] }, { _id: 2, item: "B", price: 50, colors: ["red", "blank"], diff: [ 14, 21 ] }, { _id: 3, item: "C", price: 100, colors: ["red", "blank",.. 2023. 3. 10.
[MongoDB] 내장/중첩 문서에 대한 검색(쿼리) [MongoDB] 객체 안에 객체가 있는 문서 즉, 내장/중첩 문서에 대한 쿼리(검색) * MongoDB Shell에서 진행 아래와 같은 문서 내용을 삽입해준다. db.user.insertMany([ { _id: 1, info: { role: "Magician", level: 15 }, name: "user1", skills: [ "A", "B", "C" ] }, { _id: 2, info: { role: "Warrior", level: 20 }, name: "user11", skills: [ "B" ] }, { _id: 3, info: { role: "Magician", level: 25 }, name: "user111", skills: [ "A", "B" ] }, { _id: 4, info: { ro.. 2023. 3. 9.
[MongoDB] 값 일치, 값 포함 여부로 검색 ($eq, $regex) [MongoDB] $eq, $regex를 이용한 값(문서, 배열)일치, 값 포함 여부(정규식) 검색 $eq 비교 쿼리 연산자(Comparison Query Operators) 중 하나로 지정된 값과 같은 값을 찾는다. $regex 평가 쿼리 연산자 중 하나로 값이 지정된 정규식과 일치하는 문서를 선택한다. * MongoDB Shell에서 진행 아래와 같은 문서 내용을 삽입해준다. db.user.insertMany([ { _id: 1, info: { name: "user1", role: "Magician" }, level: 15, skills: [ "A", "B", "C" ] }, { _id: 2, info: { name: "user11", role: "Warrior" }, level: 20, skills.. 2023. 3. 9.
반응형