洪民憙 (홍민희) 블로그

참여형 데이터베이스: 팁포레스트

최근 나를 포함해 아이추판다 님과 아샬 님, 이렇게 셋이서 일주일에 한번씩 만나며 잉여 프로젝트를 했다. 사용자들이 아무나 참여할 수 있는 데이터베이스인데, 엔하위키나 위키백과와 비슷하지만 좀더 정보의 활용이 용이한 형태로 만들었다고 보면 된다. 자세한 설명은 아이추판다 님의 소개글을 참고.

우리가 보는 대부분의 웹사이트들은 실제로는 그 뒤에 DBMS가 돌아가고 있습니다. 그런데 여기에는 좀 웃기는 일이 있습니다. 사람들이 웹사이트에 접속하는 이유는 데이터베이스에 접속하기 위해서죠. 그런데 데이터베이스는 여러 가지 껍데기로 꽁꽁 싸여서 직접 접근을 할 수가 없습니다.

[…]

게다가 국회도 그렇지만 한국의 많은 공공데이터베이스는 자료를 열람만 가능할 뿐 다운로드할 방법은 막아 놓고 있습니다. 만약 자료를 다운로드 할 수 있다면 국회의원 정보와 의안 정보를 다운 받아서 엑셀 같은 프로그램으로 이리 저리 만져볼 수 있겠죠. 이것은 그렇게 어려운 기능이 아닌데도 제공해주는 경우가 없습니다. 결국 화면을 보면서 사람이 일일이 입력해야 해요. 이 21세기에 이게 뭐 하는 일입니까?

[…]

그래서 몇몇 사람들이 모여서 팁포레스트라는 사이트를 하나 만들었습니다. 이 사이트의 목적은 간단합니다. 누구나 데이터베이스에 정보를 넣을 수 있고, 누구나 데이터베이스의 거의 모든 정보에 접근할 수 있게 하자는 것이죠. 위키+데이터베이스라고 할 수 있습니다. 물론 그것만 하면 별로 재미가 없겠죠. 많은 웹사이트에서 데이터베이스에 껍데기를 씌우는 이유는 그게 예쁘기도 하지만 사용하기도 편리하기 때문입니다. 그래서 팁포레스트는 각 데이터베이스에 쌓인 정보에 따라서 적당한 껍데기를 씌워줍니다.

[…]

각자 자기 관심있는 정보를 공동의 데이터베이스에 추가할 수 있다면 그렇게 쌓인 데이터베이스는 어마어마할 겁니다. 별 것 아닐 수도 있죠. 하지만 그렇게 쌓을 수 있는 정보들에는 재미있는 게 많을 겁니다. 이 사이트를 만든 사람 중에 어떤 사람은 빨간 머리 트윈테일 소녀가 나오는 애니메이션을 찾을 수 있는 그런 데이터베이스를 만들고 싶어합니다. IMDB에서 찾을 수 없는 것은 분명하죠. 물론 티비트롭스 같은 위키에선 찾을 수 있을지도 모르겠습니다. 하지만 위키는 데이터베이스가 아니죠. 데이터베이스의 장점은 여러 가지 정보를 조합하고 정리할 수 있다는 것이죠. 팁포레스트는 정보만 많이 쌓인다면 자동으로 만들어지는 메뉴를 통해서 원하는 조건들을 조합할 수 있습니다. 아 뭐 이런 저런 기능이 부족하다고 생각할 수도 있습니다. 그럼 다운 받아서 그런 기능을 제공하는 프로그램을 사용하세요.

사실 말은 거창하게 했지만 진짜 의도는 아이유 동영상을 수집하기 위ㅎ…

예를 들어 봅시다. 가수 아이유는 좋은 날로 폭발적인 인기를 얻기 전부터 인터넷에 이런 저런 동영상을 올려 조금씩 인지도를 얻어가고 있었습니다. 많은 아이유 팬들이 아이유가 기타 치면서 노래를 부르는 것을 좋아하죠. 그런데 만약 아이유가 라디오에서 기타치는 동영상을 찾고 싶다든가, 도쿄 디즈니랜드에서 찍은 동영상을 찾고 싶다면 어떻게 할까요. 네, 물론 검색도 할 수 있고 블로그에 동영상을 퍼놓고 태그를 붙여 관리할 수도 있습니다. 하지만 검색 기능은 아직 완전하지 못하고 블로그에 퍼놓는 것은 혼자만 할 수 있을 뿐이죠.

참고로 이 사이트는 내가 여간해서는 잘 쓰지 않는(…) Django를 이용해 만들어졌다. 어제 배포 직전까지 데이터베이스는 SQLite를 사용했다. 어제 모여서 배포를 어떻게 할까 고민하다가 당장은 기능 구현에 집중하고 배포로 고민하지 말기로 하고 Heroku를 썼다. 데이터베이스는 자연스럽게 PostgreSQL로 넘어가게 되었다.

코드를 잘 정리해서 사이트 자체도 AGPL 등을 적용해 오픈 소스로 공개해볼까 하는 생각도 들지만, 앞으로 어떻게 될지는 잘 모르겠다. 아마 이후의 작업은 API를 구현하거나, SPARQL 엔드포인트를 구현하거나, 사이트 디자인을 세련되게 고치거나, 백엔드 데이터베이스 엔진을 확장 가능하게 바꾸는 등의 일을 하지 않을까 생각한다.