Cubrid Database 시스템구성정보 Linux Version Debian 4.0 Cubrid Version Cubrid 7.3.0 PHP Version PHP 5.2.0 문서최종수정일 2008-08-29 작성자 홍사강 호스트웨이인터넷데이터센터 - 1 -
목차 1 장큐브리드소개 3 2장큐브리드설치 4 2-1 큐브리드다운로드 4 2-2 큐브리드설치 4 2-3 큐브리드환경변수설정 5 2-4 큐브리드시작과종료 5 2-5 큐브리드프로세스 5 2-6 큐브리드포트 5 3장 PHP 개발환경구축 6 3-1 아파치설치 6 3-2 PHP 설치 6 3-3 큐브리드모듈생성 6 3-4 php.ini 수정 7 4장데이터베이스 8 4-1 데이터베이스생성 8 4-2 서버프로세스 9 4-3 데이터베이스사용자생성 10 4-4 데이터조회 11 4-5 테이블생성 14 4-6 데이터입력 14-2 -
1 장 - 큐브리스의소개 큐브리드는엔터프라이즈데이터베이스로데이터베이스개수와크기에제한이없으며, 각데이터베이스에생성가능한클래스 ( 테이블 ) 의개수와크기에제한없는대용량데이터베이스환경을제공한다. 각클래스는최대 6,400개의열 ( 컬럼 ) 을가질수있고, 각열은최대 2GB의크기를지원한다. 또한최대색인개수는 6,400 개로대용량데이터베이스환경을제공한다. 큐브리드데이터베이스시스템은트랜잭션의원자성 (Atomicity), 일관성 (Consistency), 지속성 (Durability), 독립성 (Isolation) 을완벽하게보장한다. 큐브리드는 C/C++ 을위한 CCI API, DB C API부터자바용 JDBC 및 TCL, PHP, Python, Ruby API를제공한다. 또한윈도우의개방형표준인터페이스인 ODBC, OLE DB에이르기까지개발에필요한표준 API를제공하며, C/C++ 내장인터프리터인 ESQL/X를제공함으로어떠한환경에서도큐브리드를사용하는응용프로그램을작성할수있는생산성을제공한다. 자바기반저장함수 / 프로시저를지원하여 JDBC 클라이언트응용을거의수정없이그대로서버저장프로시저로전환할수있는구조를지원함으로써, 자바의생산성과재사용성을높여주고, 자바언어의견고함과유연함을데이터베이스응용에서도그대로사용할수있다. 순수자바로작성된통합관리툴인큐브리드매니저를제공하여플랫폼 독립적으로관리, 질의, 진단, 튜닝을하나의툴에서수행할수있는편리한관리 환경을제공한다. 큐브리드는 ( 주 ) 큐브리드社에서개발한국산 DBMS 이며상업적용도로사용할 경우에도무료라이센스가적용된다. - 3 -
2 장큐브리드설치 2-1 큐브리드다운로드 큐브리드사이트 cubrid.com 에서다운로드할수있다. 리눅스플랫폼의경우두가지버전이제공되며 C Library 버전에따라 glibc-2.3.2용과 glibc-2.3.4용두가지가제공된다. glibc-2.3.4 이상의버전을사용하고있다면 glibc-2.3.4 용으로설치하면된다. 설치하려는시스템의 glibc 버전을확인하고다운로드한다. 아래처럼데비안 4.0 은 glibc-2.3.6 이설치되어있으므로 glibc-2.3.4 버전을다운로드하면된다. new:/usr/local# dpkg -l grep libc ii libc6 2.3.6.ds1-13etch5 GNU C Library: Shared libraries ii libc6-dev 2.3.6.ds1-13etch5 GNU C Library: Development Libraries 2-2 큐브리드설치 다운로드한 cubrid 설치파일을 /usr/local/ 로이동시키고실행한다. new:/usr/local# cd /usr/local new:/usr/local# sh CUBRID-7.3.0.1085-x86-Linux-glibc234.sh Install CUBRID to /usr/local/src/cubrid... 생략... CUBRID has been successfully installed. demodb has been successfully created. subway database has been successfully created. If you want to use CUBRID, run the following commands %. /root/.cubrid.sh % cubrid_service start 위메시지가보이면설치끝 - 4 -
2-3 큐브리드환경변수설정 new:/usr/local#. /root/.cubrid.sh 2-4 큐브리드시작과종료 new:/usr/local# cubrid_service start new:/usr/local# cubrid_service stop 2-5 큐브리드프로세스 new:/usr/local# ps -ef grep cas root 3293 3279 0 Jul23? 00:00:00 query_editor_cas_1 root 3294 3279 0 Jul23? 00:00:00 query_editor_cas_2 root 3295 3279 0 Jul23? 00:00:00 query_editor_cas_3 root 3296 3279 0 Jul23? 00:00:00 query_editor_cas_4 root 3297 3279 0 Jul23? 00:00:00 query_editor_cas_5 root 3305 3279 0 Jul23? 00:00:00 broker1_cas_1 root 3306 3279 0 Jul23? 00:00:00 broker1_cas_2 root 3307 3279 0 Jul23? 00:00:00 broker1_cas_3 root 3308 3279 0 Jul23? 00:00:00 broker1_cas_4 root 3309 3279 0 Jul23? 00:00:00 broker1_cas_5 2-6 큐브리드포트 Local Address Foreign Address State PID/Program name 0 0.0.0.0:8001 0.0.0.0:* LISTEN 3279/cmauto 0 0.0.0.0:8002 0.0.0.0:* LISTEN 3285/cmjs 0 0.0.0.0:33000 0.0.0.0:* LISTEN 3300/Cbroker 0 0.0.0.0:30000 0.0.0.0:* LISTEN 3288/Cbroker 0 0.0.0.0:1523 0.0.0.0:* LISTEN 3282/master - 5 -
3 장 PHP 개발환경구축 3-1 apache2 install new:/usr/local # apt-get install apache2 3-2 PHP install new:/usr/local # apt-get install php5 new:/usr/local # apt-get install php5-dev new:/usr/local # apt-get install php5-gd 3-3 큐브리드모듈생성 php extension dir 을찾은후그디렉토리에큐브리드 php 소스를받아압축을해 제한다. extension_dir 은 phpinfo 함수로찾고큐브리드용 php 소스는큐브리드홈 페이지다운로드한다. 큐브리드 CCI 라이브러리와헤더를복사하고, src 폴더에서 phpize 를수행하여 configure 파일을만든다. new:/usr/lib/php5/20060613+lfs# tar zxvf cubrid_php_src_7.3.0.1085.tar.gz new:/usr/lib/php5/20060613+lfs# cd cubrid_phpext/ new:/usr/lib/php5/20060613+lfs/cubrid_phpext# mkdir cci new:/usr/lib/php5/20060613+lfs/cubrid_phpext# cp $CUBRID_BROKER/cci/libcascci.a cci new:/usr/lib/php5/20060613+lfs/cubrid_phpext# cp $CUBRID_BROKER/cci/cas_cci.h cci new:/usr/lib/php5/20060613+lfs/cubrid_phpext# cd src/ new:/usr/lib/php5/20060613+lfs/cubrid_phpext/src# phpize Configuring for: - 6 -
PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 Configure & make new:/usr/local/cubrid_phpext/src#./configure --enable-cubrid --with-phpconfig=/usr/bin/php-config debian:/usr/local/cubrid_phpext/src# make new:/usr/lib/php5/20060613+lfs/cubrid_phpext/src# cd modules/ new:/usr/lib/php5/20060613+lfs/cubrid_phpext/src/modules# cp cubrid.so /usr/lib/php5/20060613+lfs/ new:/usr/lib/php5/20060613+lfs/cubrid_phpext/src/modules# cd.. new:/usr/lib/php5/20060613+lfs/cubrid_phpext/src# cp cubrid_err.msg /usr/lib/php5/20060613+lfs/ 3-4 php.ini 수정 php.ini 파일을열어서아래내용을추가한다. [Cubrid] extension=cubrid.so cubrid.err_path="/usr/lib/php/20060613+lfs" 아파치 & 큐브리드재시작 /usr/local/apache2/bin/apachectl restart cubrid_service stop cubrid_service start - 7 -
phpinfo 함수로확인한다. 4 장데이터베이스 4-1 데이터베이스생성 큐브리드를설치하면기본적으로 subway, demodb 라는 DB 가생성되어있다. new:/usr/local/cubrid/databases# pwd /usr/local/cubrid/databases new:/usr/local/cubrid/databases# ls databases.txt demodb subway createdb 명령으로 DB 를생성해보자. 데이터베이스를한곳에서관리하기위해 Database 라는디렉토리로이동한다음 hostway 라는공간을만들어준다. new:/usr/local/cubrid/databases# mkdir hostway new:/usr/local/cubrid/databases# cd hostway new:/usr/local/cubrid/databases/hostway# createdb hostway Creating database with 5000 pages. *** CUBRID Standalone Release 7.3.0.1085 *** Generated Oct 23 2007 at 19:55:46 Database `hostway' was successfully created at `/usr/local/cubrid/databases'. - 8 -
If you want to start this database, run command `start_server hostway'. If you want to execute query, run command `sqlx hostway'. 데이터베이스가정상적으로생성되면 databases.txt 에기본적인정보가저장된다. new:/usr/local/cubrid/databases# pwd /usr/local/cubrid/databases new:/usr/local/cubrid/databases# ls databases.txt demodb hostway subway 4-2 서버프로세스 데이터베이스를생성하면서버프로세스를실행해야한다. 서버프로세스를실행시 켜주지않으면데이터베이스에접근할수없다. 서버프로세스는데이터베이스한개당하나의프로세스가동작한다. new:/usr/local/cubrid/databases# start_server hostway This may take a long time depending on the amount of recovery works to do. Starting server for database hostway... WARNING: Java VM library is not found : (null). Consequently, calling java stored procedure is not allowed. *** CUBRID Server Release 7.3.0.1085 *** Generated Oct 23 2007 at 20:10:04 Commdb P 명령으로실행중인서버프로세스를확인할수있다. new:/usr/local/cubrid/databases# commdb -P The CUBRID master running on host debian was started at Fri Aug 8 22:28:24 2008 has serviced 15 requests. 1 server(s) running. Server hostway (rel 7.3, pid 6873) - 9 -
4-3 데이터베이스사용자생성 큐브리드에서기본제공하는계정은 dba 와 public 이다. sqlx 라는처리기를이용해접속할수있으며접속시사용자를명시해주지않으면 public 계정으로접속된다. SQL/X 는 Database 에스키마를다루거나데이터를다루기위해 sql 문을입력, 편집, 수행할때사용하는 Command Line 기반 SQL 인터프리터이다. 오라클의 sqlplus 와같은프로그램이라고생각하면된다. hostway 데이터베이스에 dba 계정으로접속하고 dba 계정의암호를변경해보자. debian:/usr/local/cubrid/databases# sqlx hostway -u dba CUBRID SQL Interpreter Type `;help' for help messages. sqlx> sqlx> alter user dba password 'dba1004' sqlx> ;x Current transaction has been committed. 1 command(s) successfully processed. sqlx> 일반적으로 SQL 구문은 ; ( 세미콜론 ) 으로끝내야하지만큐브리드 sqlx 처리기에 서는 ;x 나 ;run 으로구문을끝내야한다. - 10 -
다음은 create 문으로 hostway 라는사용자를생성하고조회하는방법이다. sqlx> create user hostway sqlx> ;x Current transaction has been committed. 1 command(s) successfully processed. sqlx> sqlx> alter user hostway password '1004' sqlx> ;x Current transaction has been committed. 1 command(s) successfully processed. sqlx> select name, password from db_user sqlx> ;x === <Result of SELECT Command in Line 1> === name password ============================================ 'DBA' db_password 'PUBLIC' NULL 'HOSTWAY' NULL 3 rows selected. Current transaction has been committed. 1 command(s) successfully processed. sqlx> 4-4 데이터조회 기본적으로제공되는 subway DB 의 line 테이블을조회해보자. <html> <head><meta http-equiv='content-type' content='text/html; charset=euckr'></head> - 11 -
<body> <center> <table border=2> <? $host_ip = "localhost"; $host_port = 33000; $db_name = "subway"; $user = "dba"; $pass = ""; $cubrid_connect = @cubrid_connect($host_ip, $host_port, $db_name, $user, $pass); if (!$cubrid_connect){ echo "DB connection failed..!"; exit; $sql = "select line_id,line from line"; $result = cubrid_execute($cubrid_connect,$sql); if($result){ $num_fields = cubrid_num_cols($result); $columns = cubrid_column_names($result); echo("<tr>"); while(list($line_id, $line) = each($columns)){ echo("<td>$line</td>"); echo("</tr>"); while($row = cubrid_fetch($result)){ echo("<tr>"); for($i=0;$i<$num_fields;$i++){ echo ("<td>"); - 12 -
echo ($row[$i]); echo("</td>"); cubrid_commit($cubrid_connect); cubrid_disconnect($cubrid_connect);?> </table> </body> </html> 웹으로조회한결과는아래와같다. - 13 -
4-5 테이블생성 member 테이블생성 sqlx> create table member(name varchar(20) NOT NULL, email varchar(50), address varchar(50)) sqlx> ;x Current transaction has been committed. 1 command(s) successfully processed. 4-6 데이터입력 member 테이블에데이터입력하고조회하는 PHP 소스 <html> <head><meta http-equiv='content-type' content='text/html; charset=euckr'></head> <body> <center> <table border=2> <? $host_ip = "211.115.196.39"; $host_port = 33000; $db_name = "hostway"; $user = "dba"; $pass = "dba1004"; $cubrid_connect = @cubrid_connect($host_ip, $host_port, $db_name, $user, $pass); if (!$cubrid_connect) { echo "DB connection failed..!"; - 14 -
exit; $sql = "insert into member(name,email,address) values('hostway','hostway@hostway.co.kr','sungnamsi bundanggu yatapdong')"; $result = cubrid_execute($cubrid_connect, $sql); if($result) { echo ("<tr>"); echo "<td> Data insert complete..! </td>"; echo ("</tr>"); $select = "select * from member"; $mem_result = cubrid_execute($cubrid_connect, $select); $num_fields = cubrid_num_cols($mem_result); while($row = cubrid_fetch($mem_result)){ echo ("<tr>"); for($i=0;$i<$num_fields;$i++){ echo ("<td> $row[$i] </td>"); echo ("</tr>"); cubrid_commit($cubrid_connect); cubrid_disconnect($cubrid_connect);?> </table> </body> </html> - 15 -
위소스를브라우저에서확인하면아래그림과같다. 오타수정및문의사항은메일부탁드립니다. - 감사합니다 - - 16 -