安装模块
注:我的
运行环境是Ubuntu 10.04和PostgreSQL 8.4
首先安装PostgreSQL的contrib包并重新
启动数据库
服务器,然后
检查目录是否有一些可用的模块包括:
sudo apt-get install PostgreSQL的贡献
sudo / /初始化等。D / postgresql-8.4
重启 CD / usr /
分享/ PostgreSQL / 8.4 / /
LS
然后我们
创建一个数据库,称为module_test:
苏Postgres
createdb module_test
然后我们应用模块chkpass,fuzzystrmatch,还和汇存到module_test数据库
执行以下
命令:
module_test psql D F chkpass.sql
module_test psql D F fuzzystrmatch.sql
module_test psql D F isn.sql
module_test psql D F hstore.sql
接下来,让我们看看每个模块是如何使用的。
使用chkpass
的chkpass模块
介绍了一种新的数据
类型,chkpass型,主要用于存储加密领域,如
密码,使用
方法,你可以看到下面的SQL,存储在chkpass字段的字符串将被自动加密:
创建表的
账户(
用户名,密码chkpass varchar(100));
插入账户(
用户名,密码)值('user1 ','pass1);
插入账户(用户名,密码)值('user2 ','pass2);
然后,我们可以用以下SQL进行身份验证:
select count(*)的账户,用户名密码= = 'user1'and 'pass1
=
运算符使用EQ(column_name、
文本)的方法,以测试是否相等chkpass模块提供。Chkpass用地穴()
函数UNIX,所以加密效果相对较弱。该函数只加密字符串的前8位,只要8个相同的字符串被认为是相等的。因此,这是不
推荐的chkpass模块可用于实际生产环境,和pgcrypto模块推荐。
使用fuzzystrmatch
提供的
功能模块包括:soundx()(),()Levenshtein()的差异,并和(),Soundx()和()和语音算法,把一个文本字符串为一个基于语音编码的字符串。差()和Levenshtein()返回表示两个
输入字符串的值之间的相似性。
让我们在
编辑一看()和语音()函数:
选择Levenshtein('foodlets ','booklets);
显然,该
查询返回2。
metaphone()函数需要两个
参数,一个是文本字符串,而另一个是输出代码的最大长度:
选择和('foodlets ',6);
选择和('fudlets ',6);
如果你试图把两个字符串的编辑距离,则返回0:
选择Levenshtein('ftlts ','ftlts);
这意味着这两个字符串的发音相似。
Fuzzystrmatch是非常有用的
搜索功能的
网站,它可以用来实现拼写检查和校正误差的关键,这就相当于你在抛媚眼。
使用的是
该模块提供了数据类型存储国际标准,如国际标准书号(ISBN),国际标准的
音乐数量(ISMN)、国际ISMN,书号,等等。同时,检查等功能,提供了类型
转换函数。
让我们测试图书信息的存储:
创建表的书(编号ISBN13码,标题varchar(100))
插入到图书中(数字
INSERT语句将执行一个
错误因为输入字符串是不是一个有效的ISBN号,和下面的语句可以
正确执行。
插入到图书中(数字
如果你想把一个10位的编号为13位,你可以用ISBN13码()函数:
插入到图书中(数字
用汇存
你一定听说过很多关于NoSQL数据库和
核心价值。用汇存模块可以使PostgreSQL有关键值存储功能。
想象一下你在
处理一种形式。你不知道的
名字和格力柱型,与汇存可以
解决你的问题。汇存以键值作为文本存储的值可以为零,但关键不允许。
让我们创建一个表使用汇存式和插入一些数据表:
创建表kv_data(ID的整数,数据汇存)
插入kv_data值
(1,汇存('name','amit)| |汇存('城市','bangalore ')),
(2,汇存('name','raghu)| |汇存(年龄,12'26)),
(3,汇存('name','ram)| |汇存(时代','28'));
你可以创建你自己的钥匙,如身高,favourite_book等等,和| |算子的串并联
操作。
现在我们有了一张表和少量的测试数据。接下来,我们将了解如何进行查询、更改和
删除操作。假设我们想为班加罗尔市的数据查询,我们可以使用下面的SQL语句。
SELECT * FROM kv_data数据-> '城市' = 'bangalore
为了得到表中的平均年龄,可以使用以下语句:
选择AVG((数据->时代)::整数)的年龄从kv_data;
这里::整数用于将文本数据转换成整数,这样就可以使用数学函数。
按名称
排序,方法是:
SELECT * FROM kv_data订单数据-> 'name'desc
把所有城市都改成德令哈市:
更新kv_data集数据=数据('城市' = 'delhi)| |;
然后删除年龄键:
更新kv_data集数据=删除(数据时代)
或删除记录叫Amit:
删除从kv_data数据-> 'name' = 'amit
虽然这不是一个真正的键值存储服务器,汇存提供了足够的灵活性,做一个NoSQL数据库。
其他有用的模块
这里有几个模块,您可以使用:
pgcrypto提供哈希和加密功能
支持的算法如MD5,SHA,河豚、AES等
citext增加了区分大小写的文本数据类型和数据存储在小写的存储
Uuid ossp提供了一个全局唯一标识符的功能
pg_trgm增加基于trigram匹配字符串的查找功能