inureyes 작성:

DB 관련해서는 예전의 '묻지마 mysql쿼리'에서 현재는 일부를 제외하면 DBQuery기반이고, TableQuery를 사용하는 방식으로 모두 변경하고 있는 중입니다. (2.0쯤이면 완료될 듯?)

이렇게 되면 위의 encapsulation이 대부분 필요하지 않게 될 것이고, 단지 TableQuery 클래스의 재작성 만으로도 데이터베이스 입출력을 할 수 있게 되겠지요. Eolin.PHP.Core의 경우 현재 TC에 든 버전 말고 mySQL의 버전에 따라 최적화된 버전도 존재합니다.^^

모든 쿼리의 TableQuery 클래스로의 이전을 '함께 삽질'하기 위해서 TableQuery의 문법에 대해서 한 번 정리를 할 시점도 된 듯 하네요. smile

지금 커뮤니티에서 postgres로의 이전을 심각하게 논의중이라서..
(뭐 다중 cpu환경에서 조타나..어쨋다나) .
기다리지 못하고 어쩔수 없이 영자님을 압박하는 방법을 구사하게 된 것입니다..

아무래도 2.0이 나올려면 시간이 걸릴것 같은데....
빠른 시일내에 TableQuery기반 테터툴즈를 보았으면 합니다.

아니면 mysql를 호출하는 방식과 문법에 대해서 발표하는 방식으로 사용자가 우회해서 사용할 수 있는 방법이라도 가르쳐 주시면 좋겠습니다.
그러면 나중에 2.0버전이 나와도 또다시 삽질하는 않는...은혜를 ...내려 주소서...

[파일이 올라가는지 확인이 안되어서(또는 사용할줄 모르거나) 영자님에게 이메일로 보냈습니다.]

하루종일 삽질해서 mysql 부분만 클래스화 시켜보았습니다.
이것은 추후 db만 다른것으로 바꿀 가능성과

가독성 및 추후 프로시저를 쓸 경우를 대비하기 위함입니다.
더 큰 목적은 운영진에게 db부분의 클래스를 강제하기 위한 압박^^이라고 볼 수 있습니다.

setup.php만 건드리지 않았고 전체적으로 다 소스가 건드려진 상태입니다.
설치하면 기본 시스템은 원본대로 돌아가나..다른 개발자가 만든 플러그인은 손을 보셔야 합니다.

뭐 2가지만 하시면 됩니다.
함수내에 global $_tdb 삽입, 데이타베이스를 콜할때는 $_tdb->함수면 이런식으로 교체

삽질 순서...
1. eolin.php.core의 class DBQuery, class TableQuery 를 mysql.php로 이동
   추후 다른 database를 지원할 경우 데이타베이스이름.php를 인클루드하기 위함...

2. DBQuery 클래스를 ydb 클래스로 이름변경
   midas라는 평션추가 database.php를 보면  $_tdb=& ydb::midas() 로 한번호출

   함수내에서 사용하기 위해서는 global $_tdb 정의하면 됨
   각종 함수내에서서는 $_tdb->query($sql) 이런식으로 호출됨...

   함수로 제공되던 것을 클래스내로 흡수
   fetchQueryRow
   mysql_lesson 을 이름변경하여 흡수 lessen
   mysql_affected_rows -> affected_rows
   mysql_tt_escape_string -> tt_escape_string
   mysql_multi_query(그대로 사용)
   escapeMysqlSearchString(그대로 사용)
   mysql_free_result -> close(& $result) 변수를 넘겨줄때 포인터를 넘겨줌
   mysql_result -> myresult
   doesExistTable(그대로 사용)
   mysql_num_rows -> num_rows
   mysql_fetch_array -> fetch_array
   mysql_fetch_assoc -> fetch_assoc

   mysql_fetch_row -> fetch_row

   추가된 함수
   executeid insert후 프리마리키값 반환
   executerows 실행후 처리된 레코드수 반환

-  커뮤니티에서 postgres를 도입할것을 의논중입니다...만약에 도입하는걸로 결정나면..
   큐브로 db부분만 클래스화시켜서 하려고 계획중입니다..

- 만약에 mysql로 돌린다면 파티션 도입하는 것은 확실합니다. setup.php만 손보면 된다는 사실...

-- 아쉬운 것은  큐브가  베타버전이라 베타버전을 뜯는게 좀 꺼림찍 합니다.

현재 사용할려는 용도와의 적합성을 생각하다보니 테터툴즈 내부를 들여다보게 되었습니다...
일반적인 경우에는 별 문제가 없을수도 있겠지만...

1. mysql_query로 시작하는 모든 코드를 클래스 파일하나로 처리하면 좋겠습니다.(dbquery::...)
   뭐 이미 기능이 있으니깐...그러면 사용자가 원하는 db로 이사가는게 가능해 지지않을까...
   ................뭐 문제는 모든 플러그인이 일시에 못쓰게 되는 단점이 있습니다만...

2. 글쓰신분들 보니 백업의 문제를 고민하는 분들이 있는데..데이타베이스의 버전에 따라서
   선택적으로 파티션이나 분활인덱스를 지원하는 방안을 고려해야 되지 않을까 싶네요...

3. 파일업로드시 연도별로 폴더를 생성해서 저장하는 방안을 생각하면 좋겠습니다.
    기존 방식과의 경로 호환성 문제는 사용자가...업그레이드 한 시점을 셑팅해서 피해가는 방향으로 하면 되지 않을까..
    싶네여..