skip menu and go to main content

body start

MoniWiki

  sql cache 진척상황 1 ]

03.12.19-10:59:20

307767

Submitted by wkpark

 

View1437

 

아래에서 테스트하고 있습니다.

http://chemie.skku.ac.kr/moniwiki/wiki.php

현재 CVS백엔드 + MySQL 캐쉬가 함께 작동하고있습니다

아래와 같은 식으로 스키마를 조금 바꾸었습니다.

어느정도 이상없이 작동하면 올리겠습니다.
-----
#!/bin/bash
DB_NAME="MONIWIKI"
DB_USER="mysql"
DB_HOST="localhost"
DB_TABLE="UnnamedWiki"

# 다중 위키를 쓸 수 있게 조금 바꾸었습니다.

cat <<EOF | mysql -u $DB_USER -h $DB_HOST $DB_NAME -p

create table $DB_TABLE
(
    pagename CHAR(255) binary NOT NULL,
    content MEDIUMTEXT,
    PRIMARY KEY(pagename)
) TYPE=MyISAM;

create table ${DB_TABLE}_info (
    pagename CHAR(255) binary NOT NULL,
    revision CHAR(80) DEFAULT '1.1',
    userid CHAR(80) DEFAULT 'Anonymous',
    utime TIMESTAMP(14) DEFAULT NULL,
    pageid INT(12) unsigned NOT NULL,
    UNIQUE INDEX idx_pagename(pagename(30)),
    KEY idx_recently(utime desc)
) TYPE=MyISAM;
EOF
-----
{{{
    pageid INT(12) unsigned AUTO_INCREMENT,
}}}

원래 스키마에는 pageid가 있었는데, 한번 빼어 보았습니다. pageid가 없어도 될 것 같은데, 있을 때와 없을 때의 차이점은 무엇이죠 ?

(일단 저는 MySQL을 아직 잘 모르기때문에 질문드립니다. ^^;;)

pagename도 addslashes()를 해야 할 것 같은데, pagekey로 쓸지 (_20_34_bc_a3 과 같은 형식의 모인모인/모니위키 내부 페이지 키) addslashes(pagename)를 쓸것인지도 결정 안했습니다.
----
랜더링 결과를 캐싱하게 한다면, 임의의 페이지 내용이 틀려졌을 경우 랜더링을 다시 하게 하는 방식을 써야 하는데, 이 경우는 어떤 식으로 하면 좋을까요 ?

----
기타, SQL 캐쉬를 효율적으로 써먹기 위해서

Search함수를 캐쉬에 맞게 적용해야 하는 등등의
여러가지 할 일이 보입니다.

Comments on this artfact

1 Comments

Hyunsik

말씀듣고 확인해 보려 했는데 아직 commit 을 안하셨군요 ㅎㅎ

- 일단 pageid 건
pageid 는 pageinfo 와 pages 를 연결하기 위한 키 입니다.

pages 가 페이지 내용을 저장하기 때문에 내용이 금방 방대해 져서 pagename 으로 직접 검색하면 시간이 조금이라도 더 걸릴까봐

내용이 작은 pageinfo 에서 pagename 으로 page 정보와 pageid 를 얻고 그 pageid 를 이용해서 pages 에서 본문을 검색하는 방식이지요.

직접 문자열로 검색하는것 보다 숫자로 인덱싱 정보를 저장해서 속도가 빠르거든요.

또한 문자열 255자로 된것을 인덱스 정보를 부과하면 그 양도 상당할것이라고 생각했기 때문에 그렇게 했습니다.

-pagename
정말 여러가지 이유로 그대로 저장하는것보다 pagekey 나 addslash 로 처리해서 저장하는것이 좋을것 같네요. 저는 pagekey 가 좋을것 같은데 박원규님 생각은 어떠신지?

- Search 함수
이 부분은 저에게 맡겨주시면 제가 하죠 +_+

마지막으로..
박원규님 말씀 끝에..

랜더링 결과를 캐싱하게 한다면, 임의의 페이지 내용이 틀려졌을 경우 랜더링을 다시 하게..

이렇게 말씀하셨는데 잘 이해가 안되서..

혹시 DBCache 를 사용 하다 안하다 할경우 페이지의 차이에 대한 처리를 말씀하시는건지요?

03.12.19-21:10:42