지금까지 만든 프로그램에는 치명적인 문제가 하나 있습니다. 프로그램이 꺼지면 데이터가 사라져서, To-do List를 잘 사용하려면 프로그램도, 컴퓨터도 끄지 말아야 합니다. 잘 쓰면 평생도 쓸텐데, 그동안 계속 프로그램을 켜 둔다는 건 말이 안 되죠.
프로그램을 종료하고 재시작하더라도, 데이터가 잘 보존되도록 만들어 봅시다.
과제의 개요를 보며 데이터베이스가 떠올랐다면 사실 정답이지만, 첫 과제부터 데이터베이스를 사용하는 것까지 원하진 않습니다.
‘데이터 저장’이라는 생소한 개념에서 조금 떨어져 생각해 봅시다. 평소에도 간단한 노트를 하기 위해 메모장(notepad)을 사용하는 분들이 있을텐데요, 프로그래밍을 통해서도 이런 파일에 접근할 수 있습니다.
휘발성 메모리와 비휘발성 메모리에 대해 알아보면 좋습니다.
데이터를 파일에 저장해도 적당히 잘 동작합니다. 그럼에도 불구하고 수많은 서비스들이 데이터베이스라는 소프트웨어를 쓰곤 합니다. 왜일까요?
“데이터의 일부분을 얻기 위해, 얼마나 많은 부분을 로드해야 할까?” 에서 고민을 시작해 보면 좋을 것 같습니다. 파일 입출력은 기본적으로 파일 전체를 읽어들이는데요, ‘할 일’이 10만개라면 어떨까요? ‘할 일 삭제’ 기능에서는 아이템 하나만 찾아서 지워주면 되는데, 10만개를 다 로드해야 하니 불필요한 성능 저하가 발생할 것입니다. (이것을 “오버헤드가 높다”고 이야기합니다)
데이터베이스는 이런 부분에서 강점을 가집니다. 데이터를 걸러서 로딩할 수 있습니다. 그 뿐만이 아니라, 가져올 요소의 개수를 정하거나, 정렬하거나, 집계하는 등의 일이 가능합니다.
따로 과제를 내진 않겠지만, 데이터베이스를 사용하는 이유를 충분히 납득하고 이번 과제를 시작하기 바랍니다.