关于Netezza,是一个数据仓库的产品,几年前被IBM收购,作为IBM在数据仓库这块与Oracle的eXdata和Teradata进行竞争。一般情况下,数据仓库应用的行业比较有限(金融、电信、烟草等),对GIS所对应的常规行业来说,一般的关系型数据库就可以搞定了,但是如果用户有海量的数据存储以及对这些海量数据进行分析,可能使用数据仓库就比较好了。
我们上述的数据仓库产品一般情况下都是一体机,所谓一体机就是直接将硬件和软件一块绑定来销售,这样操作的特点
- 好处:基本解放了DBA,关于性能、问题一般来说有提供商来做,硬件配置较高,与软件的协作性好,处理海量数据以及复杂的业务分析效果比普通关系型数据库优秀
- 缺点:价格昂贵,虽然解放了DBA,有问题可能就依赖于提供商了,服务费用应该也不少,一般情况下数据仓库尽可能的放入的只读数据,关于有大量写和修改的情况可能不是太适合。
关于数据仓库和Hadoop
自从了解了Hadoop,已经现在研究的数据仓库,我一直对这两个对象感觉有相同的地方,有共同点:
- 存储海量数据,数据量级别非常巨大
- 高效的分析处理能力
但是经过与IBM工程师的沟通,这两个还是有相关区别的
数据仓库:
- 不同产品,硬件参数以及存储是有限制的,也就是说这个量没有办法与hadoop存储的PB甚至ZB相比
- 数据仓库更擅长处理机构化数据
- 数据仓库比起hadoop的N台机器,占用地方较少
- 解放了DBA
Hadoop:
- 将大量廉价的计算机进行重新利用,共同来处理
- 可以理解为,有多少节点,就可以支持多大的存储,这个比数据仓库存储还要大
- 最大的特点是处理非结构化数据
- 可能还是需要专业的DBA来对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没有在线帮助文档,如果需要学习,可能直接向软件提供商索取相关资料
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------