显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL research

公益是一辈子的事, I'm 德哥@Digoal, Just Do it!

 
 
 
 
 
 

[置顶] PostgreSQL 9.5 新特性汇总

2015-4-19 4:16:12 阅读102 评论0 192015/04 Apr19

PostgreSQL 9.5还未发布,以下是已经commit的特性,也就是说PostgreSQL 9.5 release时肯定会包含的特性。

如需了解最新信息,请参考:

https://commitfest.postgresql.org/

http://git.postgresql.org/gitweb/?p=postgresql.git;a=summary

下面是一些 9.5 的新特性讲解和测试:

PostgreSQL 9.5 new feature - BRIN (block range index) index

http://blog.163.com/digoal@126/blog/static/163877040201531931956500/

PostgreSQL 9.5 new feature - pg_rewind fast sync Split Brain Primary & Standby

作者  | 2015-4-19 4:16:12 | 阅读(102) |评论(0) | 阅读全文>>

为了让跟多的朋友了解PostgreSQL, 我将这些年对PG的使用和研究做成了一些体系的培训视频和一些专题视频.(免费观看和下载)

希望通过这些视频帮到一些朋友, 同时对视频中的错误点烦请读者指出以更正, 谢谢.

目前在更新的视频是<PostgreSQL 数据库管理 5天>和<PostgreSQL 性能优化 3天>.

在线观看地址 :

http://www.tudou.com/home/digoal/

培训视频源文件以及文档下载地址 : 

http://pan.baidu.com/share/home?uk=1982970774#category/type=0

转载请注明出处.

针对一些网友的反馈, 重新设计的培训内容如下, 由浅入深, 适合不同的人群. 包含

<PostgreSQL发展历程,社区介绍,资源介绍 2小时>

<PostgreSQL SQL基础 2天>

<PostgreSQL 数据库管理 3天>

<PostgreSQL 数据库备份与恢复, 数据复制, 负载均衡与高可用 3天>

作者  | 2014-2-22 10:19:30 | 阅读(7106) |评论(47) | 阅读全文>>

[置顶] 给PostgreSQL爱好者的参考资料

2011-8-21 8:32:39 阅读51605 评论22 212011/08 Aug21

推荐书籍:

概念书籍:

《PostgreSQL Introduction and Concepts》

开发书籍:

《PostgreSQL开发必备参考手册》

管理类书籍:

《PostgreSQL 9 Administration Cookbook》

《PostgreSQL 9.0 High Performance》

《PostgreSQL Server Programming》

《How PostgreSQL Processes a Query》

了解内核 :

http://www.postgresql.org/developer/backend/

http://wiki.postgresql.org/wiki/Backend_flowchart

《数据库查询优化器的艺术:原理解析与SQL性能优化》 - 海翔老师

《 PostgreSQL 内核分析》 - 彭老师

官方手册:

作者  | 2011-8-21 8:32:39 | 阅读(51605) |评论(22) | 阅读全文>>

[置顶] 佛说摩诃般若波罗蜜多心经

2013-7-26 18:04:09 阅读3401 评论4 262013/07 July26

转载自<菩提树下>

http://www.djier.com

般若波罗蜜多心经

观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,度一切苦厄。

舍利子,色不异空,空不异色,色即是空,空即是色,受想行识,亦复如是。

舍利子,是诸法空相,不生不灭,不垢不净,不增不减。

是故空中无色,无受想行识,无眼耳鼻舌身意,无色声香味触法,无眼界,乃至无意识界。

无无明,亦无无明尽,乃至无老死,亦无老死尽。

无苦集灭道,无智亦无得。

以无所得故,菩提萨埵,依般若波罗蜜多故,心无挂碍,无挂碍故,无有恐怖,远离颠倒梦想,究竟涅磐。

三世诸佛,依般若波罗蜜多故,得阿耨多罗三藐三菩提。

故知般若波罗蜜多,是大神咒,是大明咒,是无上咒,是无等等咒,能除一切苦,真实不虚。

故说般若波罗蜜多咒,即说咒曰:

揭谛揭谛 波罗揭谛 波罗僧揭谛 菩提萨婆诃。

作者  | 2013-7-26 18:04:09 | 阅读(3401) |评论(4) | 阅读全文>>

trimmed_aggregates - cut lowest & highest data then statistic

2015-4-27 11:16:06 阅读9 评论0 272015/04 Apr27

trimmed_aggregates 是一个比较有意思的聚合插件,主要用于统计学的一些统计函数,这些统计函数在PostgreSQL的手册中可以查到,例如求平均数,方差,标准差,那么既然PostgreSQL已经有这些函数了,trimmed_aggregates是干啥的呢?

trimmed_aggregates是在求方差,标准差,平均数前先将最低和最高值去掉然后计算,这样做的好处是排除一些可能存在的干扰值,例如因为测量失误造成的干扰。

当然我们也可以通过SQL实现同样的功能,只是性能没有trimmed_aggregates好。

使用举例

SELECT avg_trimmed(i, 0.1, 0.1) FROM generate_series(1,1000) s(i);

means 10% of the values will be removed on both ends, and the average will be computed using the middle 80%. On the other hand this

SELECT avg_trimmed(i, 0.2, 0.1) FROM generate_series(1,1000) s(i);

means 20% of the lowest and 10% of the highest values will be removed, so the average will be computed using the remaining 70% of values.

作者  | 2015-4-27 11:16:06 | 阅读(9) |评论(0) | 阅读全文>>

geoip - Geolocation using GeoIP

2015-4-27 10:56:22 阅读9 评论0 272015/04 Apr27

geoip是使用IP地址查询地理位置的一个插件,提供了以下几个查询函数。

geoip_country_code(inet) - returns country code (2 chars)

