이걸 알아야 심신이 편하다 - MPD DB(데이타베이스)

다른 Music Player 프로그램의 경우 음원 파일이 많은 경우, 앨범 또는 아티스트 별 음원의 리스트를 펼쳐 보는데 상당한 인내심이 필요한 것이 사실입니다. 하지만, MPD를 사용하며 만족스러운 것 중 하나가, 다른 어떤 Music Player 프로그램보다 빠르게 음원 리스트를 보여준다는 것이죠. 이것을 가능하게 해준는 것은, MPD가 사용하고 있는 데이타베이스(DB) 덕분입니다.

MPD DB는 우리에게 '빠른 속도'의 편의를 제공하지만, MPD DB 가 어떻게 사용되는지에 대한 이해가 부족하다면, 우리의 퀘적한 음악 생할을 방해하는 복병이될 겁입니다. 실제로 Alix를 사용하며 발생하는 문제 중 대부분이 이 MPD의 DB를 이해하지 못해 발생합니다. 여기서는 EasyMPD에서 MPD DB가 어떻게 운영되는지 살펴볼까합니다.


[Database(DB) 파일은?]

MPD (Music Player Daemon)는 실행될 때마다 기존 DB파일을 찾아 가져옵니다. 만약 DB 파일을 찾을 수 없다면 새로 만들게 됩니다. 왜 MPD는 실행될 때 DB 파일을 찾는걸까요? 이 DB 파일은 음원 파일의 테크와 저장 경로 정보를 가지고 있습니다. 이 DB 파일의 도움으로 사용자는 MPD Client에서 곡을 선곡할 수 있고, MPD에서는 Client에서 연주하라고 지시하는 음원을 찾는데 사용됩니다.

EasyMPD의 DB Backup으로 등록된 디렉토리 아래 "db"라는 폴더가 있고, 그 안의 "tag_cache"라는 파일이 DB 파일입니다. 이 DB 파일을 Text Editor로 열어보면, MPD DB 파일은 단순 텍스트 파일인걸 확인 할 수 있습니다.

위 그림의 "tag_cache"는 필자가 가지고 있는 음원의 DB 파일입니다. 단순 Text 파일인데도 크기는 거의 15Mbytes가 된다는건 필자가 가지고 있는 음원이 꽤 많다는걸 짐작할 수 있습니다. 음원이 많으면 많은수록 이 DB 파일의 크기도 커집니다.


[DB Update?]

그럼 이 DB 파일은 어떻게 만들어질까요? 위에서 잠깐 언급했듯이 MPD는 실행될 때 기존에 만들어 놓은 DB 파일이 있다면 그걸 가져와 사용하지만, 없는 경우 새로 만든다고 했습니다. 새로 만들긴 하지만 아무런 음원 정보도 없는 비어있는 DB를 임시로 만드는 것이죠. 만약 이 비어있는 DB를 사용한다면 사용자는 자신의 음원이 모두 지워지지 않았는지 걱정하게 됩니다. 하지만 이럴 때는 당황하지 말고 MPD에게 DB 파일을 다시 만들도록 지시하면 됩니다. 이 DB를 새로 만들거나 갱신하는 것을 "DB Update" 라고합니다.

"DB Update 어떻게 하나요?"라고 물어보시는 분들이 많이 계신데. DB Update를 하기 위해서는 MPD Client 프로그램을 이용해야 합니다. MPD Client 프로그램에따라 조금씩 방법이 틀리긴 하지만 모두 DB Update를 지시하는 기능이 있습니다. 여기서 지시한다고 표현했는데, MPD Client 프로그램은 Alix의 MPD 프로그램에게 DB Update를 하라고 지시만 하는 것이지 자기 자신이 직접 DB Update를 하는 것이 아니기 때문입니다.
각 Client 마다의 DB Update 방법은 Client 설정 및 사용 방법에서 확인하세요.

MPD Client 프로그램에 따라 DB을 가져와 사용하는 방법이 조금씩 틀립니다. 어떤 프로그램은 DB를 MPD Client 가 설치된 기기로 모두 가져와 사용하고, 또 어떤 프로그램은 필요할 때 마다 알릭스의 MPD로부터 불러오는 방법을 사용 합니다. 전자의 경우 DB Update가 끝났다면 그 새로운 DB를 가져오는 작업을 해주어야 합니다. 아래 그림은 iPhone, iPad용 MPD Client인 MPoD, MPaD에서 DB Update가 끝나고 "Refresh local cache"버튼을 눌러 새로 만들어진 DB를 가져와야 한다는 것을 보여줍니다.


