小编Mât*_*man的帖子

Postgresql json在嵌套有效载荷上查询9.3+

使用postgresql 9.3(以及新的json awesomne​​ss)如果我有一个名为'races'的简单表,其中包含两列描述,例如:

race-id integer,
race-data json
Run Code Online (Sandbox Code Playgroud)

而json是每个种族的有效载荷之类的东西

{      "race-time": some-date,
  "runners": [ { "name": "fred","age": 30, "position": 1 },
               { "name": "john","age": 29, "position": 3 },
               { "name": "sam","age": 31, "position": 2 } ],
  "prize-money": 200    }
Run Code Online (Sandbox Code Playgroud)

如何查询表格:

1)第一场比赛的比赛

2)山姆赛季排名第一,约翰排名第二

3)年龄大于30岁的跑步者数> 5且奖金> 5000

到目前为止,我的实验(特别是在查询嵌套数组有效负载时)导致数据进一步规范化,即创建一个名为runners的表来进行此类查询.理想情况下,我想使用这个新的fangled json查询真棒,但我似乎无法在3个简单查询中分别对应它.

postgresql json psql postgresql-9.3

9
推荐指数
1
解决办法
4441
查看次数

使用json列的Postgresql偏移行为

使用postgresql 9.4我们有一个简单的联系人表(id文本不为null(作为pk),blob json)来试验移植couchdb crm数据库.我们最终将拆分为更多的列等,并为rdbms更自觉地处理数据,但这是暂时的.

大约有100k行.

我知道硬核postgresql性能专家建议不要使用偏移但是我可以接受一个小的性能惩罚(对100毫秒以下的任何东西都满意)

SELECT id FROM couchcontacts OFFSET 10000 LIMIT 10 
Run Code Online (Sandbox Code Playgroud)

如预期的那样需要<10ms

SELECT blob->>'firstName' FROM couchcontacts LIMIT 10 
Run Code Online (Sandbox Code Playgroud)

也需要<10ms(在这里假设blob列上有10个json解码操作)

SELECT blob->>'firstName' FROM couchcontacts OFFSET 10000 LIMIT 10 
Run Code Online (Sandbox Code Playgroud)

需要10秒钟!忽略偏移的低效率为什么这可能导致10,010个json解码操作?由于投影没有副作用,我不明白这不能快的原因?

这是json功能的限制对postgres来说相对较新吗?因此无法确定操作者->>不会产生副作用?

有趣的是将查询重写为10毫秒以下

SELECT jsonblob->>'firstName' FROM couchdbcontacts WHERE id IN (SELECT id FROM couchcontacts OFFSET 10000 LIMIT 10)
Run Code Online (Sandbox Code Playgroud)

有没有办法确保偏移不json解码偏移的记录?(即不执行选择投影)

"Limit  (cost=1680.31..1681.99 rows=10 width=32) (actual time=12634.674..12634.842 rows=10 loops=1)"
"  ->  Seq Scan on couchcontacts  (cost=0.00..17186.53 rows=102282 width=32) (actual time=0.088..12629.401 rows=10010 loops=1)"
"Planning time: 0.194 ms"
"Execution time: 12634.895 ms"
Run Code Online (Sandbox Code Playgroud)

postgresql

6
推荐指数
1
解决办法
758
查看次数

BigQuery - 修改计划查询

我创建了一个每小时运行一次的查询并转储到 bigquery 表。这工作正常。但是,我无法从用户界面中看到如何手动触发此查询或编辑计划。单击“计划查询”将进入用于创建新计划查询的向导。BigQuery 网页界面中是否提供此功能?

google-bigquery

6
推荐指数
1
解决办法
7642
查看次数

C教程 - 想知道`int i =*(int*)&s;`

通过C教程学习

#include <stdio.h>

int main() {
  short s = 10;
  int i = *(int *)&s; // wonder about this
  printf("%i", i);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我告诉C该地址s是一个int时,它是否应该读取4个字节?

从2字节的最左侧开始s.在这种情况下,这不是非常危险的,因为我不知道它在读什么,因为短路只分配了2个字节?

如果尝试访问我没有分配/属于我的内存,这不应该崩溃吗?

c

5
推荐指数
2
解决办法
707
查看次数

虚拟记忆和sbrk

在32位Linux系统上,进程最多可以访问4 GB的虚拟地址空间; 然而,在保留任何这些过程中,过程似乎在不同程度上是保守的.因此,使用malloc的程序偶尔会通过系统调用sbrk/brk来扩展其数据段.甚至那些页面也没有在物理内存中声明.我不完全理解的是为什么我们首先需要sbrk,为什么不给我4 GB的地址空间以避免任何sbrk调用,因为直到我们触摸/声明这些块,它本质上是一个免费的操作权?

linux virtual-memory

5
推荐指数
1
解决办法
657
查看次数

扭曲的海螺 - 流量控制

我有一个Twisted Conch SSH服务器,典型的情况是:

git通过OpenSSH客户端>> --- WAN1 --- >> Twisted conch svr >> --- WAN2 - >> Git服务器

有一段时间,'git push'通过WAN1发送数据的速度比通过WAN2代理的速度快,所以我需要告诉客户端减速(在任何TCP数据包丢失导致调整TCP窗口大小之前)以避免在Twisted服务器上缓冲太多.读取RFC for SSH这是通过不通过adj窗口来确认的,这将导致git push阻塞syscall写入openssh支持的管道.

在方法def ssh_CHANNEL_DATA(self,packet)中查看conch/ssh/connection.py:L216:我可以通过将localWindowSize设置为0来完成此操作,并且当230上的谓词仍然通过时,飞行数据仍将着陆(给localWindowLeft) .我想知道这是否是正确的方法,还是我错过了一些关于使用Twisted SSH Conch进行流量控制的盲目明显的东西?*

注意:我承认在(通道)上有一些方法用于stopWriting和startWriting,我可以覆盖,所以我有钩子来控制传输'git pull'的另一面,但我对另一方感兴趣.IPush/IPull生产商似乎也不适用于这个级别,我不知道如何在没有屠宰海螺的情况下将这些更高的抽象结合起来?

python ssh twisted

5
推荐指数
1
解决办法
461
查看次数

Redis - 默认阻塞虚拟机

阻塞虚拟机的性能总体上更好,因为在同步、线程生成和恢复阻塞的客户端等待值方面没有时间损失。因此,如果您愿意偶尔接受较高的延迟,那么阻止虚拟机可能是一个不错的选择。特别是如果交换很少发生并且大多数经常访问的数据恰好适合您的内存。

这是 Redis 的默认模式(我相信现在 VM 在 2.6 中已弃用),让操作系统来处理分页(如果/需要时)。我的理解是正确的,启动/启动时需要一些时间才能变得“热”。当在具有 16GB 数据集的 1GB RAM 节点上工作时,Redis 是否会在启动时尝试将其全部加载到虚拟内存中,从而立即调出 90% 以上,并且只有在大量使用之后,上述陈述才成立?

virtual-memory redis

1
推荐指数
1
解决办法
392
查看次数