開源的數據庫池連接代理服務器:SQL Relay

jopen 10年前發布 | 75K 次閱讀 SQL Relay 數據庫連接池

SQL Relay是個功能強大并且非常容易使用的持久數據庫連接池系統,能夠運行在Unix/Linux系統下,能夠支持大部分主流的數據庫系統和大部分的編程語言,有效的減輕服務器的負載和移植問題,是很多Web應用數據庫連接池的一個選擇。
SQL Relay 是適合于Unix/Linux下的一個持久數據庫連接池,代理服務器和負載平衡系統。

 

SQL Relay的特點

  • 快速的執行數據庫驅動的Web應用
  • 增強的可測性數據庫驅動的Web應用
  • 分配數據庫的訪問連接
  • 關閉數據庫的訪問連接
  • 從不支持的平臺訪問數據庫
  • 從一個數據庫到另一種數據庫移植應用

SQL Relay支持的數據庫系統:

  • Oracle
  • MySQL
  • mSQL
  • PostgreSQL
  • Sybase
  • MS SQL Server
  • IBM DB2
  • Interbase
  • Sybase
  • SQLite
  • ODBC
  • MS Access

SQL Relay 客戶端API支持一些高級的數據庫操作,例如綁定變量、多記錄獲取、客戶端結果的緩存和支持事務等。

SQL Relay 的客戶端API支持的編程語言有

  • C
  • C++
  • Perl
  • Python
  • PHP
  • Ruby
  • Java
  • TCL
  • Zope


SQL Relay 給下面的數據庫抽象層提供驅動支持:

  • Perl DBD
  • Python DB
  • Ruby DBD
  • PHP Pear DB

SQL Relay 的支持:
  • 命令行客戶端
  • 一個GUI的配置工具
  • 豐富的文檔

[ 相關鏈接 ]

  • 官方網站:http://sqlrelay.sourceforge.net
  • 文檔支持:http://sqlrelay.sourceforge.net/documentation.html
  • PHP API編程指南:http://sqlrelay.sourceforge.net/sqlrelay/programming/php.html
  • PHP API參考手冊:http://sqlrelay.sourceforge.net/sqlrelay/api/php/doc.html
  • PEAR DB API編程指南:http://sqlrelay.sourceforge.net/sqlrelay/programming/phppeardb.html
  • 安裝配置:http://blog.csdn.net/heiyeshuwu/archive/2006/05/12/726082.aspx
二、SQL Relay支持哪些數據庫?
* Oracle
* MySQL
* mSQL
* PostgreSQL
* Sybase
* MS SQL Server
* IBM DB2
* Interbase
* Sybase
* SQLite
* Lago
* ODBC
* MS Access


三、安裝和配置;

不說廢話了,開始安裝SQL Relay,到 http://sqlrelay.sourceforge.net/ 去下載相應的軟件
安裝SQL Relay需要先安裝Rudiments, 在 http://sqlrelay.sourceforge.net/download.html 可以找到


1、安裝Rudiments:

# tar vxzf rudiments-0.28.2.tar.gz
# cd rudiments-0.28.2
# ./configure --prefix=/usr/local/rudiments
# make
# make install

至此,rudiments安裝結束


2、安裝SQL Relay:

# tar vxzf sqlrelay-0.36.4.tar.gz
# cd sqlrelay-0.36.4
# ./configure --prefix=/usr/local/sqlrelay --with-rudiments-prefix=/usr/local/rudiments --with-mysql-prefix=MySQL安裝路徑 --with-freetds-prefix=FreeTDS安裝路徑 --with-oracle-home=Oracle安裝路徑 --with-php-prefix=PHP安裝路徑
# make
# make install

安裝結束,以上編譯參數根據個人需要來設定,因為我同時需要Oracle SQLserver MySQL,所以才加了這么多參數的

3、設置PHP:

修改php.ini

extension_dir = "./"

把以上內容修改為:

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922"

根據PHP安裝的路徑來修改,并不是每個版本的PHP都是這個路徑
在php.ini中添加如下內容

extension=sql_relay.so

接下來,介紹SQL Relay如何連接SQL Server
修改FreeTDS的配置文件freetds.conf
加入如下內容:

[msde]
host = 172.16.20.203
port =1433
tds version = 8.0
client charset = GB2312

請根據個人需求來修改


4、修改SQL Relay的配置文件

# cd /usr/local/sqlrelay/etc
# cp sqlrelay.conf.example sqlrelay.conf

把sqlrelay.conf的內容改為:

<?xml version="1.0"?>
<!DOCTYPE instances SYSTEM "sqlrelay.dtd">
<instances>
<instance id="msdetest" port="9000" socket="/tmp/msdetest.socket" dbase="freetds" connections="5" maxconnections="10" maxqueuelength="0" growby="1" ttl="60" endofsession="commit" sessiontimeout="5" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass">
<users>
<user user="sa" password="sa"/>
</users>
<connections>
<connection connectionid="msdetest" string="server=msde;db=pubs;user=sa;password=sa;" metric="1"/>
</connections>
</instance>
</instances>


四、啟動SQL Relay,并測試;


1、啟動 SQL Relay

# export PATH=$PATH:/usr/local/sqlrelay/bin
# sqlr-start -id msdetest


2、使用SQL工具:

# sqlrsh -id msdetest

可以直接輸入SQL語句

停止SQL Relay:

# sqlr-stop msdetest


3、測試PHP:

寫一個PHP文件,內容如下:

<?
$con=sqlrcon_alloc("msdetest",9000,"/tmp/msdetest.socket","sa","sa",0,1);
$cur=sqlrcur_alloc($con);
sqlrcur_sendQuery($cur,"select * from t_gifts");
for ($row=0; $row<sqlrcur_rowCount($cur); $row++) {
for ($col=0; $col<sqlrcur_colCount($cur); $col++) {
echo sqlrcur_getField($cur,$row,$col);
echo ",";
}
echo "<br>\n";
}
sqlrcur_free($cur);
sqlrcon_free($con);
?>

執行這個PHP文件,看看能不能出現數據

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!