Today I Learned/TIL 06
-
2023 - 06 - 29 데이터베이스 인덱스Today I Learned/TIL 06 2023. 6. 29. 23:00
인덱스(Index)란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조입니다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장됩니다. 이렇게 인덱스가 생성하였다면 앞으로 쿼리문에 "인덱스 생성 컬럼을 Where 조건으로 거는 등"의 작업을 하면 옵티마이저에서 판단하여 생성된 인덱스를 탈 수가 있습니다. 만약 인덱스를 타게 되면 아래의 그림과 같이 인덱스를 타게 되고 먼저 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작을 하여 검색 속도의 향상을 가져올 수 있습니다. 즉 인덱스는 책에 있는 목차라고 생각하시면 편합니다. 우리가 책에서 정보를 찾을때도 먼저 원하는 카테고리를 목..
-
2023 - 06 - 28 REST APIToday I Learned/TIL 06 2023. 6. 29. 00:19
API : 어플리케이션을 연결해주는 매개체 API를 작성한다는 것은 웹 어플리케이션(프론트엔드)에서 원하는 기능을 수행하는 URL과 인터페이스를 제공한다는 의미 우리가 작성할 API에서 원하는 데이터를 받아 데이터베이스에 데이터를 저장하고, 저장된 데이터를 읽어서 웹 어플리케이션(프론트엔드)에 데이터를 제공하는 행위를 통해 사용자가 원하는 목적을 이룰 수 있게 해야한다 REST API (RESTful API) : Representational State Transfer의 줄임말 URL, Headers, Method등 네트워크 표현수단을 사람이 봐도 이해하기 쉬운 표현으로 정의하는 것 REST 아키텍쳐는 사람이 봐도 쉽게 이해할 수 있도록 "자원"을 정의하고, 이 "자원"을 중심으로 표현을 구성하는 원칙 ..
-
2023 - 06 - 27 이벤트 루프, 실행 컨텍스트, 호이스팅, 스코프체이닝, 프로세스, 싱글스레드, 논블로킹, 비동기, 동기 작업Today I Learned/TIL 06 2023. 6. 27. 10:51
이벤트 루프 컴퓨터는 하드웨어와 소프트웨어로 이루어져 있고, 소프트웨어에서 가장 중요한 프로그램 중 하나는 운영체제이다. 운영체제 (Operation System) 에서는, 사용자가 컴퓨터에게 일을 시키면 프로세스 (Process) 가 일을 한다. 프로세스는 OS로부터 CPU의 사용시간, 주소, 공간, 메모리 영역 등을 할당받는다. 그리고 프로세스는 그렇게 일을 할당받으면, 스레드 (Thread)라는 일을 한다. 멀티 스레딩, 싱글 스레딩, 멀티 프로세싱, 컨텍스트 스위칭등이 다 이 과정에서 일어난다. Node.js 는 싱글 스레드 (Single Thread) 와 논 블로킹 (Non-Blocking) 을 사용한다. 논블로킹은 작업이 다른 작업을 차단하지 않고 비동기적으로 실행되는 방식을 의미한다. 논블로..
-
2023 - 06 - 26 SQL 관계형 데이터베이스 일대일 관계, 일대다 관계, 다대다 관계Today I Learned/TIL 06 2023. 6. 26. 09:33
관계형 데이터베이스에서 일대일 관계, 일대다 관계, 다대다 관계는 데이터간의 연결을 나타내는 방식을 의미한다. 이를 SQL 모델을 사용하여 설명하면 다음과 같다. 1. 일대일 관계(One-to-One Relationship): 일대일 관계는 한 테이블의 레코드가 다른 테이블의 레코드와 하나씩만 연결되는 경우다. 예를 들어, "사용자"와 "프로필" 테이블이 있다고 가정할때, 각 사용자는 하나의 프로필을 가지며, 각 프로필은 오직 하나의 사용자와 연결된다. CREATE TABLE 사용자 ( 사용자_ID INT PRIMARY KEY, 이름 VARCHAR(50), -- 기타 사용자 관련 필드 ); CREATE TABLE 프로필 ( 프로필_ID INT PRIMARY KEY, 사용자_ID INT UNIQUE, --..
-
2023 - 06 - 25 Json Web Token, Map함수Today I Learned/TIL 06 2023. 6. 25. 15:24
Map함수는 같은 배열을 복제하는 역할을 한다. 배열안의 인덱스 값을 변경하여 새로운 배열을 만들어낸다. Map함수에 아무런 변경을 취하지 않았을 경우 똑같은 배열을 그대로 복제한다. const express = require('express') const app = express() const port = 3000 // 작성자, 날짜, 제목, id const posts = [ { id: 1, 날짜: "2023-12-33 12:00:23", 작성자: "우준호", 제목: "The standard Lorem Ipsum passage, used since the 1500s", }, { id: 2, 날짜: "2023-12-33 12:00:23", 작성자: "이다영", 제목: "Section 1.10.32 of ..
-
2023 - 06 - 24 시퀄라이즈 (Sequelize), ORM, RDBMSToday I Learned/TIL 06 2023. 6. 24. 01:27
시퀄라이즈 Sequelize는 ORM으로써 자바스크립트 객체와 데이터베이스의 관계를 연결해주는 도구 ORM = (Object Relation Mapping) 오브젝트 릴레이션 매핑, 객체관계연결도구 시퀄라이즈 같은 ORM은 여러가지 관계형 데이터베이스 (RDB)를 사용할 수 있다. 예를들어 MySQL이나, Oracle, MariaDB, PostgreSQL등 다양한 데이터베이스를 사용할 수 있다. 대표적인 관계형 데이터베이스는 MySQL, 비관계형 데이터베이스는 몽고DB등이 있다. 시퀄라이즈와는 달리, 몽구스(Mongoose)는 ODM으로 자바스크립트 객체를 document와 연결하는 도구다. ODM = (Object Document Mapping) 오브젝트 다큐먼트 매핑 NoSQ 계열 데이터베이스는 다 ..
-
2023 - 06 - 23 SQL 제약조건 - 쿼리문 기본 키 (Primary Key), 외래 키 (Foreign Key), Null, Unique 고유제약조건Today I Learned/TIL 06 2023. 6. 23. 01:06
SQL의 제약조건은 각 컬럼들의 제한사항을 관리하고, 조건을 위반하는 데이터를 방지하여 데이터베이스의 완전성을 보장하는 규칙. 1. Unique : (고유제약조건) 테이블에 소속된 특정 컬럼이 중복된 키를 가질 수 없는 조건 2. Null : 아무런 값을 입력받지 않을 수 있도록 설정하는 조건 3. Primary Key : (기본키 제약조건) 특정 컬럼을 테이블 내에서 고유성을 보장하는 컬럼을 설정하는 조건 4. Foreign Key : (외래키 제약조건) 테이블 간의 관계를 설정하는 조건 (데이터베이스 설계시 가장 많은 고민하게 됨) 연관관계 고민. 고객이 음식 주문시, 고객테이블에 주문정보를 넣을 경우, 회원이 중복된다. 그렇다면 음식테이블에 주문정보를 넣을경우, 음식이 중복된다. 따라서, 주문을 위..
-
2023 - 06 - 22 SQL (MySQL), 관계형 데이터베이스 (RDB), 비관계형 데이터베이스 (NoSQL)Today I Learned/TIL 06 2023. 6. 22. 01:03
데이터베이스 데이터를 잘 저장하고 잘 찾기위해 만들어진 소프트웨어 database management system (DBMS) 관계형 데이터베이스 (RDB) relational database 데이터 형식이 정해져있고, 데이터끼리 관계를 맺어 모순이 없는 데이터를 유지할수 있도록 도움 mySQL 등이 대표적이다. (스키마가 있고, 관계가 있다) 비관계형 데이터베이스 (NoSQL) non relational database 관계형 데이터베이스에 속하지 않는 모든 데이터베이스. 데이터 형태가 고정되어있지 않고 유연하게 확장할수있다 하지만 저장되는 데이터를 제대로 관리하지 않으면 데이터베이스에 저장된 데이터를 신뢰할수 없다. MongoDB등이 대표적이다. 테이블 형식이 자유로운 비관계형 데이터베이스와는 달리,..