【IT168 技术】MonetDB是一个开源的高性能列存储数据库系统,比基于行存储的MySQL性能最多可提高10倍 , 参见 MonetDB的TPC-H 性能测试。 MonetDB目前仍然是一个学术机构的开源项目,差不多每6个月出一个Release,由于Bug众多并不推荐在生产环境中使用。
关于列存储数据库(Column-oriented DBMS)参见Wikipedia . 近年来,从商业产品(Sybase IQ)到开源的BigTable类项目(HyperTable, Hbase, Cassandra等),列存储数据库在OLAP应用中的地位越来越突出。
安装步骤(CentOS 5.2 x86_64),安装过程同时编译了MonetDB的Java和PHP客户端库:
1、预先安装JDK, ANT和PHP
#wget http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.1-bin.tar.gz
将它们加入执行路径,例如/etc/profile中加入
export JAVA_HOME=/usr/local/jdk1.6.0_06
export ANT_HOME=/usr/local/apache-ant-1.7.0
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:/usr/local/php-fcgi/bin
export ANT_HOME=/usr/local/apache-ant-1.7.0
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:/usr/local/php-fcgi/bin
配置完后,重新登录,确认相关可执行文件的路径:
# java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) 64-Bit Server VM (build 10.0-b22, mixed mode)
# javac -version
javac 1.6.0_06
# php-config
Usage: /usr/local/php-fcgi/bin/php-config [OPTION]
Options:
--prefix [/usr/local/php-fcgi]
--includes [-I/usr/local/php-fcgi/include/php -I/usr/local/php-fcgi/include/php/main -I/usr/local/php-fcgi/include/php/TSRM -I/usr/local/php-fcgi/include/php/Zend -I/usr/local/php-fcgi/include/php/ext -I/usr/local/php-fcgi/include/php/ext/date/lib]
--ldflags [ -L/usr/kerberos/lib64]
--libs [-lcrypt -lcrypt -lrt -lldap -llber -lpng -lz -ljpeg -lcurl -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lcurl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv -ldl -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt ]
--extension-dir [/usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20060613]
--include-dir [/usr/local/php-fcgi/include/php]
--php-binary [/usr/local/php-fcgi/bin/php]
--php-sapis [cli cgi]
--configure-options [--prefix=/usr/local/php-fcgi --with-config-file-path=/usr/local/php-fcgi/etc --enable-sockets --enable-pcntl --enable-mbstring --with-iconv --with-gd --with-curl --with-zlib --with-jpeg-dir --with-ttf --with-ldap --with-gettext --enable-soap --with-xmlrpc --with-openssl --enable-fastcgi --enable-discard-path --enable-force-cgi-redirect]
--version [5.2.6]
--vernum [50206]
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) 64-Bit Server VM (build 10.0-b22, mixed mode)
# javac -version
javac 1.6.0_06
# php-config
Usage: /usr/local/php-fcgi/bin/php-config [OPTION]
Options:
--prefix [/usr/local/php-fcgi]
--includes [-I/usr/local/php-fcgi/include/php -I/usr/local/php-fcgi/include/php/main -I/usr/local/php-fcgi/include/php/TSRM -I/usr/local/php-fcgi/include/php/Zend -I/usr/local/php-fcgi/include/php/ext -I/usr/local/php-fcgi/include/php/ext/date/lib]
--ldflags [ -L/usr/kerberos/lib64]
--libs [-lcrypt -lcrypt -lrt -lldap -llber -lpng -lz -ljpeg -lcurl -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lcurl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lresolv -ldl -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt ]
--extension-dir [/usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20060613]
--include-dir [/usr/local/php-fcgi/include/php]
--php-binary [/usr/local/php-fcgi/bin/php]
--php-sapis [cli cgi]
--configure-options [--prefix=/usr/local/php-fcgi --with-config-file-path=/usr/local/php-fcgi/etc --enable-sockets --enable-pcntl --enable-mbstring --with-iconv --with-gd --with-curl --with-zlib --with-jpeg-dir --with-ttf --with-ldap --with-gettext --enable-soap --with-xmlrpc --with-openssl --enable-fastcgi --enable-discard-path --enable-force-cgi-redirect]
--version [5.2.6]
--vernum [50206]
2.从MonetDB主页下载 MonetDB-Jun2008-SuperBall.tar.bz2 (实际上从SourceForge)
tar xvjf MonetDB-Jun2008-SuperBall.tar.bz2
cd MonetDB-Jun2008-SuperBall
cd MonetDB-Jun2008-SuperBall
执行
./monetdb-install.sh --prefix=/opt/MonetDB --enable-sql --enable-optimize
则安装编译MonetDB到/opt/MonetDB下。
PHP扩展等会自动编译,生成于 /opt/MonetDB/lib/php/extensions/下。
3. 启动MonetDB服务器的方法是
/opt/MonetDB/bin/mserver5 --dbinit="include sql;"
4. 执行MonetDB 的SQL查询客户端
/opt/MonetDB/bin/mclient -lsql --time
具体SQL语法参见MonetDB的文档
http://monetdb.cwi.nl/projects/monetdb/SQL/Documentation/index.html