본문 바로가기
반응형

전체 글281

[React, Next.js] useEffect라는 Hook을 사용해서 렌더링 후 코드실행 [React, Next.js] 렌더링 후 코드 실행을 위한 React Hook, useEffect라는 Hook을 사용해서 컴포넌트가 마운트 됐을 때 (처음 나타났을 때) 제어 코드 React 구성 요소가 렌더링된 후 일부 코드를 실행해야 할때 사용하는 코드이고 useEffect Hook은 다음과 같이 사용된다. function HookComponent() { useEffect(() => { // 렌더링 이후 실행할 코드 }); return ( 컴포넌트 HTML 구성부 ); } 위 코드는 렌더링 후(컴포넌트가 마운트 됐을 때, 처음 나타났을 때) L3 주석부분의 코드가 실행된다. useEffect 를 사용 할 때에는 첫번째 파라미터에는 함수, 두번째 파라미터에는 의존값이 들어있는 배열 (deps)을 넣는다.. 2023. 3. 17.
[DB] 트랜잭션이란? 트랜잭션이란? 트랜잭션의 특징(ACID), 트랜잭션의 Commit과 Rollback이란? 트랜잭션이란? 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산들을 의미한다. 즉, 아래의 SQL문을 이용해서 DB에 접근하는 것을 의미이다. INSERT SELECT UPDATE DELETE (CRUD) 하지만 작업 단위는 꼭 질의어 한문장이 아니라 여러개의 질의어들의 집합일 수도 있다. 트랜잭션의 특징 트랜잭션의 특징은 4가지가 존재한다. - 원자성 (Atomicity) - 일관성 (Consistency) - 독립성 (Isolation) - 지속성 (Durability) 2023.03.16 - [개발 용어 정리] - [DB] ACID란? [DB.. 2023. 3. 16.
[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.
반응형