Background Image
조회 수 24446 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

MySQL + PHP 기반에서 CUBRID R3.1 + PHP기반으로 포팅하기

소개: MySQL을 CUBRID로 포팅하는 작업은 기존에 서비스 되고 있는 경우 고칠 부분의 양에 따라 어려움을 겪을 수 있으나 어렵진 않다. 또는 새롭게 개발할 경우 조금 다른 점은 있으나 금방 숙지하여 진행할 수 있다

기존에 작성된 문서(MySQL,PHP 기반에서 CUBRID,PHP 기반으로 포팅하기 http://www.cubrid.com/zbxe/47285 ) CUBRID2008R3.1 버전에 맞추어 재 작성하였다. (BLOB을 제외한 나머지는 R3.0에도 적용된다.)

적용 대상: CUBRID2008R3.1

적용 환경

본 문서는 아래와 같은 환경에서 적용 되었다.

CUBIRD 2008R3.1이상

php API를 사용하기 위한 php extension 환경 구성

MySQL 데이터 타입 변경하기

데이터 타입 변경

MySQL 주요 데이터 타입의 변환 방법은 다음과 같다.

MySQL

CUBRID

비고

BOOLEAN

BIT

 

TINYBLOB(n) (n <= 256)

BIT VARYING(n) or

BLOB

1G 이하는 BIT VARYING(n) 대체 권장

1G 이상은 BLOB로 대체 권장

BLOB(n) (<= 65K)

MEDUIMBLOB (<= 16M)

LONGBLOB (<= 4G)

YEAR

-

VARCHAR(4)

TEXT(n)

STRING

 

SET(n)

SET

MySQL: n < = 64

CUBRID: 개수 및 데이터 타입 제한 없음

ENUM(..)

-

MySQL 고유타입

이블 생성 쿼리 변환 에졔

다양한 변환 예제를 보여주기 위해 가상의 테이블을 생성하였다.

MySQL 용 테이블 생성 쿼리

CREATE TABLE `ma_table` (

  `ma_id` int(11) NOT NULL auto_increment,

  `ma_subject` varchar(255) NOT NULL default '',

  `ma_content` mediumtext NOT NULL,

  `ma_time` datetime NOT NULL default '0000-00-00 00:00:00.000',

  `ma_ip` varchar(255) NOT NULL default '',

  `ma_last_option` text NOT NULL,

PRIMARY KEY  (`ma_id`),

UNIQUE KEY `fkey1` (`ma_subject`,` ma_content`)

);

CREATE INDEX ma_index ON ma_table (ma_ip);

 CUBRID로 변환한 테이블 생성 쿼리

CREATE TABLE ma_table (

               ma_id INTEGER NOT NULL auto_increment,

               ma_subject VARCHAR(255) NOT NULL DEFAULT '',

               ma_content STRING NOT NULL,

               ma_time DATETIME NOT NULL DEFAULT datetime'00:00:00.000 AM 01/01/0001'  ,

               ma_ip VARCHAR(255) NOT NULL DEFAULT '',

               ma_last_option STRING NOT NULL,

PRIMARY KEY (ma_id),

UNIQUE (ma_subject, ma_content)

);

CREATE INDEX ma_index ON ma_table (ma_ip);

1.      테이블 명을 감싸고 있는 홀따옴표() 기호를 큰따옴표()로 변경하거나 제거한다.

2.      컬럼 명을 감싸고 있는 홀따옴표() 기호를 큰따옴표()로 변경하거나 제거한다.

3.      int(11) integer로 변경한다.

4.      mediumtext text string으로 변경한다.

5.      datetime default를 다음의 형식으로 변경한다. datetime'00:00:00 AM 01/01/0001'

6.      unique key에서 key를 제거한다.

 MySQL 함수 및 연산자 변경하기

CUBRID2008R3.0 이전 버전에서 지원하지 않던 NOW, IFNULL, LIMIT 등 많은 함수가 추가 되어 기존 MySQL용 주요 함수를 변경하지 않고 사용 가능하게 되었다.

MySQL 주요 함수의 변환 방법

MySQL

CUBRID

NOW

CUBRID2008R3.0 부터 지원

IFNULL()
SELECT IFNULL(NULL, 10);

CUBRID2008R3.0 부터 지원

LEFT()
SELECT LEFT(
CUBRID, 5);

CUBRID2008R3.0 부터 지원

CONCAT

SELECT CONCAT(CU, B, RID);

CUBRID2008R3.0 부터 지원

LIMIT

order by limit 1

CUBRID2008R3.0 부터 지원

MySQL 용 쿼리 변경하기

CUBRID2008R3.0 이전 버전에서 지원하지 않던 INSERT INTO SET, WHERE 1 !=1 등 이 지원되면서 MySQL용 주요 쿼리의 변경 작업이 줄어 들었다.

MySQL 주요 쿼리의 변환 방법

MySQL

CUBRID

INSERT INTO SET

CUBRID2008R3.0 부터 지원

WHERE 1

WHERE 1=1

WHERE 1 != 2

CUBRID2008R3.0 부터 지원

WHERE num_col = 1

WHERE num_col = 1

SELECT 1 ;

CUBRID2008R3.0 부터 지원

SELECT col_1 FROM tb1

LIMIT 1, 10;

CUBRID2008R3.0 부터 지원

 MySQL 주요 쿼리의 변환 예제

쿼리 변환 예제

 … where po_id = ‘5’”; // po_id 속성이 숫자형일 때
-> …where po_id = 5”; // 홀 따옴표 제거

" … where 1 ";

-> " … where 1=1 ";

MySQL 용 php API 변경하기

MySQL 주요 php API의 변환 방법은 다음과 같다. 주요 API 대부분이 mysql_ 대신 cubrid_를 사용하므로 대체가 가능하다.

MySQL 주요 php API의 변환 방법

MySQL

CUBRID

mysql_affected_rows()

cubrid_affected_rows()

mysql_close()

cubrid_disconnect()

mysql_connect()

cubrid_connect()

mysql_error_num()

cubrid_error_code()

mysql_error()

cubrid_error_msg()

mysql_query()

cubrid_execute()

mysql_fetch_array

cubrid_fetch()

 php API 변환 예제

mysql+php  e cubrid+php API 변환 예제

1. mysql_connect()

mysql_connect($host, $user, $pass);

->

cubrid_connect($host, $port, $db, $user, $pass);

2. my_insert_id()

$po_id = mysql_insert_id(); // tbl1 insert 후 호출
->

select current_val from db_serial where class_name = 'tbl1' 쿼리를 실행하여 가져온 값이 $r일 때

$po_id = $r["current_val"];

3. mysql_commit()

mysql_commit($conn_handle);
->

cubrid_commit($conn_handle);        // 주의! 연결 핸들이 끊김

PHP API 변환 시 주의 사항

·      Select 절이라도 꼭 트랜잭션 처리(cubrid_commit/cubrid_rollback)를 해야 한다. CUBRID 3-tier 구조로 동작이 되며, 원활한 자원해제를 위해 select 처리를 하였더라도 commit(또는 rollback) 처리를 하여 트랜잭션을 정리해야 한다.

·      Select 질의 수행하고 request handle를 꼭 닫아야 한다. select 질의를 cubrid_execute 를 실행한 후 해당 request handle close 를 해주지 않으면 cub_cas 의 메모리가 급격히 증가하게 되고, 해당 connection 이 여러 개의 cub_cas 에 연결되어있을 경우 서버의 리소스를 점유하여 성능 저하 현상이 발생한다

$con = cubrid_connect ("dbsvr.cubrid.com", 12345, "demodb");

if ($con) {

   echo "connected successfully";

   $req = cubrid_execute ( $con, "select * from members", CUBRID_INCLUDE_OID | CUBRID_ASYNC);

   if ($req) {

      while ( list ($id, $name) = cubrid_fetch ($req) ){

         echo $id;

         echo $name;

      }

      cubrid_close_request($req);

    }

    cubrid_commit($con);

   cubrid_disconnect($con);

}

참고문서

1.      CUBRID MySQL 비교:

http://www.cubrid.com/zbxe/bbs_developer_material/42215

2.      CUBRID MySQL PHP 함수 비교 :

http://www.cubrid.com/zbxe/24680

3.      CUBRID 2008 R3.0 릴리스 노트

http://www.cubrid.com/zbxe/83324

4.      PHP를 이용하여 CUBRID 사용할 때의 주의점

http://blog.naver.com/windyhan/110075051208


  1. SQuirreL SQL Client에서 CUBRID 사용하기

    Date2009.04.18 CategoryJava ByPrototype Views34536
    Read More
  2. SNS 유형 서비스에서 CUBRID와 MySQL 조회 성능 비교

    Date2011.07.14 Category튜닝 Byadmin Views21188
    Read More
  3. SELECT ~ FOR UPDATE 대체 방법

    Date2009.12.30 CategoryJava By손승일 Views32381
    Read More
  4. QuantumDB Eclipse Plugin을 사용하여 CUBRID연동하기

    Date2009.10.06 CategoryJava Bycubebridge Views28923
    Read More
  5. QTADO를 이용하여 CUBRID접속하기

    Date2009.12.10 CategoryODBC/OLEDB Bycubebridge Views21490
    Read More
  6. PyCharm을 이용한 CUBRID, Django 연동 가이드

    Date2016.04.11 Category기타 By진우진 Views8159
    Read More
  7. Power*Architect 에서 CUBRID 사용하기

    Date2009.04.18 CategoryJava ByPrototype Views23880
    Read More
  8. Oracle의 SYS_CONNECT_BY_PATH 함수 흉내내기

    Date2009.06.15 Category기타 ByCUBRID_DEV Views26530
    Read More
  9. ODBC드라이버를 이용한 2개 이상의 Statement 사용방법.

    Date2009.07.02 CategoryODBC/OLEDB Byseongjoon Views23646
    Read More
  10. MySQL,PHP 기반에서 CUBRID,PHP 기반으로 포팅하기(CUBRID 2008 R3.1)

    Date2011.03.30 CategoryPHP By손승일 Views24446
    Read More
  11. MySQL,PHP 기반에서 CUBRID,PHP 기반으로 포팅하기

    Date2009.07.02 CategoryPHP By시난 Views32190
    Read More
  12. MD5 암호화 모듈

    Date2008.11.21 Category기타 Byadmin Views38597
    Read More
  13. LINUX에서 PHP 사용하기 - phpize를 이용한 설치

    Date2008.11.21 CategoryPHP Byadmin Views37461
    Read More
  14. LINUX에서 PHP 사용하기

    Date2008.11.21 CategoryPHP Byadmin Views42495
    Read More
  15. LINUX CUBRID 4.0 매니저 설치방법

    Date2011.07.19 CategoryInstall By정만영 Views23654
    Read More
  16. LIMIT절을 사용하여 SQL문을 간결하게 작성하고, 부분범위 처리를 유도하자.

    Date2016.06.29 Category튜닝 By권호일 Views15532
    Read More
  17. JavaSP SampleCode(Pivot기능)

    Date2009.07.28 CategoryJava Bycubebridge Views27555
    Read More
  18. JDBC를 사용한 다중화 구성 SELECT Query 부하 분산 가이드

    Date2017.03.30 CategoryJava By윤준수 Views3955
    Read More
  19. IIS에서 PHP, CUBRID 사용하기

    Date2010.04.19 CategoryPHP By남재우 Views30311
    Read More
  20. HP-UX에서 CUBRID 사용을 위한 kernel 설정값 조정

    Date2009.04.01 CategoryLinux Byadmin Views54160
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales