윈도우 환경에 종속한 바이러스 윈도우와 usb 외장하드등 저장장치에 심어지는 바이러스
리눅스 맥 모바일 환경에서는 존재하지 못하는 형태로 윈도우 사용자들의 불편함을 유발함
주요 문제 usb가 포맷이 안되는 현상 이를 통해 윈도우 설치 usb를 만들면 바이오스에서 인식은 되지만 실행파일을 읽지 못하여 설치환경으로 넘어가지 못하고 바이오스창으로 돌아옴
한번 감염이 된 상태로 다른 pc에 옮겨져서 바로가기가 실행되면 감염 이는 공용 pc등에서 매우 조심해야 하는 부분이다.
pc를 숙주로 삼고 기생하다가 저장장치가 연결되면 감염 시켜 문제를 만든다.
안녕하세요! 개발자 여러분. 오늘은 백엔드 면접과 시스템 설계의 단골 질문인 '관계형 데이터베이스(RDBMS)'와 'NoSQL'의 가장 큰 차이점에 대해 쉽고 명확하게 정리해 보겠습니다.
두 데이터베이스를 가르는 핵심은 "데이터를 저장하기 전에 엄격한 틀(스키마)을 정의하느냐, 아니면 자유롭게 저장하느냐"의 차이입니다.
| 구분 | 관계형 DB (RDBMS) | NoSQL |
|---|---|---|
| 데이터 구조 | 엄격한 스키마, 테이블 형태 | 유연한 스키마, 다양한 형태 |
| 확장 방식 | 수직 확장 (Scale-Up, 고성능 서버) | 수평 확장 (Scale-Out, 서버 분산) |
| 적합한 서비스 | 데이터 일관성이 중요한 서비스 (금융, 이커머스 주문) | 로그 데이터, 실시간 채팅, 대용량 트래픽 서비스 |
데이터의 '일관성과 정확성'이 최우선이라면 RDBMS를, 서비스의 '빠른 확장성과 대용량 데이터 처리'가 필요하다면 NoSQL을 선택하는 것이 정답입니다!
안녕하세요. 오늘은 수많은 사용자가 몰려도 웹사이트가 버벅이지 않게 만드는 마법인 '캐싱(Caching)'에 대해 이야기해 보겠습니다. 캐싱이 필요한 서비스에는 도대체 어떤 데이터베이스를 써야 할까요?
캐싱이 필요한 서비스에는 데이터를 하드디스크가 아닌 컴퓨터의 '메모리(RAM)'에 저장하는 NoSQL 기반의 인메모리 DB가 적합합니다. 그중에서도 전 세계적으로 가장 많이 쓰이는 대표적인 DB는 바로 Redis(레디스)와 Memcached입니다.
자주 조회되지만 매번 메인 DB에서 가져오기 부담스러운 데이터는, Redis 같은 NoSQL 인메모리 DB에 '캐싱'해 두는 것이 전반적인 서비스 성능을 올리는 핵심 전략입니다.
데이터베이스를 공부할 때 가장 먼저 만나는 단어이자, 면접에서 "한 문장으로 설명해 보세요"라는 요청이 자주 들어오는 PK(Primary Key)와 FK(Foreign Key)의 차이를 깔끔하게 정리해 드리겠습니다.
| 구분 | PK (기본키) | FK (외래키) |
|---|---|---|
| 목적 | 데이터의 유일성(식별) 보장 | 테이블 간의 연관 관계(연결) 표현 |
| 중복 및 빈 값 | 중복 불가 (Unique), 빈 값 불가 (Not Null) | 중복 가능, 빈 값(Null) 허용 가능 |
| 개수 제한 | 테이블당 단 1개만 설정 가능 | 테이블당 여러 개 설정 가능 |
'학생' 테이블이 있고 '성적' 테이블이 있다면, 학생 테이블의 학번은 PK가 됩니다. 성적 테이블에서 "이 점수가 어떤 학생의 점수인가?"를 나타내기 위해 학생 테이블의 학번을 가져와 쓰면, 그 성적 테이블의 학번은 FK가 됩니다.
블로그나 커뮤니티 서비스를 만들 때, 게시글(Post) 테이블이 있을 것입니다. 이때 게시글 테이블에 글쓴이의 이름(예: '홍길동')을 직접 텍스트로 저장하면 편할 텐데, 왜 굳이 유저 테이블의 ID(FK)로 연결해서 저장할까요?
여기에는 데이터베이스 설계의 핵심인 '데이터 무결성'과 '유지보수의 효율성'이 담겨 있습니다. 이유를 3가지로 나누어 설명해 드립니다.
만약 '홍길동'이라는 유저가 이름을 '홍길순'으로 개명했다고 가정해 봅시다.
글쓴이의 이름뿐만 아니라 프로필 사진, 등급, 이메일 등의 정보를 게시글마다 다 저장하면 엄청난 데이터 낭비가 발생합니다. 회원 ID(숫자 데이터) 하나만 FK로 저장해 두고, 필요할 때마다 회원 테이블에서 정보를 불러오는(JOIN) 것이 용량을 아끼고 데이터가 꼬이지 않게(정규화) 만드는 방법입니다.
FK를 설정해 두면 데이터베이스 시스템이 스스로 체크를 해줍니다. 가입하지도 않은 유령 회원의 ID로 글이 작성되는 것을 막아주고, 회원을 탈퇴 처리할 때 그 회원이 쓴 글을 같이 지우거나 탈퇴를 막는 등의 안전장치(참조 무결성)를 세울 수 있습니다.
데이터의 중복을 없애고, 정보가 수정되었을 때 오류 없이 완벽한 일관성을 유지하기 위해 우리는 이름을 직접 적지 않고 FK(외래키)로 연결합니다.