小编Zer*_*uno的帖子

在 PostgreSQL 中创建内存表?

我对内存表的理解是将在内存中创建的表,并且尽可能少地使用磁盘(如果有的话)。我假设我有足够的 RAM 来容纳该表,或者至少是大部分。我不想使用显式函数将表(如 pg_prewarm)加载到内存中,我只想在发出 aCREATE TABLE或时默认情况下表就在那里CREATE TABLE AS select statement,除非内存已满或除非我另有说明。我并不特别关心记录到磁盘。

7年前,有人在这里问过类似的问题PostgreSQL相当于MySQL内存表吗?。它已收到 2 个答复,其中一个有点晚了(4 年后)。

一个答案是创建一个 RAM 磁盘并为其添加一个表空间。或者使用 UNLOGGED 表。或者等待全局临时表。然而,我没有特殊的硬件,我只有普通的 RAM - 所以我不知道如何去做。我可以使用 UNLOGGED 功能,但据我了解,仍然涉及相当多的磁盘交互(这是我试图减少的),并且我不确定表是否会默认加载到内存中。此外,我不明白全局临时空间是如何相关的。我对它们的理解是它们只是可以共享的空间中的桌子。

另一个答案建议使用内存列存储引擎。然后使用函数将所有内容加载到内存中。我对这种方法的问题是,所提到的引擎看起来很旧并且没有维护,我找不到任何其他引擎。另外,我希望我不必明确地诉诸使用“加载到内存”功能,而是默认情况下一切都会发生。

我只是想知道 7 年后如何在 Postgres 12 中获取内存表。

postgresql in-memory in-memory-database postgresql-12

14
推荐指数
1
解决办法
2万
查看次数

具有内部消息队列的前置REST API?

我创建了一个REST API - 简而言之,我的客户端点击了一个特定的URL,然后她获得了一个JSON响应.

在内部,当URL被命中时,相当复杂的过程开始,并且在使用微服务架构时涉及各种服务.

我正在观察一些性能瓶颈,并决定切换到消息队列系统.现在的想法是,一旦用户点击URL,就会在内部消息队列上发布请求,等待它被消费.此消费者将处理并发布回队列,这将发生很多次,直到最后,为用户提供服务的同一节点将收到要传递给用户的已处理响应.

现在正在使用异步"即发即忘"模式.但我的问题是,一旦处理结果返回并且没有阻塞(即它可以处理多个请求直到收到响应),为特定人员服务的节点如何能够记住它正在服务的对象?如果它有任何区别,我的堆栈看起来有点像:TomCat,Spring,Kubernetes和RabbitMQ.

总之,请求节点(其作业是推送队列中的项目)如何与请求JSON响应的客户端保持开放连接(即客户端正在等待JSON响应)并接收正确客户端的数据?

rest spring tomcat rabbitmq kubernetes

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

Kubernetes Pod 以及共享内存和状态

我是 Kubernetes 新手,所以如果这是一个基本问题,我很抱歉 - 我正在努力很好地理解这项令人惊叹的技术。

假设我在 pod 上进行一些处理,并且有一些变量和数组。现在我的负载很重,并且将分配/复制一个新的 pod - 现在我有 2 个 pod 而不是 1 个来处理我的负载。第二个 Pod 的内存会发生什么情况?pod 2 是否使用相同的内存内容进行复制?内存会被共享吗?如果我的微服务之间存在一些通信,需要内存保持一致,换句话说,存在一些变量依赖性,那么使用新内存复制 pod 是灾难性的。为了澄清起见,我们假设一个 pod 上有一个键值映射。复制一个 pod,然后我们有两个键值映射(一个在 pod1 上,另一个在 pod2 上)。但我们想要一个键、值映射,其中包含这两个 pod 之间共有的所有数据 - 跨复制 pod 的共享键、值映射 - 而不是两个独立的键、值映射。

当然,我认为一个解决方案是拥有一个共享的中央数据库以供参考。但对于我们只想共享包含数百个元素的数组的情况来说,这是一个巨大的开销!Kubernetes 解决这个问题的方法是什么?

kubernetes google-kubernetes-engine

10
推荐指数
1
解决办法
2万
查看次数

整数和布尔值之间的相关性(熊猫)?

我的数据格式如下:

price | bool_qual_1 | bool_qual_2 | bool_qual_3
13000 |        True |        True |        True
20000 |       False |        True |        True
15000 |        True |        True |       False
13000 |       False |       False |       False
15000 |        True |        True |        True
Run Code Online (Sandbox Code Playgroud)

换句话说,我的price属性有 3 个布尔性质。

我如何找到我price和我的每一个品质之间的相关性?

我知道 df.corr() 使用皮尔逊相关性,但这个值在整数和布尔值之间有意义吗?

python statistics correlation pandas

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

Python / Plotly 甘特图:用于指示时间线中当前日期的标记?

在项目管理中,甘特图可让您在时间线上查看项目的组件,例如在Plotly 中。在 Python 上下文中,如何最好在此图形上有一条线来指示该时间线中的当前日期,即今天的日期?在 Plotly 上下文中,有些形状可以将细线绘制为形状,但我无法将其应用于时间序列/甘特图,并且在视觉上似乎缺乏,因为它没有超出图形空间(即它不跨越轴)并且没有标签......

python visualization gantt-chart plotly

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

PostgreSQL 12 CTE 物化选项何时提供优化优势?

编辑:我已将这个问题移至 ,因为dba.stackexchange我收到了建议,认为该社区可以更好地解决我的问题。

我一直在阅读有关 PostgreSQL 的新 CTE 功能 - MATERIALIZED 或 NOT MATERIALIZED 关键字 - 它可以在某些情况下提供额外的优化机会,前提是这样做是安全的。对此PostgreSQL 更新的评论如下:

