본문 바로가기

전체 글62

인덱스(Index)란? 정의 데이터베이스의 데이터 검색 속도를 높이기 위한 자료 구조 인덱스를 왜 써야 할까? 인덱스를 사용하지 않은 칼럼을 조회해야 하는 상황이라면? 테이블 전체를 읽어야 하는 Full Scan을 수행해야 하며, Full Scan은 테이블 전체 내용을 하나하나 비교하여 탐색하기 때문에 처리 시간이 오래 걸립니다. 따라서 내가 원하는 자료를 빠르게 검색하기 위해 도와주는 인덱스 사용을 고려해보면 좋을 거 같습니다. 종류 MariaDB의 인덱스 종류는 크게 기본, 고유, 일반, 전체 텍스트 인덱스 총 4가지가 있습니다. 기본 인덱스 (null이 아닌 고유) 기본 인덱스는 고유하며 절대 null 일 수 없습니다. 항상 하나의 레코드만을 식별하며, 각 레코드를 표시해야 합니다. 각 테이블에는 기본 키가 하나만 있을 .. 2021. 11. 10.
TDD(Test Driven Development)란? 정의 새로운 기능을 구현하기 전에 단위 테스트를 수행하여 소프트웨어를 개발하는 방식 어떻게 TDD가 생겨났을까? 소프트웨어 개발 프로세스는 항상 변화하고 있습니다. 그에 따라 소프트웨어 품질을 높이는 새로운 방법이 등장하는데, 그중 한 가지 방법으로 TDD(테스트 주도 개발)가 생겨났습니다. 테스트 주도 개발을 사용해야 하는 이유는 뭘까? 개인적인 생각에는 가장 중요한 이점은 코드의 전반적인 품질이 향상된다는 것입니다. 코드의 유지 관리 가능성을 향상할 뿐만 아니라 "생각지 못한 버그의 수"를 줄여줍니다. 새로운 기능 구현시 새로운 문제가 어디에서 오는지 알 수 없으면 정말 시간이 많이 걸린다는 것을 경험했습니다. 따라서 TDD를 사용하면 코드를 더 작은 단계로 확장할 수도 있으며, 새 기능을 작동하게 .. 2021. 11. 2.
트랜잭션이란? 정의 DB에서 하나의 논리적인 기능을 정상적으로 수행하기 위한 작업의 기본 단위 트랜잭션이 왜 필요할까? 만약 A유저에서 1000원을 출금하고 B 유저의 계좌로 1000원을 입금하는 과정에서 에러가 발생하여 입금이 되지 못했을 경우 돈이 사라지는 중대한 문제가 발생하게 된다. 이를 방지하기 위해 반드시 수행되야하는 작업의 단위를 트랜잭션으로 묶어 실행하는 것이다. 트랜잭션으로 묶인 작업 단위에서 에러가 발생하면 중간 쿼리는 DB에 반영되지 않게 되어 돈이 유실되는 중대한 문제는 발생하지 않는다. 트랜잭션 특징 원자성(Atomicity) : 분해가 불가능한 작업의 최소 단위이며, 작업이 하나라도 실패할 경우 전체가 취소되어야 하는 특성 일관성(Consistency) : 트랜잭션이 실행을 완료하면 언제나 일.. 2021. 10. 28.
IPFS란? 정의 "InterPlanetary File System"의 약자로서, 분산형 파일 시스템에 데이터를 저장하고 인터넷으로 공유하기 위한 프로토콜 탄생 배경 콘텐츠를 제공하는 WEB 서버에 장애가 생기거나 네트워크 문제 등으로 인해 서비스를 할 수 없는 상태가 되면 해당 콘텐츠의 제공이 중단됩니다. 이를 보완하기 위해 다양한 장애 대책이 H/W, S/W 적으로 적용되어 서비스되고 있습니다. 하지만, 2017년 터키 정부의 위키피디아 접속 차단과 같이 정부 차원의 강제적 차단은 콘텐츠 제공자의 노력과 상관없는 콘텐츠 제공 중단이라는 결과를 맞이하게 됩니다. 이러한 상황의 근본적 이유는 콘텐츠가 한 곳에 집중화되어 있기 때문에 벌어지는 문제입니다. 이러한 근본적인 문제를 분산 저장 시스템으로 해결할 수 있다고 .. 2021. 10. 27.