geoip_country(inet) - returns all country info (code, name, ...)

geoip_city_location(inet) - returns just location ID (INT)

geoip_city(inet) - returns all the city info (GPS, ZIP code, ...)

geoip_asn(inet) - retusn ASN name and IP range

这个插件需要用到IP地址库,地址库可以到 www.maxmind.com下载。

安装

wget http://api.pgxn.org/dist/geoip/0.2.3/geoip-0.2.3.zip

unzip geoip-0.2.3.zip

export PATH=/opt/pgsql/bin:$PATH

cd geoip-0.2.3

gmake clean; gmake; gmake install

psql

=# create extension geoip;

导入地址库:

作者  | 2015-4-27 10:56:22 | 阅读(9) |评论(0) | 阅读全文>>

disable user execute delete query without where condition

2015-4-24 22:14:20 阅读25 评论0 242015/04 Apr24

当我们有一个这样的需求时,如何来实现?

例如不允许某些用户执行不带where条件的DELETE语句。

这个可以通过语句级触发器实现, 例如:

create table test2(id int);

insert into test2 select generate_series(1,100);

CREATE OR REPLACE FUNCTION public.tg1()

RETURNS trigger

LANGUAGE plpgsql

STRICT

AS $function$

declare

v_sql text;

v_users text := TG_ARGV[0];

begin

if regexp_split_to_array(v_users, ',') @> array[CURRENT_USER::text] then

select query into v_sql from pg_stat_activity where pid=pg_backend_pid();

if (TG_OP = 'DELETE' and v_sql !~* ' where ') then

raise notice '% ', v_sql;

raise exception 'you can not execute delete without where condition!';

作者  | 2015-4-24 22:14:20 | 阅读(25) |评论(0) | 阅读全文>>

一位网友问我的一个问题,使用plproxy将数据库拆分后,如果有两个表一个在A库一个在B库,能不能创建他们之间的外键关联关系。

显然,目前是不行的,为什么呢?创建外键关系后,如果被关联表的值删除或变更,是可能影响关联表的关联关系的,所以这两者必须在同一个数据库,或者它们之间务必要能方便的维护这种关系,例如数据库可以自动的实行for update, for delete这样的操作。

假设我关联的表在另一个数据库,那么另一个数据库必须要能方便的自动实行for update,for delete这样的关系,这在目前的PostgreSQL是无法实现的。除非你自己去添加这部分代码。

我们举个例子,例如我创建一个跨库的外部表,然后在本地创建基于这个外部表的关联表,看看是否可行?

根据前面的知识了解,如果要建立这样的关联关系,那么外部表所在的数据库必须要能方便的操作本地的数据库对应的这个关联表,显然这个目前PostgreSQL没有实现这一的功能。

postgres@db-172-16-3-150-> psql

psql (9.4.1)

Type "help" for help.

外部表

postgres=# \det

List of foreign tables

Schema | Table | Server

--------+-------+--------

rmt    | ft1   | rmt

作者  | 2015-4-22 9:28:17 | 阅读(16) |评论(0) | 阅读全文>>

Wolfram Alpha 一个"事实搜索引擎"

2015-4-22 9:15:37 阅读22 评论0 222015/04 Apr22

一个强大的事实搜索引擎,用过才知道,好像要翻一下qiang。

例如搜索一个法国25岁男人的剩余寿命,会给你一份详细的报告,以及概率分布。

更多搜索参考wolfram的example

介绍摘自维基百科。

http://zh.wikipedia.org/zh-cn/Wolfram_Alpha

Wolfram Alpha(也写作“Wolfram|Alpha”,缩写W|A),是由Wolfram Research公司推出的一款在线自动问答系统。Wolfram Alpha这一款自动问答系统的特色是可以直接向用户返回答案,而不是像其它搜索引擎一样提供一系列可能含有用户所需答案的相关网页。[4]Wolfram Research公司的总裁斯蒂芬·沃尔夫勒姆于2009年3月宣布了此项计划。该产品于2009年5月15日正式发布。

作者  | 2015-4-22 9:15:37 | 阅读(22) |评论(0) | 阅读全文>>

use md5 or hashtext?

2015-4-21 9:47:48 阅读88 评论1 212015/04 Apr21

我们在PostgreSQL中存储较长的字符串时,如果数据量较大,并且要实现精确匹配的话,有什么好的方法呢?

首选想到的是索引,但是当字符串太长,超出索引长度限制(见src/backend/access/common/indextuple.c,长度限制为INDEX_SIZE_MASK),是无法创建索引的。另外,字符串的索引效率也比较低下。

那么有其他方法吗?

我们可以将字符串转换为更短的字符或数字,例如md5, hashtext.

这些转换不一定是一一对应的,所以在查询出来之后,还需要使用字符串进行最终的过滤。

例如:

postgres=# create table t2 (info text);

postgres=# insert into t2 values (repeat(md5(random()::text),100000));

INSERT 0 1

postgres=# create index idx_test on t2(info);

ERROR:  54000: index row requires 36688 bytes, maximum size is 8191

LOCATION:  index_form_tuple, indextuple.c:174

postgres=# select hashtext(info),md5(info) from t2;

hashtext

作者  | 2015-4-21 9:47:48 | 阅读(88) |评论(1) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 

浙江省 杭州市 狮子座

 发消息  写留言

 
Free PostgreSQL Support.
 
QQ276732431
E-Mail digoal@126.com
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

日志分类

 
 
日志分类列表加载中...
 
 
 
 
 

FlagCounter

 
 
模块内容加载中...
 
 
 
 
 

新浪微博

 
 
模块内容加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2015

下载LOFTER客户端

汇聚2000万达人的兴趣社区
下载即送20张免费照片冲印

创建博客 登录  
 加关注