...用户可以通过指定 MATERIALIZED 强制旧行为 [LESS OPTIMIZED];当查询故意使用WITH作为优化栅栏以防止计划选择不当时,这主要有用。

我一直想知道,考虑到在某种情况下使用 CTE 优化(不是 MATERIALIZED 关键字)是安全的,在这种情况下,优化程度较低的“MATERIALIZED”关键字可以“防止错误的计划选择”,如引用所述或提供更好的计划?

postgresql common-table-expression postgresql-12

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

如何使用OpenSSL生成SHARSA1 base64签名

我已经使用 OpenSSL 生成了公钥/私钥对。我现在想使用私钥通过 OpenSSL 签署我的消息,并且我想留在 bash 环境中。我需要使用 SHA-RSA1。

到目前为止,有人建议我使用以下代码,但我对此不满意:

 openssl.exe dgst -sha1 -sign C:\...\path\to\key\privatekey.pem -binary C:\...\path\to\message\message.txt
Run Code Online (Sandbox Code Playgroud)

我不想将我的消息存储在文件 (message.txt) 中来生成签名,并且在任何情况下,我都需要openssl base64随后使用它来获取 Base64 表示形式。

有没有更合适的方法来实现我想要的(并且一个衬垫会很棒)?

bash openssl sha1 rsa

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

使用 format() 多次使用相同参数的动态查询

我有一个过程,它将表名称的后缀作为输入。然后,使用execute format(),我传递此参数来执行动态查询。问题是这个参数始终是相同的 - 我不想像这样传递它 x 次:

execute format('SELECT table_%s.field1, table_%s.field2,table_%s.field3
FROM table_%s', inTableSuffix, inTableSuffix, inTableSuffix, inTableSuffix, ...) 
Run Code Online (Sandbox Code Playgroud)

我想要类似于以下的格式:

execute format('SELECT table_%s.field1, table_%s.field2,table_%s.field3
FROM table_%s', inTableSuffix) 
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用表名的别名来解决这个问题,但是还有其他选择吗?

sql database postgresql dynamic-sql plpgsql

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

日期和整数之间的相关性(熊猫)?时间序列

假设我的数据格式为

date       | price
2017-09-09 | 13000
2017-09-08 | 20000
2017-09-07 | 15000
2017-09-06 | 13000
2017-09-05 | 15000
Run Code Online (Sandbox Code Playgroud)

如何找到价格和时间之间的相关性?df.corr() 忽略日期列。

python statistics time-series pandas

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

PostgreSQL 通过 RAMdisk 进行基准测试?

我考虑迁移到 RAMdisk 的想法已经有一段时间了。我知道它的风险,但只是想做一点基准测试。我只有两个问题:(a)在读取查询计划时,它仍然会区分磁盘和缓冲区命中吗?如果是这样,我应该假设两者同样昂贵还是应该假设它们之间存在差异?(b) RAM 磁盘不是持久性的,但如果我想将一些结果导出到持久性存储,需要采取一些预防措施吗?它与通常的 COPY 命令相同吗?

postgresql main-memory-database postgresql-copy postgresql-12

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

java 转换:MultivalueMap<String,String> 到 Map<String,String[]>

我正在使用 Java 和 Spring。

我正在获得一个MultiValueMap<String,String>. 这对我很有帮助,因为我可以为 each 存储多个值key。但是我正在使用的库需要一种类型Map<String,String[]>。更具体地说,我正在使用ParameterMap. 我如何执行这样的转换?

java spring

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

使用少量 Java 线程处理大量传统同步/阻塞 HTTP 客户端请求?

我正在使用 Java。另一位软件开发人员向我提供了他的执行同步 HTTP 调用的代码并负责维护它 - 他正在使用com.google.api.client.http. 更新他的代码以使用带有回调的异步 HTTP 客户端不是一个可用的选项,我无法联系开发人员对其进行更改。但我仍然希望将回调附加到 HTTP 请求的高效异步行为。

(我在 Spring Boot 中工作,如果有任何影响,我的系统是使用 RabbitMQ AMQP 构建的。)

简单的 HTTP GET(它实际上是一个 API 调用)执行如下:

HttpResponse<String> response = httpClient.send(request, BodyHandlers.ofString());
Run Code Online (Sandbox Code Playgroud)

我通过 HTTP 与之通信的这个服务器需要一些时间来回复......比如说 3-4 秒。所以我的执行线程在这段时间内被阻塞,等待回复。这扩展性很差,我的单线程不做只是等待回复到达 - 这非常繁重。

当然,如果我想同时发送更多 HTTP 请求,我可以添加执行此调用的线程数,即我可以以这种方式进行扩展,但这听起来效率不高或不正确。如果可能的话,在这种情况下,我真的希望获得比 1 个线程等待 1 个 HTTP 请求更好的比率。

换句话说,我想用 2-3 个可用线程发送数千个 HTTP 请求,并在响应到达后进行处理;我不想在每个请求的执行之间产生任何明显的延迟。

我想知道:我怎样才能实现更具可扩展性的解决方案?如何处理每个线程的数千个 HTTP 调用?我应该看什么,还是我别无选择而我要求的是不可能的?

编辑:我想这是表达我的问题的另一种方式。假设我现在有 1000 个请求要发送,每个请求将持续 3-4 秒,但只有 4-5 个可用的执行线程可以发送它们。我想同时发送它们,但这是不可能的;如果我设法在 0.5 秒或更短的时间内将它们全部发送并通过一些回调或类似方式处理它们的请求,我会认为这是一个很好的解决方案。但我无法切换到异步 HTTP 客户端库。

java spring multithreading asynchronous http

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