CS
13 posts
데이터베이스(Database) 비교 - Oracle, MySQL, PostgreSQL, SQLite

데이터베이스(Database) 비교 - Oracle, MySQL, PostgreSQL, SQLite 1. 배경 상황 이전 회사 팀원분들과 토이 프로젝트를 준비하고 있는데, 데이터베이스를 선정하기 전 각 데이터베이스에 어떤 장단점이 있는지 살펴보았다. 데이터베이스는 필요에 따라 데이터를 일정한 형태로 저장해 놓는 것을 뜻하는데, 이 데이터베이스를 관리할 수 있는 시스템을 DBMS라고 한다. DBMS에는 관리형 데이터베이스 시스템(RDBMS: Relational Database System)과, NoSQL로 구분되는데, 이번에는 RDBMS의 대표격인 Oracle, MySQL, PostgreSQL, 그리고 Django 프레임워크에서 기본적인 연동이 제공되는 SQLite를 비교해보도록 하겠다. 2. Oracle 장점 고성능(빠른 속도) 여러 가지 기능 제공 백업 등 안정성 대기업에서 많이 사용 단점 라이선스 비용이 비쌈 유지보수 비용 비쌈 무료 버전의 용량 및 기간 제한 존재 3. MyS…

October 09, 2022
CS
AS번호(AS number)란? AS번호 소유자 확인 방법

1. 배경 상황 이전 프로젝트에서 AWS DX(Direct Connect) 구축 중 연결 정보를 받은대로 넣었음에도 불구하고 Link가 계속 Up 되지 않는 이슈가 있었는데, 알고보니 AS 번호가 잘못 전달이 되어 발생한 이슈였다. 관련해서 검색해보니 내가 이전 직장에서 근무했을 당시 사용했던 사이트 외의 다른 사이트도 찾을 수 있어서 AS번호에 대한 개념을 정리 할 겸 포스팅 하려 한다. 2. AS number(망 식별 번호)란? AS Number(Autonomous System Number, ASN)는 한국어로는 망식별번호라고도 한다. 동일한 라우팅 정책으로 하나의 관리자에 의해 운영되는 네트워크를 자율 시스템(AS, Autonomous System)이라고 부르며, 각 자율 시스템을 식별하기 위해 만든 고유한 숫자를 망 식별 번호라고 한다. 간단하게 설명하면, 여러 IP 대역들을 묶어서 편리하게 통신할 수 있도록 만든 것이라고 생각하면 되며, 작은 기업에서는 조직 자체에 할당되…

September 21, 2022
CS
IP(Internet Protocol)주소란?

1. IP주소란? IP(Internet Protocol)주소: 글로벌 단위에서 장치간의 통신이 가능하도록 도와주는 논리적 주소이다. 때때로 변할 수 있는 값이다. 소프트웨어 설정을 통해 장치에 할당된다. 비신뢰성과 비연결성이 특징으로, 전송 과정에서 패킷이 손상되거나 순서가 섞일 수 있으므로 TCP와 같은 상위 프로토콜을 이용해야한다. 2. MAC 주소란? MAC(Media Access Control) 주소: 기기(Device)마다 할당된 물리적인 주소이다. MAC주소는 이더넷 통신을 하기위해 사용되며, 다른 MAC주소와 겹치지 않는다. 변하지 않는 값이다. ARP(Address Resolution Protocol) 프로토콜을 이용해 IP주소를 MAC주소와 매칭한다. 총 48비트로 구성되며 :로 구분한다. 3. IP주소가 필요한 이유 현재는 세계에 장비가 매우 많기 때문에 MAC 주소로만 통신하기가 어렵다. 예를 들어, 한국의 A컴퓨터에서 미국에 있는 B컴퓨터로 가기 위해서 나…

July 12, 2022
CS
쿠키(Cookie), 세션(Session), 캐시(Cache)란?

