gmail의 label을 DB로 구현하는 방법?

lacovnk의 이미지

궁금해져버렸습니다 ㅎ

일단 구글이 어떻게 구현했는지는.. 알수가 없군요 OTL

조건은 다음과 같겠지요?

Quote:
1. 각 글은 id를 가진다
2. label은 한 글에 안붙을 수도, 여러개 붙을 수도 있다
3. label의 이름 변경, remove, 추가 등이 가능하다
4. label 별로 검색이 가능하다

생각해본 것은 다음과 같습니다.
방법1.

Quote:
* label은 별도 테이블에 id - name 으로 한다.
* 각 글에 label용 text 필드 하나를 두고, 여기에 특정 구분자로 lable의 id를 적어넣는다.

방법2.

Quote:
* label 테이블을 만든다. id - name - 글id 들

요건 글 수가 많아지면 문제가 되겠군요..

어떤 구현 방법이 있을까요? ㅎㅎ

우수한의 이미지

글쎄요. 이건 질문거리가 아닐 것 같은데요.
방법3.

Quote:
label 테이블: label id, label text
labe과 메일간의 관계 테이블: label_id, msg_id
메일 테이블: msg_id, msg_text

이게 가장 일반적인 정규화 방법 아닌가요?
물론 구글이 어떻게 구현하고 있는지는 알 수가 없죠. ;-)

우수하지 않아요. '우수한'은 옛날 만화 CityHunter에서 따와서 쓰던 별명. ;-)

lacovnk의 이미지

정규화를 안했군요 :oops: (사실 잘 모르고 감으로 쓰고 있습니다만 ㅎ)

기존의 카테고리와 공존하는 것은 어떻게 해야 할 까요?

예를 들어, 각 게시물의 여러 label중에서 한 label을 primary label으로 두어, 카테고리처럼 보는 것이죠. 그러면, 기존의 카테고리 시스템에서 label로 이전하는 것이 간단해집니다.

primary label을 기준으로 모든 게시물은 exclusive하니.. 카테고리처럼 되겠지요.

다만 문제는, 카테고리는 계층이 있고, label은 없다는 점인데.. 이건 label 시스템으로 가면서 포기해야 할지, 아니면 label 역시 트리 형태로 만들 수 있게 할지.. 이것은 좀 생각해봐야겠군요 ㅎ

사실 label을 붙인 다는 것이, 서로 겹치는 것이 많다는 것이므로, 계층으로 하면 트리가 아닌 이상한 그래프가 그려질 것 같아 어려워 보이기도 하고요 ㅎ

사실 gmail에서, label의 개수가 점점 늘어나는 것이 부담스럽긴 합니다;;

lacovnk의 이미지

태그? : http://hochan.net/archives/2005/03/24@11:04AM.html
다음 블로그 : http://blog.daum.net/

으음.. 그런데 이렇게 site-wide한 시스템은 부하 장난 아니겠군요 -_-;;

위처럼, label(or tag) id - article id 리스트를 갖고 있는 테이블을 그러면 어떻게 설계하게 되나요? id%5로 테이블을 나누어놓거나.. 그렇게 하나요? 으음... 어차피 글에서 태그 이름을 보여주려면 각각의 table과 조인을 해야 할테니 별 소용이 없으려나..

아아 DB 재밌을 것 같아요 :oops:

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.