[DB 파일 저장은 어디에?]

MPD는 DB 파일을 휘발성 메모리인 RAM에 저장합니다. 그래서 알릭스(Alix)의 전원이 꺼졌다 켜지면 오랜 시간을 들여 만든 DB가 사라지게되고, 처음부터 새로 만들어야하는 문제가 발생합니다. (DB를 새로 만드는 경우 음원이 많은 경우 몇시간이 소용 될 수 있습니다.) 이런 문제를 해결하기 위해, Voyage-MPD와 달리 EasyMPD에서는 DB 파일을 실시간으로 DB Backup 디렉토에 복사해 놓았다가 알릭스가 재부팅하거나 MPD가 다시 시작할 때 DB Backup 디렉토리에 저장된 DB 파일을 가져와 사용합니다.


[DB Backup 디렉토리를 사용하는데도 왜 문제가 생기나요?]

이렇게 실시간으로 DB를 DB Backup 디렉터리에 저장하는 경우에도 문제가 발생하는 경우가 있습니다. 문제가 발생하는 가장 큰 이유는, 알릭스는 자체 음원 저장소가 없고 대신에 네트워크를 통해 등록된 공유 디렉토리에서 음원 파일을 가져온다는 특성 때문입니다. 네트워크로 등록된 디렉토리는 물리적으로 연결된 하드드스크와 달리 언제든지 연결이 끊어질 수 있기 때문입니다.

가장 빈번이 발생하는 세가지 문제는 아래와 같습니다.

1. DB Backup 디렉토리로 등록 되어 있는 호스트와의 연결이 끊어진 상태에서 MPD가 다시 시작 된다면,
MPD은 DB Backup 디렉토리에 백업된 DB를 찾을 수 없어 비어있는 새로운 DB를 만들게 됩니다. 이경우 MPD Client 프로그램에서는 모든 음원이 사라진거로 보이게 됩니다. 이경우는 DB Backup 호스트와 다시 연결하고 MPD를 다시 시작시켜 DB Backup 디렉토리에 저장되어 있는 DB를 다시 가져오면 해결 됩니다.

2. Music 디렉토리로 등록되어 있는 호스트와 연결이 끊어진 상태에서 MPD가 DB Update를 진행한다면,
MPD는 음원 디렉토리가 비어있는 것으로 생각하고 기존 DB의 내용을 모두 지우게 됩니다. 더욱 심각한건 이 비워진 DB를 실시간으로 DB Backup 디렉토리로 복사하게 됩니다. 그럼 DB는 복구 할 수 없는 상황이 됩니다.

3. 현재 DB Update가 진행되고 있는데 이걸 모르는 사용자가 DB Update를 다시 지시하는 경우,
MPD는 열심히 만들고 있던 DB를 버리고 새로 만들기 시작합니다. 이경우 MPD Client에서는 일부 음원 파일만 보이는 현상이 발생합니다.


[해결 방법은?]

DB Backup 디렉토리에 저장되는 DB도 실시간으로 업데이트가 되고 있기 때문에 결코 안전할 수 없습니다. 그렇다면 실시간으로 업데이트 되지 않는 곳에 한번더 복사(백업)를 해두는 것이 해결 방법입니다.

EasyMPD WEB GUI의 "MPD -> DB Backup"에서 한번더 안전한 곳에 복사를 해주는 백업을 할 수 있습니다. 만약 DB에 문제가 생겼다면 여기서 안전하게 저장되어 있는 DB를 불러와 예전 상태로 복구 할 수 있습니다.


DB를 처음으로 만드는 경우 DB Update에 많은 시간이 걸리지만, DB가 한번 만들어지고 난 후 음원이 추가 삭제된 상태에서는 그다지 시간이 많이 걸리지 않습니다. 처음으로 DB를 만들었거나, 음원 디렉토리에 많은 변화가 생긴 후 DB Update를 한 경우라면 EasyMPD WEB GUI의 "MPD -> DB Backup"에서 한번씩 백업을 해주는 것이 좋습니다.

또한, DB Update가 현재 진행 중에 중복으로 DB Update를 지시하는 것을 피해야 합니다. DB Update가 진행 중인지는 알릭스 앞면의 LED로 쉽게 확인 가능합니다. LED 세개 중 가운데 LED는 평소에는 꺼져 있다가 DB Update 중에 깜박입니다. DB Update가 끝나면 다시 꺼지게 됩니다.


시작하기로 돌아가기