제목 | 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에 따른 비용을 생각해야겠죠