关于Netezza,是一个数据仓库的产品,几年前被IBM收购,作为IBM在数据仓库这块与Oracle的eXdata和Teradata进行竞争。一般情况下,数据仓库应用的行业比较有限(金融、电信、烟草等),对GIS所对应的常规行业来说,一般的关系型数据库就可以搞定了,但是如果用户有海量的数据存储以及对这些海量数据进行分析,可能使用数据仓库就比较好了。
我们上述的数据仓库产品一般情况下都是一体机,所谓一体机就是直接将硬件和软件一块绑定来销售,这样操作的特点
关于数据仓库和Hadoop
自从了解了Hadoop,已经现在研究的数据仓库,我一直对这两个对象感觉有相同的地方,有共同点:
但是经过与IBM工程师的沟通,这两个还是有相关区别的
数据仓库:
Hadoop:
好了,上面只是说了那么多,我们切入正题,我也是第一次接触这个东西,一方面是价格昂贵,这块应用较少,baidu搜索基本没有什么有效的信息,使用的用户较少,二是如果使用这个东西,相关技术人员是没有时间来整理技术总结,毕竟非常小众。刚好有个机会ArcGIS与Netezza有相关的合作,而且ArcGIS10.1就已经支持了netezza.下面就将相关培训进行总结。
虽然说Netezza是一体机,但是IBM也便于用户学习,根据Netezza的硬件构造以及工作原理,来模拟两个虚拟机。
IBM提供了两个虚拟机,
一个HOSTS(Linux无界面系统):提供一个操作Netezza的输入接口,比如NZ命令以及SQL操作
一个是SPU(Snippet Processing Unit):这个基本上是一些硬件的配置,CPU、内存、存储等
一般情况下先启动HOSTS虚拟机,然后启动SPU虚拟机,SPU虚拟机记录了HostS里面操作的相关信息。
这些虚拟机有两个操作系统用户root/netezza,nz/nz,还有一个netezza的数据库用户admin/password
我们可以使用Putty来连接nz用户,使用nzstop和nzstart来重启服务,然后查看nzstate如果状态为Online,说明netezza工作正常
[nz@netezza ~]$ nzstop [nz@netezza ~]$ nzstart WARNING: NPS fabric interface 'eth1' has a sub-optimal MTU: 1500 WARNING: NPS fabric interface 'eth1' tx queue length is low: 1000 (startupsvr) Info: NZ-00022: --- program 'startupsvr' (26081) starting on host 'netezza' ... --- [nz@netezza ~]$ nzstate System state is 'Online'.
以下是常有的命令介绍
说明:netezza的底层有postgreSQL的内核,所以他们的方式与DB2、MSSQL、PostgreSQL类似,都是有数据库的概念,使用nzsql类似于Oracle的sqlplus
[nz@netezza ~]$ nzsql Welcome to nzsql, the Netezza SQL interactive terminal. Type: \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit SYSTEM(ADMIN)=>默认情况下进入的SYSTEM数据库,用户名是admin,我们可以直接在后面写SQL语句
另外也可以使用\h已经\?来查看相关的SQL命令以及内部命令。
SYSTEM(ADMIN)=> \? \a toggle between unaligned and aligned mode \act show current active sessions \c[onnect] [dbname [user] [password]] connect to new database (currently 'INZA') \C <title> HTML table title \copy ... perform SQL COPY with data stream to the client machine \d <table> describe table (or view, index, sequence, synonym) \d{t|v|i|s|e|x} list tables/views/indices/sequences/temp tables/external tables \d{m|y} list materialized views/synonyms \dS{t|v|i|s} list system tables/views/indexes/sequences \dM{t|v|i|s} list system management tables/views/indexes/sequences \dp <name> list user permissions \dpu <name> list permissions granted to a user \dpg <name> list permissions granted to a group \dgp <name> list grant permissions for a user \dgpu <name> list grant permissions granted to a user \dgpg <name> list grant permissions granted to a group \d{u|U} list users/User Groups \d{g|G|Gr} list groups/Group Users/Resource Group Users \da[+] [name] list aggregates, + for additional fields \dd [object] list comment for object \df[+] [name] list functions, + for additional fields \dl[+] [name] list libraries, + for additional fields \do list operators \dT list data types \e [file] edit the current query buffer or [file] with external editor \echo <text> write text to stdout \f <sep> change field separator \g [file] send query to backend (and results in [file] or |pipe) \h [cmd] help on syntax of sql commands, * for all commands \H toggle HTML mode (currently off) \i <file> read and execute queries from <file> \l list all databases \o [file] send all query results to [file], or |pipe \p show the content of the current query buffer \pset <opt> set table output <opt> = {format|border|expanded|fieldsep| null|recordsep|tuples_only|title|tableattr|pager} \q quit nzsql \qecho <text> write text to query output stream (see \o) \r reset (clear) the query buffer \s [file] print history or save it in [file] \set <var> <value> set internal variable \t show only rows (currently off) \time print time taken by queries \T <tags> HTML table tags \unset <var> unset (delete) internal variable \w <file> write current query buffer to a <file> \x toggle expanded output (currently off) \! [cmd] shell escape or command
比如我可以使用\l来查看里面存储了多少数据库
SYSTEM(ADMIN)=> \l List of databases DATABASE | OWNER -----------+---------- INZA | ADMIN LABDB | LABADMIN MASTER_DB | ADMIN NZA | ADMIN NZM | ADMIN NZR | ADMIN SYSTEM | ADMIN (7 rows)如果想连接其他数据库,比如我想连接INZA库,那么可以进行如下操作,\q退出,然后
nzsql -d database -u user -pw password
也就是添加连接数据库的参数,连接上之后使用\dt来查看这个数据库里面有多少表。
SYSTEM(ADMIN)=> \q [nz@netezza ~]$ nzsql -d inza -u admin -pw password Welcome to nzsql, the Netezza SQL interactive terminal. Type: \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit INZA(ADMIN)=> \dt List of relations Name | Type | Owner ------------------+-------+------- GEOMETRY_COLUMNS | TABLE | ADMIN POLY | TABLE | ADMIN PT | TABLE | ADMIN SPATIAL_REF_SYS | TABLE | ADMIN XZQ | TABLE | ADMIN (5 rows)
另外,我们也可以使用ODBC、JDBC、OLEDB来连接Netezza数据源。
Netezza同样也有界面化的操作工具,如果用户想着Windows操作系统来操作Netezza,安装过相关的驱动程序,推荐使用两个工具
NZAdmin:缺点是相关表不能查看表记录,如果想查看表记录需要使用Aginity的工具
Aginity:www.aginity.com下载软件即可
注意:netezza没有在线帮助文档,如果需要学习,可能直接向软件提供商索取相关资料
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------