기술면접에서 접했던 질문 중 ‘캐시에 대해 설명해달라’는 내용이 있었는데, 너무 짧게 대답한 듯 하여 다시 공부하고자 포스팅을 작성하게 되었다. 참고로 캐시 개념은 쿠키, 세션과 많이 연관지어 설명이 되어있어서 캐시 뿐만 아니라 HTTP의 특성과, 쿠키, 세션도 캐시와 함께 알아보도록 하겠다. 1. HTTP의 특징 HTTP 프로토콜은 Stateless와 Connectionless라는 두 가지 특성을 가졌다. (1) Stateless 클라이언트의 상태 정보를 가지지 않는 처리 방식이다. 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다. (2) Connectionless 클라이언트가 서버에 요청(request)을 했을 때, 그 요청에 맞는 응답(Response)를 보낸 후 연결을 끊는 처리 방식이다. 다만, HTTP/1.1 버전에서 연결을 유지하고, 재활용하는 기능이 Default로 추가되었다(keep-alive 값으로 변경 가…

July 11, 2022
CS
쿠키(Cookie), 세션(Session), 캐시(Cache)란?

기술면접에서 접했던 질문 중 ‘캐시에 대해 설명해달라’는 내용이 있었는데, 너무 짧게 대답한 듯 하여 다시 공부하고자 포스팅을 작성하게 되었다. 참고로 캐시 개념은 쿠키, 세션과 많이 연관지어 설명이 되어있어서 캐시 뿐만 아니라 HTTP의 특성과, 쿠키, 세션도 캐시와 함께 알아보도록 하겠다. 1. HTTP의 특징 HTTP 프로토콜은 Stateless와 Connectionless라는 두 가지 특성을 가졌다. (1) Stateless 클라이언트의 상태 정보를 가지지 않는 처리 방식이다. 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다. (2) Connectionless 클라이언트가 서버에 요청(request)을 했을 때, 그 요청에 맞는 응답(Response)를 보낸 후 연결을 끊는 처리 방식이다. 다만, HTTP/1.1 버전에서 연결을 유지하고, 재활용하는 기능이 Default로 추가되었다(keep-alive 값으로 변경 가…

July 11, 2022
CS
데이터베이스(Database) 인덱스(Index) 자료구조

1. 데이터베이스 인덱스(Database Index)란? 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료구조 책에 있는 목차와 같은 개념으로, 인덱스에서 내가 원하는 데이터를 먼저 찾고 저장되어있는 물리적 주소로 찾아가게 된다. 👍 인덱스를 사용하는 이유 조건검색 Where 절의 효율성 향상 테이블 레코드는 순서 없이 저장되어 Where 절의 조건에 맞는 데이터를 찾을 때 처음부터 끝까지 다 읽게 된다(Full Table Scan) 인덱스 테이블은 데이터가 정렬되어 저장되어있어 Where 조건에 맞는 데이터를 빠르게 찾을 수 있다. 정렬 Order by 절의 효율성 향상 Order by는 부하가 많이 걸리는 작업(1차적으로 메모리에서 정렬 발생 & 메모리보다 작업이 큰 경우 디스크 I/O발생) 인덱스를 사용하면 이미 정렬이 되어있어 Order by에 의한 sort과정을 피할 수 있다. Min / Max의 효율적 처리 레코드의 시작값 & 끝 값 한 건만 가져오면 되기 때…

July 08, 2022
CS
API란? (정의, 종류, 장단점)

1. API란? API(Application Programming Interface): 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한 것이다. API 아키텍처는 클라이언트와 서버로 설명된다. 클라이언트: 요청을 보내는 애플리케이션 서버: 요청을 받는 애플리케이션 예를 들어, 기상청의 시스템에는 일일 기상 데이터가 들어있는데, 휴대폰의 날씨 앱은 API를 이용해 이 시스템과 커뮤니케이션하고 휴대폰에 매일 최신 날씨 정보를 표시한다. API 문서에는 개발자가 요청과 응답을 어떻게 구성하는지에 대한 방법이 들어있다. 2. API의 종류 (1) SOAP API 단순 객체 접근 프로토콜을 사용 XML을 사용하여 메시지를 교환 과거에 많이 사용되었던 API 유연성이 떨어진다. (2) RPC API 원격 프로시저 호출 API이다. 클라이언트가 서버에서 함수/프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송한다. (3) Websocket API JSON 객체를 사용…

July 08, 2022
CS
DAS, NAS, SAN이란? (정의, 차이점)

DAS, NAS, SAN은 모두 대표적인 스토리지의 종류이며, 각 스토리지는 연결 방식에 차이가 있다. 이번 포스팅에서는 DAS, NAS, SAN의 개념과 차이점에 대해 알아보자. 0. 스토리지(Storage)란? 컴퓨터의 데이터를 저장하는 역할을 수행한다. 컴퓨터 내부의 하드디스크와 유사한 역할을 수행한다고 생각하면 된다. 1. DAS(Data Attached Storage) 서버와 스토리지가 물리적으로 직접 연결되는 방식. 네트워크상의 다른 서버는 저장된 데이터에 액세스가 불가하다. 컴퓨터에 연결하는 외장 하드와 비슷한 개념이라고 생각하면 된다. 2022-07-06-Storage-DAS-NAS-SAN1 서버와 스토리지가 FC(Fiber Channel) cable로 직접 연결된다. 장점 속도가 빠르다(서버에 물리적으로 직접 연결하기 때문). 확장이 쉽다(구축이 쉽다). 단점 연결 수에 한계가 있다. 2. NAS(Network Attached Storage) DAS가 직접 연결…

July 06, 2022
CS
RAID란? (정의 및 종류)

1. RAID란? RAID(Redundant Array of Independent Disks): 여러 물리 디스크를 하나로 모아 논리적 유닛으로 만든 것(=하나의 논리적인 드라이브) 사용하는 이유? 원래는 값싼 디스크 여러 개를 묶어 용량을 증가시키는 데에 사용 현재는 내고장성, 고가용성, 성능, 또는 이 세 가지를 조합해 기업 내 데이터가 손실되지 않도록 하는 데에 사용 2. RAID의 종류 RAID의 구성 방식은 RAID 0, 1, 01, 2, 3, 4, 5 등 다수 존재하나 가장 많이 사용하는 구성 방식은 아래 다섯 가지이다. 1. RAID 0 (Stripping) 데이터를 두 개 이상의 디스크에 동일하게 분할해 저장 각 디스크 용량의 합만큼 전체로 용량을 사용 가능 장애 발생 시 해당 부분의 디스크 복구 불가 ⇒ 기업 사용에 권장하지 않음 2. RAID 1 (Mirroring) 데이터를 2개 디스크에 동시 저장하는 방식이다. 성능이 느린 편이다. 가용성 측면에서 안정적으로…

July 01, 2022
CS
OSI 7 Layer, TCP/IP란?

1. OSI 7 Layer란? Open System Interconnection Reference Model의 약어이다. ISO(국제 표준화 기구)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신 계층을 나누어 설명한다. 통신 장치를 구분하고 계층이라는 형태로 독립시킨다. 각 계층에서의 변경은 다른 계층에 영향을 주지 않는다. 2. OSI 7 Layer 계층별 설명 계층 이름 프로토콜 예시 7 응용 계층(Application Layer) HTTP, FTP, DNS, SNMP, Telnet 6 표현 계층(Presentation Layer) SSL, TLS 5 세션 계층(Session Layer) NetBIOS, PPTP 4 전송 계층(Transport Layer) TCP, UDP 3 네트워크 계층(Network Layer) IP, ARP, ICMP, IPSec 2 데이터 링크 계층(Data Link Layer) PPP, ARP, Ethernet 1 물리 계층(Physica…

June 30, 2022
CS
데이터베이스 트랜잭션(Database Transaction)과 ACID란?

1. 데이터베이스 트랜잭션(Database transaction)이란? 데이터베이스 트랜잭션(Database Transaction): 데이터베이스의 여러 작업들을 하나로 묶은 단위이다. All-or-Nothing: 한 덩어리의 작업(트랜잭션)은 모두 실행되거나, 실행되지 않는다. 🤔 트랜잭션이 필요한 이유 예를 들어 은행 A에서 은행 B로 돈을 보낸다고 가정한다. 이 때 A에서 출금 후, B로 송금하려할 때 시스템에 장애가 발생해 시스템이 멈추게 된다면 어떻게 될까? A에서 돈은 출금되었지만, B로 송금되지 않고 증발하는 큰 문제가 발생할 수 있다. 트랜잭션은 이런 문제가 발생하지 않도록 해주는 역할을 한다. 대부분은 데이터베이스에서는 송금이 되다가 마는 상황이 발생하지 않도록 여러 방법을 제공하지만, 공통으로 제공하는 가장 기본적인 방법은 트랜잭션을 통해 데이터의 유효성을 보장하는 것이다. 2. ACID란? 데이터베이스 트랜잭션들이 안정적으로 수행되는 것을 보장하기 위한 네 …

June 28, 2022
CS
NAS/CIFS/NFS 개념

1. 배경 현재 컨테이너 전환을 진행하고 있는 담당 시스템이 Microsoft Azure에서 운영되고있는데, 인프라팀에서 쿠버네티스 파드(Pod)와 연결된 NAS(쿠버네티스 리소스로 말하면 Persistent Volume과 Persistent Volume Claim) 정보를 변경해달라는 요청을 받았다. NAS를 기존 CIFS타입에서 NFS 타입으로 변경하셨다고 하는데, 둘 다 처음 듣는 용어라 생소해서 정리해보았다. 참고로 NAS 타입으로 스토리지를 바꾼 건 기존 Azure files(AWS의 EFS에 해당)에서 대/소문자 구분이 되지 않아 NetApp Files(NFS type)으로 변경한 것이라고 한다. Azure files에서 디렉토리/파일명의 대/소문자 구분이 되지 않아(case-insensitive) 윈도우 기반으로만 구동되는 것인 줄 알았는데 NFS/SMB로 윈도우/리눅스 시스템에 모두 마운트할 수 있는 것을 보면 그렇지는 않은 듯(자세한 것은 다시 조사 할 것). 2.…

June 07, 2022
CS
루프백 주소(Loopback IP address)란?

업무 중 테스트를 위해 시스템 도메인주소에 을 한 뒤, DNS 쿼리 결과를 공유해달라는 요청을 받았었는데, nslookup으로 나온 DNS 쿼리 결과값이 흔히 보는 127.0.0.1 이 아닌 127.0.0.11 로 리턴되어 문득 loopback 으로 사용할 수 있는 IP 주소 대역이 궁금해져 관련 내용을 찾아서 정리해보았다. 1. Loopback 주소란? IPv4 혹은 IPv6 에서 자기자신을 가리키기 위한 목적으로 쓰기 위해 예약된 IP주소이다. 2. Loopback 주소로 사용하는 IP대역 루프백 주소로는 아래의 대역을 이용하게 된다. IPv4: 127.0.0.0/24 (127.0.0.0 ~ 127.255.255.255 사이의 주소 사용) IPv6: ::1/128 (단 1개 주소만 사용) 3. Localhost 주소 확인 및 수정 이 중 IPv4의 기본 localhost값은 127.0.0.1, IPv6의 기본 localhost값은 ::1/128 이다. 만일 Localho…

May 06, 2022
CS