cs 10

[DB] 데이터베이스 인덱스(Index)란 무엇인가?

아직까지 미미한 양의 DB를 다뤄보았기 때문에 데이터 양이 증가할수록 실행 속도가 눈에 띄게 느려지는 경험을 해보지는 못했다. 하지만 DB데이터의 양이 증가할수록 쿼리를 잘 사용해야하고, 쿼리의 성능을 높이는 데 중요한 것은 인덱스를 적재적소로 활용해야 함은 잘 알고 있다. 오늘은 인덱스의 개념과 구조, 그리고 필요성, 사용했을 때 장단점들에 대해 정리해보고자 한다. ✅ 인덱스(Index)란? 인덱스(Index)는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료구조이다. 테이블의 특정 컬럼(Column)에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 컬럼의 값과 물리적 주소를 (key, value)의 한 쌍으로 저장한다. 인..

Computer Science 2023.01.30

추상클래스(Abstract)와 인터페이스(Interface)의 공통점과 차이점

✅ 추상 클래스 - 객체들의 공통 특성들을 모아놓은 클래스 추상 클래스는 여러 자식들이 가지고 있는 공통된 속성들을 뽑아서 하나의 클래스를 만들어 놓은 것을 뜻한다. 그래서 하위 클래스에서도 extends(상속)이라는 키워드를 사용하여 이 추상 클래스를 상속받아 객체를 구체화시켜간다. 이때 상속의 의미는 ~의 한 종류 라는 의미를 가지게 된다. 추상 클래스는 클래스라는 이름에서 알 수 있듯 엄연한 객체이다. 단독으로 생성하지는 못하지만 객체이기에 생성자도 사용할 수 있다. abstract class 클래스이름 { public abstract void 메서드이름(); } 🔎 추상 클래스 정리 추상클래스는 하위 클래스들의 공통점들을 모아 추상화하여 만든 클래스 추상클래스는 다중 상속이 불가능하여 단일 상속만..

Computer Science 2023.01.15

TCP 프로토콜 연결 / 종료 과정

✅ TCP란? TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다. ✅ TCP 3-Way HandShake란? TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정. 데이터를 주고받기 전에 서버와 클라이언트가 확인 패킷을 3단계로 교환하여 연결을 맺는다. Flag 설명 SYN(연결 요청 플래그) - TCP에서 세션을 성립할 때 가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 시퀀스 번호를 보내게 된다. ACK(응답플래그) - 상대방으로부터 패킷을 받았다는 걸 알려주는 패킷 - 다른 플래그와 같이 출력되는 경우도 있음 - 받는 사람이 ..

Computer Science 2023.01.10

디자인 패턴(Design Pattern)이란?

✅ 디자인 패턴(Design Pattern)이란? 소프트웨어 개발 방법으로 사용되는 디자인 패턴(Desigin Pattern)은 과거의 소트프웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 즉 효율적인 코드를 만들기 위한 방법론이다. - SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. - 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방법론 - 자주 반복되는 문제에 해결책 -> 재사용과 팀원과의 의사소통 - 23가지 디자인 패턴이 존재 - 연관되는 개념으로는 SOLID 원칙과 클린 코드(Clean Code) ✅ 디자인 패턴 종류 디자인 패턴은 목적에 따라 3가지로 구분할 수 있다..

Computer Science 2023.01.08

CPU(중앙처리장치) 개념 및 구성 요소

CPU(중앙처리장치)의 개념 CPU(Central Processing Unit)는 마치 사람의 두뇌와 같이 명령어의 해석과 자료의 연산, 비교 등의 처리를 제어하는 컴퓨터 시스템의 핵심 장치이며, 다양한 입력 장치로부터 자료를 받아서 처리한 후 그 결과를 출력장치로 보내는 일련의 과정들을 제어하고 조정하는 일을 수행한다. 중앙처리장치는 제어장치, 연산장치, 레지스터로 구성된다. CPU(중앙처리장치)의 구성 CPU는 제어장치, 연산장치, 레지스터로 구성된다. ✅ 제어 장치(Control Unit): CU 컴퓨터의 모든 동작을 제어하는 역할 담당. 프로그램에서 내리는 명령어를 해석해서 동작이 필요한 장치에 제어 신호를 보내 처리를 지시한다. - 레지스터 사이의 데이터 전송을 감시하고 ALU(연산 장치)의 동..

Computer Science 2023.01.04

TCP/IP 계층 개념과 OSI7계층 비교

