컴퓨터상의 데이터는 두 종류가 있다.
- 정적 데이터
- 동적 데이터
정적 데이터는 변경 비율이 적은 데이터를 말하며 반대로 동적 데이터는 변경 비율이 높음을 뜻한다.
이 둘을 비교한 표는 다음과 같다.
그러므로 정적 데이터는 속도보다는 정확도가 핵심이며, 잘 저장하는 것에 집중하여야 한다.
반대로 동적 데이터는 속도가 중요하기 때문에 빠르게 저장하는 것이 핵심이다.
컴퓨터 연산에는 위의 표에 나와있듯이 READ와 WRITE가 있다.
여기서 WRITE는 삽입, 변경, 삭제를 포함하고, READ는 단지 데이터를 읽는 것을 말한다.
이제 컴퓨터가 데이터를 저장할 때 어떻게 처리를 하는 지 알아보자.
먼저 컴퓨터는 자신이 가지고 있는 공간을 기억하고 있는데, 사용 중인 공간과 빈 공간을 따로 저장한다.
예를 들어, A,B,C라는 데이터를 저장하고 있다고 하자.
컴퓨터가 저장하고 있는 공간은 다음과 같이 그려질 것이다.
여기서 회색은 빈 공간을 뜻하며 노란 색이 사용 중인 공간을 뜻한다.
오른쪽의 그림은 컴퓨터가 기억하는 사용 중인 공간의 리스트를 나타낸다.
먼저 데이터를 삽입할 때의 방법이다.
데이터 D의 삽입 요청이 들어왔을 때의 컴퓨터 일처리 순서는 다음과 같다.
1. 컴퓨터가 저장하고 있는 빈 공간 리스트에 D가 들어갈 위치를 찾는다.
3. 사용 중인 공간 리스트에 D를 표시한다.
다음은 데이터를 삭제할 때의 방법이다.
1. 컴퓨터가 저장하고 있는 사용 중인 공간 리스트에서 D를 삭제한다.
2. 데이터 D의 위치를 빈 공간 리스트에 배치한다.
다음은 데이터를 변경할 때의 방법이다.
컴퓨터가 데이터를 변경하는 방법은 두 가지다.
첫 번째, 기존 데이터에 덮어쓰는 방법이다.
두 번째, 새로운 위치에 들어온 데이터를 저장한 후 기존 데이터를 삭제하는 방법이다.
먼저 첫 번째 방법을 보면,
다음과 같이 B 데이터가 F 데이터로 변경 요청이 들어왔을 때 사용 중인 공간에만 알려 준 후 바꾸면 된다.
하지만 이 방법은 치명적인 단점이 있다.
변경 요청이 들어온 데이터가 이전 데이터보다 용량이 크다면 원래 있던 위치에 배치할 수 없다는 것이다.
반대로 용량이 매우 작다면 놀고 있는 공간이 많게 된다.
그래서 요즘에는 두 번째 방법을 많이 쓴다고 한다.
위와 같이 B 데이터를 F 데이터로 변경 요청이 들어왔을 때 , 처리 순서는 다음과 같다.
1. 새로 들어온 F데이터를 빈 공간에서 알맞은 위치를 찾아 배치시킨다.
2. 사용 중인 공간에 이를 표시하고 B데이터가 사용하던 공간을 제외시킨다.
3. 빈 공간에 B 데이터가 사용하던 공간을 배치한다.
두 번째 방법을 사용하면 용량에 따른 문제는 해결되는 것을 알 수 있다.