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


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
126 CCI/DB API embedded sql 사용법 admin 2008.11.21 29734
125 Windows eclipse에서 python 및 CUBRID broker_log_top 사용하기 cubebridge 2009.07.28 27272
124 PHP cubrid_fetch_all 함수 추가하기 2 남재우 2009.06.16 20828
123 기타 csql(SQL 실행기) 사용법 1 admin 2008.11.21 26557
122 Linux cron을 이용한 백업 자동화 admin 2009.04.01 33122
121 기타 connect by 구현 방법 admin 2009.04.01 52375
120 PHP apache, php rpm package 생성 시 필요한 rpm 스펙 file admin 2011.07.14 25237
119 PHP apache, PHP 설치하기 - LINUX file 남재우 2011.03.08 31308
118 튜닝 [질의튜닝]order by desc가 인덱스 타게 하려면 admin 2011.07.14 28483
117 기타 [주의사항] CUBRID에서의 BLOB/CLOB 사용시 백업 및 복구에 대한 주의 점 admin 2011.07.14 52795
116 Install [linux] wget으로 제품 다운로드 시 "wget: unable to resolve host address ‘ftp.cubrid.org’" 해결방 큐브리드_김주현 2021.07.02 2268
115 기타 [10.2 path] - 생성된 view구문을 'show create view' 수행 시 정상적으로 출력되지 않던 이슈 patch 큐브리드_김주현 2020.11.09 889
114 Install Windows 에서 CUBRID 설치하기 file 남재우 2008.11.22 43645
113 Windows Windows 에 설치 된 JRE 설치 위치 확인 하기. file 성진 2015.05.28 12572
112 ODBC/OLEDB Vista_IIS_CUBRID_ASP연동 janus 2010.01.31 24553
111 ODBC/OLEDB VB에서 CUBRID ODBC/OLEDB 사용하는 방법 및 샘플코드. file seongjoon 2012.06.30 26927
110 기타 UTF-8 사용법 admin 2008.11.21 23235
109 Install UNIX/LINUX 에서 CUBRID 설치하기 남재우 2008.11.22 37532
108 Java Spring framework 사용 예제 admin 2009.04.01 53134
107 기타 Server HA 구성 시 CUBRID 설정과 방법 정만영 2010.02.03 21185
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