목록백엔드 (20)
스터디
샤딩(Sharding)은 데이터베이스나 데이터 저장소의 데이터를 여러 개의 작은 단위(Shard)로 나누어 저장하는 수평 분할 기술이다. 이를 통해 데이터의 부하를 분산시키고 확장성을 높이는 방법이다. 샤딩의 개념데이터베이스에 저장되는 데이터가 점점 많아지면 단일 서버에 모든 데이터를 저장하고 처리하는 것이 불가능해질 수 있다. 이때 데이터를 여러 개의 서버나 노드에 분산 저장하면 각 노드가 처리해야 할 데이터의 양이 줄어들어 성능과 처리 속도를 개선할 수 있다. 이런 식으로 데이터를 나누어 저장하는 것을 샤딩(Sharding)이라고 하며, 나누어진 각 데이터의 단위를 샤드(Shard)라고 부른다. 샤딩의 주요 목적수평 확장(Scalability): 데이터를 여러 노드에 나누어 저장하면, 데이터가 증..
Redis를 공부할 때 ChatGPT와 한 대화를 정리한 글입니다. Redis vs MySQL1. 데이터 저장 방식Redis메모리(RAM)를 사용하여 데이터를 저장한다.키-값(Key-Value) 형태의 데이터 구조를 주로 사용하며, Has, List, Set 등 다양한 자료구조를 지원한다.휘발성(Volatile) 데이터베이스로, 서버가 재시작되면 데이터가 날아갈 수 있다. 하지만 지속성을 위해 디스크에 백업할 수 있다.빠른 읽기/쓰기를 제공하지만, 메모리 용량에 한계가 있다. MySQL데이터를 디스크(파일 시스템)에 저장한다.관계형 데이터베이스로, 테이블을 사용해 데이터를 체계적으로 저장하고 관리한다.비휘발성(Non-Volatile) 데이터베이스로, 서버가 재시작되어도 데이터가 유지된다.디스크 I/O로..

한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것이다.둘 이상의 데이터가 필요한 경우 테이블 조인이 필요하다.즉, 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법이다.테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어낸다.연결하려면 테이블들이 적어도 하나의 컬럼을 공유하고 있어야 한다.공유하고 있는 컬럼을 PK 또는 FK 값으로 사용한다. A 테이블IDNAME1AAA2BBB3CCCB 테이블IDAGE110220330440 > INNER JOIN내부 조인 -> 교집합공통적인 부분만 SELECTon을 이용한 join 조건 지정 (join 조건: on, 일반 조건: where)using을 이용한 join 조건 지정: using 절에서는 table 이름이나..

CORS(Cross Origin Resource Sharing)에서 Origin이란 한국어로는 '출처'라고 하는데, 이는 URL, 도메인 등과 비슷해 보이지만 엄연히 의미가 다르다. Origin은 URL에서 프로토콜, 도메인, 포트 번호를 합친 부분을 의미한다. URL: https://m1nomi.com:80/posts/123456?data=789#abc 여기서 프로토콜(Scheme이라고도 함)에 해당하는 부분은 https:// 도메인에 해당하는 부분은 m1nomi.com 포트 번호에 해당하는 부분은 :80 따라서 Origin은 https://m1nomi.com:80이다. 브라우저의 개발자 도구의 콘솔에서 Location 객체가 가지고 있는 origin 프로퍼티에 접근함으로써 손쉽게 ..
프로토타입과 클래스에 대해서 알아보기 전에 우선 객체 생성자라는 것을 알아보자.객체 생성자는 함수를 통해서 새로운 객체를 만들고 그 안에 넣고 싶은 값 혹은 함수들을 구현할 수 있게 해준다.function Animal(type, name, sound) { this.type = type; this.name = name; this.sound = sound; this.say = function() { console.log(this.sound); };}const dog = new Animal('개', '멍멍이', '멍멍');const cat = new Animal('고양이', '야옹이', '야옹');dog.say(); // 멍멍cat.say(); // 야옹 객체 생성자를..
> 싱글톤(Singleton) 패턴이란 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다.보통 객체를 만들 때 하나의 생성자로 여러 개의 서로 다른 객체를 만들 수 있는데, 싱글톤에서는 단 하나의 객체만 존재하는 것이 보장된다. 가장 간단한 싱글톤 예제는 아래와 같이 객체 리터럴을 이용하는 것이다.const plus = { a: 1, b: 2 };const minus = { a: 1, b: 2 }; 동일한 키와 값을 똑같이 지정했더라도 참조하는 주소값이 다르기 때문에 plus와 minus는 각각 유일하게 존재하는 서로 다른 객체이다. 그렇지만 이렇게 객체 리터럴로 사용하지 않고 비공개된 프로퍼티나 함수를 정의하고 싶다면 클로저(closure)를 사용해야 한다. 아래처럼 IIFE(즉시 실행 함수)로..

> MVC(Model-View-Controller)는 애플리케이션을 세 가지 역할로 구분한 개발 방법론이다. 사용자가 Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고, 그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달하게 된다. 이러한 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 된다. > MVC 패턴을 WEB에 적용 시 사용자가 웹사이트에 접속 (Users) Controller는 사용자가 요청한 웹페이지를 서비스하기 위해서 모델을 호출 (Manipulates) M..
> 요청과 결과가 동시에 일어나는 방식으로, 요청을 보낸 후 응답을 받아야 다음 동작이 진행된다.요청과 결과가 한 자리에 동시에 나타나는 것으로, 요청을 하면 시간이 얼마나 걸리든지 요청한 자리에서 결과가 주어져야 한다.A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞춘다.추구하는 같은 행위(목적)가 동시에 이루어진다. > 장점순서에 맞춰 진행된다.설계가 간단하다.직관적이다. > 단점여러 가지 요청을 동시에 처리할 수 없다.요청에 대한 결과가 반환되기 전까지 대기해야 한다. > 요청과 결과가 동시에 일어나지 않는 방식으로, 요청과 결과가 동시에 일어나지 않는다.요청한 곳에 결과가 나타나지 않으며, 하나의 요청에 따른 응답을 즉시 처리하지 않아도 그 대기 시간 동안 또 다른..