Database Access
데이터베이스가 필요한 경우는 여럿 있습니다. Kurogo는 PDO pho library를 사용하는 표준 데이타베이스 access abstraction system을 만들었습니다. 이 section에서는 데이터베이스 connection에 대한 configuration 뿐만 아니라 모듈이나 library를 만들 때 어떻게 데이터베이스를 활용하는지에 대한 설명도 있습니다.
Supported Database Backends
Kurogo는 다음과 같은 부분을 지원합니다. 이 시스템을 사용하시려면 PHP extention 이 요구된다는 것을 기억해 두세요. 데이터베이스 서버를 설치하고 configuring 하는것은 이 문서에서는 따로 다루지 않겠습니다.
- MySQL
- SQLite
- PostgreSQL
- Microsoft SQLServer. Note that support for SQL Server is limited to servers running Microsoft Windows and requires the Microsoft Library found at: http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx
An important note about SQL statements
Kurogo 데이터베이스 라이브러리는 단지 abstraction library 에 접속하는 일만 합니다. 이것은 SQL abstract library 가 아니기 때문에 서로 다른 backend 시스템이 하나의 SQL language를 지원하지 않구요 거기에 맞는 statement를 사용해야 하는 겁니다. SQL 구문이 반드시 다르게 되는 back ends 들에 대한 정보는 Using the database access library 를 보세요.
Kurogo Features that use Database connections
- internal device detection system은 브라우저에 데이터를 저장하기 위해 내장된 SQLite 데이터베이스를 사용합니다.
- Statistics Modules 은 access log들을 index 하고 report를 준비하기 위해 데이터베이스를 사용합니다. 여러분 환경이 load balance 된 환경이라면 centralized 데이터베이스를 사용하시는게 좋을 겁니다.
- 옵션으로 세션데이터를 저장하려면 SessionDB 클래스를 사용해서 서버에 파일로 저장할 게 아니라 데이터베이에 저장하는 것이 좋습니다.
- DatabasePeopleController는 디렉토리 정보를 얻기 위해 데이터베이스를 사용합니다. (LDAP 서버를 사용하지 않고 데이터베이스를 사용하는 겁니다.)
- DatabaseAuthentication authority 는 authentication을 위해 데이터베이스를 사용합니다.
이 기능들을 사용하시려면 데이터베이스만 있으면 됩니다. 데이터베이스를 사용하지 않아도 Kurogo를 사용할 수는 있습니다.
Configuring Database Connections
site.ini 파일의 database 섹션에는 데이터베이스 connection setting의 primary set 이 있습니다. 모든 데이터베이스 커넥션들은 디폴트로 series of setting을 사용할 겁니다. 여러분들은 특정 서비스의 configuration마다 적당한 값들을 사용함으로서 이러한 세팅들을 override 하실 수 있습니다.
- DB_DEBUG - on 이면 쿼리들은 log 되고 에러들은 브라우져에 보여집니다. production site에서는 off로 해 두셔야 합니다. 그렇지 않으면 데이터베이스 에러가 있을 때 SQL 쿼리가 노출 될 수 있습니다.
- DB_TYPE - 데이터베이스 시스템의 종류. 아래와 같은 것들이 있습니다.
- mysql
- sqlite
- pgsql
- mssql
아래 값들은 host based 시스템들에 적합합니다. (mysql, pgsql and mssql)
- DB_HOST - The hostname/ip address of the database server.
- DB_USER - The username needed to connect to the server
- DB_PASS - The password needed to connect to the server
- DB_DBNAME - The database where the tables are located
- DB_PORT - The port used to connect to the server. If empty it will use the default (mysql and pgsql only)
The following values are valid for file based systems (sqlite)
아래 값은 file based systems 에 적용됩니다. (sqlite)
- DB_FILE - 데이터베이스 파일의 위치. Use the DATA_DIR constant to save the file in the site data dir. This folder is well suited for these files.
Using the database access library
데이터베이스 접근이 요구되는 모듈을 만든다면 여러분 코드를 간단하게 하고 같은 데이터베이스 접근을 쉽게 하기 위해 데이터베이스 클래스를 활용하실 수 있습니다.
- Include the db package: Kurogo::includePackage(‘db’);
- Instantiate a db object with arguments, the arguments should be an associative array that contains the appropriate configuration parameters. If the argument is blank then it will use the default settings found in the database section of site.ini
- Use the query($sql, $arguments) method to execute a query. The arguments array is sent as prepared statement bound parameters. In order to prevent SQL injection attacks you should utilize bound parameters rather than including values in the SQL statement itself
- The query method will return a PDOStatement object. You can use the fetch method to return row data.
- The lastInsertID method of the db object will return the ID of the last inserted row.
<?php
Kurogo::includePackage('db');
class MyClass
{
function myMethod() {
$db = new db();
$sql = "SELECT * FROM sometable where somefield=? and someotherfield=?";
$result = $db->query($sql, array('value1','value2'));
while ($row = $result->fetch()) {
// do something
}
}
}
'WEB_APP > Kurogo' 카테고리의 다른 글
Kurogo Tutorial 21 - Emergency Module - (0) | 2012.07.12 |
---|---|
Kurogo Tutorial 20 - Module Interaction - (0) | 2012.06.13 |
Kurogo Tutorial 19 - The Kurogo Object - (0) | 2012.06.12 |
Kurogo Tutorial 18 - Video Module - (0) | 2012.06.07 |
Kurogo Tutorial 17 - Calendar Module - (0) | 2012.06.01 |
Kurogo Tutorial 14 - Handling Requests - (0) | 2012.05.23 |
Kurogo Tutorial 13 - Localization - (0) | 2012.05.22 |
Kurogo Tutorial 12 - Logging in Kurogo - (0) | 2012.05.21 |
Kurogo Tutorial 11 - News Module - (0) | 2012.05.17 |
Kurogo Tutorial 10 - Module 만들기 - (0) | 2012.05.13 |