使用PostgreSQL 9.0,我有一个名为"staff"的组角色,并希望在特定模式的表上授予此角色所有(或某些)特权.以下工作均不适用
GRANT ALL ON SCHEMA foo TO staff;
GRANT ALL ON DATABASE mydb TO staff;
Run Code Online (Sandbox Code Playgroud)
除非我在该特定表上授予所有表,否则 "staff"的成员仍然无法对模式"foo"中的各个表或(在第二个命令的情况下)对数据库中的任何表进行SELECT或UPDATE .
我能做些什么让我和我的用户的生活更轻松?
更新:借助serverfault.com上的类似问题计算出来.
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo TO staff;
Run Code Online (Sandbox Code Playgroud) 列出ENUM类型的建议查询很棒.但是,它只列出了schema和typname.如何列出实际的ENUM值?例如,在上面的链接答案中,我希望得到以下结果
schema type values
------------- -------- -------
communication channels 'text_message','email','phone_call','broadcast'
Run Code Online (Sandbox Code Playgroud) 我有一个像pg这样的表:
CREATE TABLE t (
a BIGSERIAL NOT NULL, -- 8 b
b SMALLINT, -- 2 b
c SMALLINT, -- 2 b
d REAL, -- 4 b
e REAL, -- 4 b
f REAL, -- 4 b
g INTEGER, -- 4 b
h REAL, -- 4 b
i REAL, -- 4 b
j SMALLINT, -- 2 b
k INTEGER, -- 4 b
l INTEGER, -- 4 b
m REAL, -- 4 b
CONSTRAINT a_pkey PRIMARY KEY (a)
);
Run Code Online (Sandbox Code Playgroud)
以上每行最多可添加50个字节.我的经验是,我需要另外40%到50%的系统开销,甚至没有任何用户创建的索引.所以,每行约75个字节.我将在表中有许多行,可能超过1450亿行,因此该表将推动13-14太字节.我可以使用什么技巧来压缩这个表?我的可能想法如下......
将 …
Pg查询返回一个数组.我想检索每个元素格式化为3位小数.如何将函数应用于数组的每个元素?像下面的东西(显然是错的) -
SELECT Round(ARRAY[1.53224,0.23411234], 2);
{1.532, 0.234}
Run Code Online (Sandbox Code Playgroud)
我想我正在寻找像Perl这样的map功能.
我意识到,根据Pg文档(http://www.postgresql.org/about/),可以在表中存储无限数量的行.但是,如果有的话,可用行数的"经验法则"是什么?
背景:我想为1300万个细胞存储几十年的每日读数.这可以达到13 M*(366 | 365)*20~9.5e10,或95 B行(实际上,大约120 B行).
因此,使用表分区,我设置了一个主表,然后按年继承表.将行分为每个表约5.2 B行.
每行是9个SMALLINT,两个INT,因此,26个字节.除此之外,每行23字节的Pg开销,每行得49个字节.因此,每张表,没有任何PK或任何其他索引,将在~0.25 TB的重量.
对于初学者,我只创建了上述数据的一部分,即只有大约250,000个单元格.我必须做一堆调整(创建适当的索引等),但现在的性能真的很糟糕.此外,每次我需要添加更多数据时,我都必须删除密钥并重新创建它们.保存的优点是,一旦加载了所有内容,它将是一个只读数据库.
有什么建议?任何其他分区策略?
我一直在将MySQL数据库迁移到Pg(9.1),并且已经通过在Pg中创建新数据类型来模拟MySQL ENUM数据类型,然后将其用作列定义.我的问题 - 我可以使用CHECK CONSTRAINT而且会更好吗?实现MySQL ENUM类型以强制行中的特定值条目.可以用CHECK CONSTRAINT完成吗?如果是,它会更好(或更糟)吗?
考虑
CREATE TABLE foo (
id SERIAL,
foo_created_on ABSTIME,
foo_deactivated_on ABSTIME,
PRIMARY KEY (id, foo_created_on)
);
CREATE TABLE bar (
id SERIAL,
bar_created_on ABSTIME,
bar_deactivated_on ABSTIME,
foo_id REFERENCES ( .. what goes here? ..),
PRIMARY KEY (id, bar_created_on)
);
Run Code Online (Sandbox Code Playgroud)
如何在"bar"中创建引用"foo"中的PK的FK?
jQuery UI自动完成的一个潜在的简单问题是让我感到困惑.我的来源是
var ac = [
{
label: "One Thing",
value: "One-Thing"
},
{
label: "Two Thing",
value: "Two-Thing"
},
]
Run Code Online (Sandbox Code Playgroud)
我正在调用小部件
$(function() {
$( "#search" ).autocomplete({
source: PK.getAutocompleteSource(),
focus: function( event, ui ) {
$("#search").val(ui.item.label);
return false;
},
select: function( event, ui ) {
$("#search").val(ui.item.label);
PK.render(ui.item.value);
}
});
});
Run Code Online (Sandbox Code Playgroud)
一切正常.当我#search输入输入字段时,匹配标签会显示在下拉列表中,当我select执行正确的搜索时.当我使用箭头键(或鼠标)在下拉列表中选择不同的项目时,小部件甚至会label在#search输入字段中显示.除了,当我按下Enter键时,小部件#search用value而不是填充输入字段label.所以这个领域显示的是One-Thing而不是One Thing.
我怎么能纠正这个?当然,我期待的是更合理的行为,不是吗?
我想在Postgres中存储每个记录7个8位整数值.Pg不提供单字节整数类型,SMALLINT或2字节,是最小的整数数据类型.无论如何我可以存储我的7个8位数字并节省空间吗?
具有7个元素数组的数组类型是否更紧凑?或者,我应该对我的7个数字进行二进制表示(例如,在Perl中使用pack)并将其存储在单个bytea字段中吗?
还有其他建议吗?
我有一个相当复杂的形式,其中有许多"步骤",由用户填写.某些步骤(将它们视为表单段)具有默认选项,但在单击"输入自定义值"时,它们会显示一个隐藏的字段集,用户可以在其中输入信息.这是一个示例
<div id="#s1_normal">
<input type="radio" name="mode" value="a"> Mode A
<input type="radio" name="mode" value="b"> Mode B
Choose one of the above for applying average coefficient
values of "a" or "b" to 100% of your product or
<a href="#" onclick="toggleCustom('s1');">enter custom values</a>
</div>
<div id="#s1_custom">
%a: <input type="text" name="perc_a"> coeff. a <input type="text" name="coeff_a">
%b: <input type="text" name="perc_b"> coeff. b <input type="text" name="coeff_b">
Enter custom values above or
<a href="#" onclick="toggleCustom('s1');">choose average values</a>
Run Code Online (Sandbox Code Playgroud)
有几个这样的段,例如,#s1 ..#s7.这是我的任务.我想让用户保存表单的状态.因此,一旦用户填写了整个表单,选择某些段的平均默认值,并为其他段输入自定义值,用户就可以单击一个按钮并保存整个状态以便稍后解冻.我在想,如果我可以将状态保存在我可以序列化的对象中,我可以将它保存在db表或其他持久存储中.
用户可以稍后返回并重新构建整个上一个会话.
我该怎么做呢?有getAttributes插件http://plugins.jquery.com/project/getAttributes,并且有jQuery serialize方法,但我不能为我的生活开始.请朝正确的方向推动我.
postgresql ×8
arrays ×1
bigdata ×1
forms ×1
grant ×1
jquery ×1
privileges ×1
roles ×1
storage ×1