| 제목 | closure table 을 사용한 댓글관리 실용성이 있을까요? | ||
|---|---|---|---|
| 글쓴이 | darkninja | 작성시각 | 2014/09/15 20:06:04 | 
|  | |||
| 삽질을 시작하기전에 가능성을 알고 싶습니다. https://gist.github.com/dazld/2174233 에, 이건 결국 삽질로 끝났고여 ㅋㅋㅋ http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=32065 이 분의 소스를 사용하였습니다. 
				if ($c_id==0) {
					$c_id = $board_id;
					
					$c_group = $this->board_comment_model->get_min_group($board_table.COMMENT) - 1;
					$c_depth = 0;
					$c_order = 1;
			  }
				else {
					//$c_group = $c_group; 
					$c_order = $c_order + 1;
					$c_depth = $c_depth + 1;
					$tm_comments = $this->board_comment_model->get_depth_order($board_table.COMMENT, $board_id, $c_group);
					foreach ($tm_comments as $tm_comment) {
						if ($c_depth > $tm_comment->depth) {
							break;
						} else {
							$c_order = $tm_comment->order + 1;
						}
					}
					$this->board_comment_model->update_order($board_table.COMMENT, $board_id, $c_group, $c_order);
				} 
핵심 처리부분은 이렇게 되더군요!실력이 나아지면 수정이나 보완이 필요할수도 있습니다. http://blog.naver.com/jjusik2/165894833 이 곳에 대용량 자료 처리에 관해서 흥미로운 내용이 있습니다. | |||
| 다음글 | 안녕하세요. Facebook 피드 가져오기 관련하여 질... (3) | ||
| 이전글 | codeigniter-restserver 에서 api_... (8) | ||
| 
                                변종원(웅파)
                                /
                                2014/09/16 07:38:07 /
                                추천
                                0
                             | 
| 
                                변종원(웅파)
                                /
                                2014/09/16 07:43:45 /
                                추천
                                0
                             
                                한참전에 phpschool에서 100만개 게시판 논쟁(?)이 있었던 적이 있습니다. 데이터 보관과 검색 효용성 측면에서 여러 로직에 대해 이야기가 있었습니다.검색해보시면 도움이 될겁니다.
                             | 
| 
                                한대승(불의회상)
                                /
                                2014/09/16 11:30:38 /
                                추천
                                0
                             
                                게시판에 댓글 무한 depth 구현에 대해선 조금 회의적 입니다. 게시판이라면 말이죠.. ^^;; 댓글 보다 덧글 형태로 문화가 바뀌고 있으니까요. 1:1 문답 이라든지 토론 게시판 같은걸 생각해 볼 수 있지만 기존의 유한 depth로 해결하지 못하는 부분인지에 대해서도 고려해 볼 필요가 있다고 봅니다. 다른 용도로 사용되는 프로그램이라면 어떤 곳에 활용이 가능 할 까요? 마인드맵? 인공지능 트리? 웬지 샛길로 빠진듯한... ㅡㅡ;;; | 
| 
                                darkninja
                                /
                                2014/09/16 13:15:20 /
                                추천
                                0
                             
                                일단 붙여서 동작하는걸 확인중입니다. 
public function add_child($comment_table, $closure_table, $node_id, $target_id = 0) {
$sql =  '(SELECT `ancestor`, '.$node_id.', `lvl`+1 FROM `'.$closure_table.'` '.
   'WHERE `descendant` = '.$target_id.') '.
      'UNION ALL '.
      '(SELECT '.$node_id.','.$node_id.',0)';
 
    $query = 'INSERT INTO `'.$closure_table.'` (`ancestor`, `descendant`, `lvl`) '.$sql;
    $result = $this->db->query($query);
 
    return $result;
  }
이게 추가함수인데union all 로 필요없는 더미 정보가 테이블에 추가됩니다. 다른 소스를 찾아봐도 같은 형태가 있더군요! 이부분을 없앨수 있다면 조금 나아질수 있겠는데 안된다면 삽질 가능성이 99% 이상이군요! 만들어 두면 언젠가는 다른 용도로 써먹을 날이 올지도... 아주 약간의 가능성이 있습니다. 일단 원 소스를 사용하면 작동은 할거 같으니 무에서 시작하지 않아도 됩니다. 시작이 반이니 50% 성공입니다 ㅋ 나머지 결과는 새로운 걸 만들어 내야 할거 같군요! 인터넷에서 무한검색과 찾아낸 소스를 맞는지 확인하고 (100% 입맛에 맞는 소스는 사실상 없지만...) 어렵게 찾아낸 소스를 또 붙이느라 삽질하고... 이러한 과정에 들인 시간과 기존 아이디어를 바탕으로 비슷한 걸 만들어 내는데 드는 시간이 차이가 그리 크지 않다는걸 며칠전의 삽질로 알았습니다. 이것을 시도함으로서 얻는 경험과 실력이 훨씬 도움이 된다는 사실을 알았기에 주저없이 시도해 봅니다^^ | 
| 
                                한대승(불의회상)
                                /
                                2014/09/16 15:14:40 /
                                추천
                                0
                             
                                union all 때문에 중복이 된다면 union 으로 해결 하면 됩니다만... union all 을 쓰신 이유가 있겠죠. ^^ | 
위와 같은 구조면 트랜잭션을 사용해야 하고 join, where에 따른 비용을 생각해야겠죠