[Kotlin] null 가능성 체크 (엘비스 연산자, !!, ?)
·
컴퓨터 언어/Kotlin
null 이라는 것은 어떠한 값도 존재하지 않는다는 뜻이다. 코틀린에서는 이러한 null 체크에 대한 방법들을 제공하고 null 가능성을 처리하는 것이 중요하다. NullPointerException을 방지하기 위해서 코틀린에서는 애초에 일반적인 자료형은 null이 될 수가 없도록 되어있다. null을 사용하기 위해서는 자료형 뒤에 물음표를 붙여야 한다. fun plusTen(n:Int?):Int{ return n+10 } 위의 함수는 파라미터 값으로 null을 허용한 상태이다. 그런데 파라미터에 null을 허용한 경우 반드시 null 예외처리를 해줘야 한다. 위 함수를 작성해보면 null 예외 처리를 하지 않았기 때문에 에러가 발생한다. 아래와 같이 함수가 실행되자마자 바로 null 체크를 하고 그 다..
[Database] Index structures (single-level ordered)
·
공부/Database
인덱스는 레코드를 검색할 때 속도를 높여주는 보조 역할을 한다. 기존 레코드들의 물리적 위치와 관계없이 작동한다. 크게 두 가지 방식으로 나뉜다. single-level ordered indexes multilevel indexes 이번 포스팅에서는 1번 single-level ordered indexes에 대해서 공부해보려 한다. single-level ordered indexes는 세 가지 방식으로 나뉜다. primary index clustering index secondary index primary index 두 개의 필드를 갖는 고정 길이 형식이다. K(i) : 정렬 키 필드 P(i) : 디스크 블록의 포인터 index entry는 한 블록당 하나를 갖는다. 각각 블록의 첫 번째 레코드를 An..
[Database] RAID technique
·
공부/Database
RAID(Rebundant Arrays of Independent Disks) technique은 여러 개의 작은 디스크를 묶어서 수행 능력을 늘리는 기법이다. 신뢰도(reliability)를 늘리는 관점과 수행 능력(perfomance)를 늘리는 두 관점으로 나누어서 공부할 예정이다. 신뢰도(reliability) 디스크는 MTBF(Mean Time Between Failure)이라는 디스크가 고장나지 않고 언제까지 쓸 수 있는지를 나타내는 지표가 있다. 여러 개의 디스크를 사용하게 되면 하나가 고장나면 전체를 쓰지 못하는 경우가 존재한다. 이럴 경우 MTBF 수치가 떨어지게 될 것이다. 이를 해결하기 위한 방법이 Mirroring(or Shadowing)이다. 동일한 디스크를 두 개 사용해서 중복(r..
[Database] dynamic hashing의 종류와 방법
·
공부/Database
이전 포스팅에서 정적으로 크기를 정해놓고 하는 static hashing에 대해서 배웠다. 이제 동적으로 파일 확장이 가능한 dynamic hashing에 대해서 공부해보려 한다. dynamic hashing은 기본적으로 2진수를 사용한다. 키를 2진수로 바꾸고 그 2진수를 사용하는 것이다. 크게 3가지 방법이 존재한다. 1. 확장성 해싱(extendible hashing) 확장성 해싱에서는 디렉토리라는 것을 사용한다. 디렉토리란 버킷 주소의 배열이다. global depth라는 것이 존재하는데 이는 d라고 표현한다. 이것은 해시 값의 첫 d개의 비트를 디렉토리의 인덱스로 사용하겠다는 뜻이다. 그것은 곧 디렉토리의 배열의 최대 길이는 2의 d제곱 이라는 뜻이다. global depth d를 3이라 가정하..
[Database] 해싱 기법 (hashing techniques)과 충돌 해결 기법(collision resolution)
·
공부/Database
해싱(hashing): 해시키가 주어지면 해시 함수를 사용하여 디스크 블록의 주소를 표현한다. Internal hashing : 해시 테이블이 메인 메모리 주소를 찾아준다. 충돌(collision) 아무리 해시 함수를 잘 만든다고 해서 충돌 문제에서 자유로워질 수 있는 것은 아니다. 이러한 충돌을 피하기 위한 기법이 충돌 해결 기법이다.(collision resolution) 충돌 해결 기법은 대표적으로 3가지가 존재한다. 해싱 함수가 100으로 나눈 나머지 값이라고 가정한다. 1. 개방 주소법(open addressing) 충돌이 일어나게 되면 인접한 주소로 저장한다. 102와 202가 있다면 둘 다 해시 함수를 거친 결과가 2로 동일하다. 이런 경우 102는 2에 202는 3에 보관한다. 이후에 10..
[Database] Sequential Files(Ordered Files)의 정의와 트랜잭션 파일(transaction file)
·
공부/Database
sequential files(ordered files)는디스크에 물리적으로 레코드들이 정렬되어 있다. 정렬된 파일은 이전 포스팅에서의 heap file같이 정렬되어있지 않은 파일에 비해 다음과 같은 장점을 가진다. 일반적으로 다음 레코드에 접근하기 위해서 블록에 새롭게 접근할 필요가 없다. (같은 블록에 있기 때문) key field가 정렬되어 있기 때문에 이진 탐색으로 빠르게 찾아낼 수 있다. 삽입 연산 이렇게 정렬되어있는 파일의 경우 삽입이 어렵다. 중간을 삽입하게 되면 그 뒤부터 전부 한 칸씩 밀리기 때문이다. 그래서 이를 해결하는 방법은 두 가지가 있다. 애초부터 블록에 삽입할 여분의 공간을 남겨둔다. 삽입의 경우 별도의 공간에 따로 진행하고 나중에 합친다. 삭제 연산 정렬된 파일에서 삭제 연산..