본문 바로가기

TIL/CS22

자료구조 복잡도 시간 복잡도 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 가리킨다. 빅오 표기법 어떠한 알고리즘의 로직이 얼마나 오랜 시간이 걸리는지를 나타내는데 쓰인다. 입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내는 것인데, 가장 영향을 많이 끼치는 항의 상수 인자를 빼고 나머지 항을 없애서 표기한다. 예를 들어 어떤 알고리즘의 복잡도가 10n^2+5n이라면 O(n^2)이 된다. 시간 복잡도는 효율적인 코드로 개선하는 데 쓰이는 척도가 된다. 크게 O(n^2), O(n), O(log n), O(1) 순으로 입력 크기가 커질수록 효율적이다. 공간 복잡도 프로그램을 실행시켰을 때 필요로 하는 자원 공간의 양을 말한다. 정적 변수로 선언된 것 말고도 동적으로 재귀적인 함수로 인해 공간을 계속.. 2023. 10. 31.
조인 조인이란 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것을 말한다. MySQL에서는 JOIN이라는 쿼리로, MongoDB에서는 lookup이라는 쿼리로 이를 처리할 수 있다. 참고로 MongoDB를 사용할 대 lookup은 되도록 사용하지 말아야 한다. 관계형 데이터베이스보다 성능이 떨어진다고 여러 벤치마크 테스트에서 알려져 있기 때문이다. 따라서 여러 테이블을 조인하는 작업이 많을 경우 MongoDB보다는 관계형 데이터베이스를 써야 한다. 조인의 종류 내부 조인 - 왼쪽 테이블과 오른쪽 테이블 두 행이 모두 일치하는 행이 있는 부분만 표기한다. 두 테이블 간의 교집합이다. 왼쪽 조인 - 왼쪽 테이블의 모든 행이 결과 테이블에 표기된다. 오른쪽 조인 - 오른쪽 테이블의 모든.. 2023. 10. 25.
데이터베이스의 종류/ 인덱스 관계형 데이터베이스(RDBMS) 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리키며 SQL이라는 언어를 써서 조작한다. 관계형 데이터베이스의 경우 표준 SQL을 지키지만 각각의 제품에 특화시킨 SQL을 사용한다. 예를 들어 오라클의 경우 PL/SQL이라고 하며 SQL Server에서는 T-SQL, MySQL은 SQL을 쓴다. MySQL 대부분의 운영체제와 호환되며 현재 가장 많이 사용하는 데이터베이스이다. C, C++로 만들어졌으며 MyISAM 인덱스 압축 기술, B-트리 기반의 인덱스, 스레드 기반의 메모리 할당 시스템, 매우 빠른 조인, 최대 64개의 인덱스를 제공한다. 대용량 데이터베이스를 위해 설계되어 있고 롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공하며 많은 서비.. 2023. 10. 25.
트랜잭션과 무결성 트랜잭션 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말하며 데이터베이스에 접근하는 방법은 쿼리이므로, 여러 개의 쿼리들을 하나로 묶는 단위를 말한다. 원자성, 일관성, 독립성, 지속성의 특징이 있으며 이를 하나로 묶어 ACID라고 한다. 원자성 "all or nothing" 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징이다. 예를 들어 트랜잭션을 커밋했는데, 문제가 발생하여 롤백하는 경우 그 이후에 모두 수행되지 않음을 보장하는 것이다. 트랜잭션 단위로 여러 로직들을 묶을 때 외부 API를 호출하는 것이 있으면 안된다. 만약 있다면 롤백이 일어났을 때 어떻게 해야 할 것인지에 대한 해결 방법이 있어야 하고 트랜잭션 전파를 신경 써서 관리해야 한다. 커밋 -.. 2023. 10. 25.