✅ TCP/IP TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP (인터넷 프로토콜)와 전송 조절 프로토콜인 TCP (전송 제어 프로토콜)로 이루어져 있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다.(unreliable datagram service) TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에, 묶어서 TCP/IP로 부르기도 한다. 출처: 나무위키 ✅ TCP/IP의 계층 Application Layer(응용계층) 특정 서비스를 제공하기 위해 애플리케이션 끼리 정보를 주고 받을 수 있다..

Computer Science 2023.01.03

네트워크 라우터 개념(Router)

✅ 라우터(Router) 라우터는 패킷의 위치를 추출하여 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치이다. 이때 최적의 경로는 일반적으로 가장 빠르게 통신이 가능한 경로이다. 가장 빠르게 통신이 가능한 경로라는 것이 최단 거리 일 수도 있지만, 돌아가는 경로라도 고속의 전송로를 통하여 전달이 되는 경로가 될 수도 있다. 즉, 라우터(Router)는 네트워크와 네트워크 간의 경로(Route)를 설정하고 가장 빠른 길로 트래픽을 이끌어주는 네트워크 장비이다. 라우터는 다른 기종간의 네트워크를 연결하는 기능을 하기 때문에 여러 가지 프로토콜에서 전송되는 패킷을 받아들일 수 있어야 한다. 이렇게 받아들인 패킷을 여러 경로 중 가장 효율적인 경로를 선택하여 ..

Computer Science 2023.01.03

OSI 7 Layer 디테일 정리(+ TCP/IP 4계층)

OSI 7계층이란 무엇일까? OSI 7계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준화 기구(ISO)에서 정의한 표준 모델이다. 7 Layer에서 알 수 있듯 1계층 ~ 7계층으로 구성되어 있다. 하지만 나를 포함한 네트워크를 잘 모르는 사람들은 도대체 7계층이 뭐지..? 싶은 생각이 든다. 그래서 나도 공부할 겸 테코톡 히히님의 강의를 참고해 OSI 7계층과 TCP/IP 4계층에 대해서 정리해볼까 한다. 📝 1계층 - 물리 계층(Physical Layer) 두 대의 컴퓨터가 통신하려면 어떻게 해야될까? 먼저, 모든 파일과 프로그램은 0과 1의 나열이라는 말을 들어본 적이 있을 것이다. 그렇기 때문에 컴퓨터가 통신하려면 0과 1을 주고받을 수 있으면 된다. 전선을 통해 컴퓨터들이 연결되어..

Computer Science 2022.12.30

프로토콜(Protocol)의 개념, 요소, 특징, 계층 구성

프로토콜(Protocol)이란? 프로토콜은 서로 다른 시스템 및 기기 간 데이터 교환을 원활히 하기 위한 표준화된 통신규약이다. 기기 간 통신은 교환되는 데이터 형식에 대해 상호 협의를 요구하기 때문에 프로토콜이 필요한 것이며, 공통의 데이터 교환 방법이나 순서에 대해 정의한 약속, 규칙 체계를 의미한다. 따라서 동일한 프로토콜을 사용하면 기종 및 프로그램이 다르더라도 컴퓨터간 상호 통신이 가능하다. 따라서 정보 통신을 하기 위해 표준 프로토콜을 채택하여 통신망을 구축해야 한다. -> 각각의 프로그램, DB, 파일 서비스 등을 가지고 있는 컴퓨터 네트워크가 데이터를 주고 받기 위해 지켜야 하는 약속을 공식화 한 것 예) 손님이 주문을 받는 사람에게 외계어로 주문을 할 수 없다. 주문을 하기 위해 지켜야 ..

Computer Science 2022.12.29

마이크로서비스 아키텍처(MSA)란?

Monolithic MSA가 등장하기 이전 기존의 시스템은 정보제공을 위한 화면부터 데이터베이스까지 전체가 하나의 흐름으로 묶여있는 Monolithic Architerture이었다. Monolithic Architecture는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태로 웹 개발을 예로 들면 웹 프로그램을 개발하기 위해 모듈별로 개발을 하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물로 패키징하여 배포되는 형태를 말한다. 장점 개발 초기에는 단순한 아키텍처 구조로 인해 개발이 용이하다. 어떤 서비스든지 개발되어 있는 환경이 같아서 복잡하지 않다 배포가 간단하다 쉽게 고가용성 서버 환경을 만들 수 있다. 단점 프로젝트의 규모가 커짐에 따라 애플리케이션 구동 시간이 늘어나고 빌드 및 ..

Computer Science 2022.12.29
728x90