잘못된 방법

브레베 데이터베이스를 만들 때는 재미있었지만 이제와서 생각해보니 잘못된 방법을 선택한 것 같습니다.

지난 1월에 노션에 만든 포켓몬 데이터베이스를 보고 재미있겠다 싶어 도쿠위키에서 지원하는 struct 플러그인을 사용해 SQLite 기반에 브레베 데이터베이스를 만든 적이 있습니다. 플러그인은 처음 예상에 비해 훨씬 조잡했고 요구한 기능 대부분을 지원하지 못했습니다. 브레베 데이터베이스를 만들기 위한 핵심기능을 지원하지 않아 거의 포기했다가 누군가 작성한 아직 적용되지 않은 코드를 긁어다가 적용해 처음 예상과 그나마 비슷한 결과를 만들 수 있었습니다. 그리고 두달이 지났습니다.

처음에는 브레베 정보는 각 이벤트마다 거의 동일했고 이들을 관계형 데이터베이스 모양으로 정규화해놓으면 쓸모가 많을 거라고 예상했습니다. 가령 날짜 범위나 지역에 해당하는 이벤트 정보를 조회해서 표시한다든지 서로 다른 이벤트에서 같은 체크포인트를 얼마나 사용했는지 알아본다든지 또 각 체크포인트마다 거리를 자동으로 계산해서 타임테이블을 자동으로 만들어줄 수 있을 거라고 예상했습니다. 하지만 이들 중 일부는 가능했지만 나머지는 가능하지 않았습니다. 적어도 플러그인을 직접 수정하는 결정을 하기 전까지는요. 이 작업에는 이미 선을 그어놨습니다. 제가 잘할 수 있을 것 같지 않은 코드를 고치는 일까지는 접근하지 않기로요. 그러고 보니 할 수 있는 일이 별로 없었습니다. 뒤에서는 데이터베이스가 지원하고 있지만 이를 활용해서 정보를 문서 모양으로 제공할 때에 비해 별로 달라진 점이 없었고 업데이트 과정이 직관적이지 않은 단점만 남은 상태가 됐습니다.

struct 플러그인을 사용한 결과로 기존 정보를 업데이트할 때 데이터베이스의 정보를 업데이트하므로 위키에는 정보를 업데이트한 기록이 전혀 남지 않게 됐습니다. 제가 위키를 좋아하는 이유 중 하나는 모든 수정 과정이 기록된다는 점입니다. 글을 써서 공개하는 과정을 거치는 블로그에 썩 어울리지는 않을 수 있지만 모든 수정과정이 남아있다는 건 정보를 수정할 때 더 과감하게 행동할 수 있게 해줍니다. 내가 무슨 짓을 해도 내 행동의 기록이 모두 남으며 문제가 생겨도 이를 얼마든지 되돌릴 수 있고 문서의 과거 버전으로 돌아가 일부 내용을 다시 현재 문서에 편하게 적용할 수 있기 때문입니다. 위키는 이 요구사항을 훌륭하게 만족했습니다. 하지만 데이터베이스는 그렇지 않았습니다. 위키 페이지를 통해 서빙되고는 있었지만 정보를 수정해도 기록이 남지 않았고 이 점이 크게 불만입니다.

struct 플러그인을 사용해 만든 브레베 데이터베이스는 만드는 과정이나 운영하는 과정은 나름 재미있지만 데이터베이스의 장점을 활용하지 못하고 정보 업데이트 과정이 위키의 방식에 비해 직관적이지 않은 단점이 생겼습니다. 또 위키를 통해 서빙하지만 위키의 특징 중 하나인 수정 과정을 기록해주는 특징을 활용하지도 못합니다. 이럴 바에야 그냥 정보를 복사해다가 위키 페이지 그대로 서빙하는게 낫지 않았을까 하는 후회도 들고요. 아직 이런 문제를 어떻게 해결해야 할지 방법을 정하지 못했습니다. 그냥 매번 정보를 업데이트할 때마다 '아 이거 뭔가 고치고 싶다'는 생각만 남아있어요. 어쨌든 올해는 지금 만들어 놓은 체계로 업데이트를 계속할 작정입니다. 방식을 바꿔야 하지 않을까 하는 고민만 계속 하고 있어요.