小编jla*_*rcy的帖子

是否可以使用 Traefik 通过 SSL 代理 PostgreSQL?

动机

尝试使用 Let's Encrypt 通过 SSL 使用 Traefik 代理 PostgreSQL 时,我遇到了一个问题。我做了一些研究,但没有很好的记录,我想确认我的观察并给每个面临这种情况的人留下记录。

配置

我使用最新版本的 PostgreSQL v12 和 Traefik v2。我想使用 Let's Encrypt从->通过 TLS构建纯 TCP 流tcp://example.com:5432tcp://postgresql:5432

Traefik 服务配置如下:

  version: "3.6"
    
    services:
    
      traefik:
        image: traefik:latest
        restart: unless-stopped
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock:ro"
          - "./configuration/traefik.toml:/etc/traefik/traefik.toml:ro"
          - "./configuration/dynamic_conf.toml:/etc/traefik/dynamic_conf.toml"
          - "./letsencrypt/acme.json:/acme.json"
    
        networks:
          - backend
        ports:
          - "80:80"
          - "443:443"
          - "5432:5432"
    
    networks:
      backend:
        external: true
Run Code Online (Sandbox Code Playgroud)

使用静态设置:


[entryPoints]
  [entryPoints.web]
    address = ":80"
    [entryPoints.web.http]
      [entryPoints.web.http.redirections.entryPoint]
        to = "websecure"
        scheme = "https"

  [entryPoints.websecure]
    address = ":443"
    [entryPoints.websecure.http]
      [entryPoints.websecure.http.tls] …
Run Code Online (Sandbox Code Playgroud)

postgresql proxy tcp sni traefik

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

如何在插入时使用 SQLAlchemy 解析相关外键?

动机

我有来自与 Pandas DataFrame 接口的来源的数据。我有一个由 SQLAlchemy ORM 接口的数据模型。为了 MCVE,我已将数据模型规范化为两个表:

  • channel 保存有关记录的元数据(小容量,~1k 行);
  • record保持记录指向channel(更高的容量,90k 行/天)。

目的channel是避免重复。我想要的是record使用带有数据源不知道的约束的 SQLAlchemy 将数据插入到表中channelid

数据源

这是来自源的数据示例(我可以访问的唯一数据):

import pandas as pd
recs = [
    {'serial': '1618741320', 'source': 1, 'channel': 4, 'timestamp': pd.Timestamp('2019-01-01 08:35:00'), 'value': 12},
    {'serial': '1350397285', 'source': 2, 'channel': 3, 'timestamp': pd.Timestamp('2019-01-01 09:20:00'), 'value': 37},
    {'serial': '814387724', 'source': 2, 'channel': 1, 'timestamp': pd.Timestamp('2019-01-01 12:30:00'), 'value': 581},
    {'serial': '545914014', 'source': 3, 'channel': 0, 'timestamp': pd.Timestamp('2019-01-01 01:45:00'), 'value': 0},
    {'serial': …
Run Code Online (Sandbox Code Playgroud)

python orm sqlalchemy foreign-keys pandas

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

Timeserie数据库线性存储

我想将时间序列存储在MySQL数据库中.我想以线性方式进行,即每行代表一个独特的观察(1个度量,1个站点,1个时间戳).目前,它将需要84 096 000行,并且它将2 102 400逐年增长.

必须采取哪些预防措施才能正确设计时间序列表,索引和相关查询(基本上是确定度量,地点和时间范围的数据选择).

编辑:

添加表设计提议:

CREATE TABLE TimeSeries(
   Id                  INT          NOT NULL     AUTO_INCREMENT,
   MeasureTimeStamp    DATETIME     NOT NULL, 
   MeasureId           INT          NOT NULL,
   SiteId              INT          NOT NULL,
   Measure             FLOAT        NOT NULL,
   Quality             INT          NOT NULL,   
   PRIMARY KEY (Id),
   CONSTRAINT UNIQUE (MeasureTimeStamp,MeasureId,SiteId),
   FOREIGN KEY (MeasureId) REFERENCES Measure(Id),
   FOREIGN KEY (SiteId) REFERENCES Site(Id)
);
CREATE INDEX ChannelIndex ON TimeSeries(MeasureId,SiteId);
Run Code Online (Sandbox Code Playgroud)

提供了度量和站点表,如果我的主要查询是:

SELECT *
FROM TimeSeries
WHERE (MeasureId IN (?,?,?)) 
  AND (SiteId IN (?,?,?))
  AND (MeasureTimeStamp BETWEEN ? AND …
Run Code Online (Sandbox Code Playgroud)

mysql database time-series

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

如何在不改变PostgreSQL中的类型的情况下向列表添加列?

我正在使用PostgreSQL 9.5,我有一个TYPE,它描述了一组列:

CREATE TYPE datastore.record AS
   (recordid bigint,
    ...
    tags text[]);
Run Code Online (Sandbox Code Playgroud)

我在这个TYPE上创建了许多表:

CREATE TABLE datastore.events
OF datastore.record;
Run Code Online (Sandbox Code Playgroud)

现在我想在一个表中添加一个列,该表依赖于此TYPE而不更新TYPE.我认为这是不可能的,因此我想知道是否有办法从这个TYPE取消绑定我的表而不丢失任何数据或将表复制到临时表中?

postgresql

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

如何提升::序列化为sqlite :: blob?

我正在开展一项需要多项计划能力的科学项目.在浏览了可用的工具之后,我决定使用Boost库,它为我提供了C++标准库不提供的所需功能,例如日期/时间管理等.

我的项目是一组命令行,它处理来自旧的,自制的,基于文本的纯文本数据库的一堆数据:导入,转换,分析,报告.

现在我达到了我需要持久性的程度.所以我包含了我发现非常有用的boost :: serialization.我能够存储和恢复"中等"数据集(不是那么大但不是那么小),它们大约是(7000,48,15,10)-dataset.

我还使用SQLite C API来存储和管理命令默认值,输出设置和变量元信息(单位,比例,限制).

我想到了一些东西:序列化为blob字段而不是单独的文件.可能有一些我尚未见过的缺点(总是存在),但我认为它可以是一个适合我需要的好解决方案.

我能够将文本序列化为std :: string,所以我可以这样做:没有困难,因为它只使用普通字符.但我想二进制序列化为一个blob.

填写INSERT查询时,如何继续使用标准流?

c++ sqlite serialization boost blob

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

无法删除被授予连接数据库的角色

我正在使用 PostgreSQL 10.4,我发现了一个奇怪的行为。

如果我们创建一个角色并将其授予CONNECT数据库:

CREATE ROLE dummy;
GRANT CONNECT ON DATABASE test TO dummy;
Run Code Online (Sandbox Code Playgroud)

然后我们不能删除这个角色,即使它根本不拥有任何对象,这个命令:

DROP ROLE dummy;
Run Code Online (Sandbox Code Playgroud)

提高:

ERROR: role "dummy" cannot be dropped because some objects depend on it
SQL state: 2BP01
Detail: privileges for database test
Run Code Online (Sandbox Code Playgroud)

文档有点误导:

2B 类 — 依赖特权描述符仍然存在

2B000dependent_privilege_descriptors_still_exist

2BP01dependent_objects_still_exist

它说依赖对象仍然存在,但似乎没有依赖于这个特定角色的对象,它在数据库上没有任何东西。

无论如何,如果我们撤销CONNECT特权,那么角色可以被删除:

REVOKE CONNECT ON DATABASE test FROM dummy;
DROP ROLE dummy;
Run Code Online (Sandbox Code Playgroud)

我刚刚检查了 PostgreSQL 9.5 上也存在该行为。我觉得有点奇怪,我不明白为什么这个特定的特权会导致删除角色失败。

其他观察

这真的是阻塞,因为我们既不能重新分配这个对象:

REASSIGN OWNED BY dummy TO postgres;
Run Code Online (Sandbox Code Playgroud)

也不丢弃对象:

DROP OWNED …
Run Code Online (Sandbox Code Playgroud)

sql postgresql privileges dependencies sql-revoke

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

对数正态分布的均值和标准偏差与分析值不匹配

作为我研究的一部分,我从对数正态分布中测量绘制的均值和标准差.给定基础正态分布的值,应该可以分析预测这些量(如https://en.wikipedia.org/wiki/Log-normal_distribution所示).

但是,如下图所示,情况似乎并非如此.第一个图显示对数正态数据相对于高斯西格玛的平均值,而第二个图显示对数正态数据的西格玛与高斯的西格玛.显然,"计算"线非常显着地偏离"分析"线.

我将高斯分布的均值与sigma相关联,mu = -0.5*sigma**2因为这确保了对数正态场应该具有1的均值.注意,这是由我工作的物理领域的动机:与分析值的偏差仍然如果设置mu=0.0为例,则会发生.

通过复制和粘贴问题底部的代码,应该可以重现下面的图表.任何关于可能导致这种情况的建议都将不胜感激!

高斯对数正态与西格玛的平均值: 对数正态与高斯西格玛的平均值

对数正态西格玛与高斯西格玛: 对数正态的西格玛与高斯的西格玛

注意,为了生成上面的图,我使用了N=10000,但是N=1000为了速度已经输入了下面的代码.

import numpy as np
import matplotlib.pyplot as plt

mean_calc = []
sigma_calc = []
mean_analytic = []
sigma_analytic = []
ss = np.linspace(1.0,10.0,46)
N = 1000

for s in ss:
  mu = -0.5*s*s
  ln = np.random.lognormal(mean=mu, sigma=s, size=(N,N))
  mean_calc += [np.average(ln)]
  sigma_calc += [np.std(ln)]
  mean_analytic += [np.exp(mu+0.5*s*s)]
  sigma_analytic += [np.sqrt((np.exp(s**2)-1)*(np.exp(2*mu + s*s)))]

plt.loglog(ss,mean_calc,label='calculated')
plt.loglog(ss,mean_analytic,label='analytic')
plt.legend();plt.grid()
plt.xlabel(r'$\sigma_G$')
plt.ylabel(r'$\mu_{LN}$')
plt.show()

plt.loglog(ss,sigma_calc,label='calculated') …
Run Code Online (Sandbox Code Playgroud)

python floating-point numpy mean standard-deviation

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

Scipy.Odr 多变量回归

我想用scipy.odr. 我阅读了 API 文档,它说多维是可能的,但我无法使其工作。我在互联网上找不到工作示例,API 真的很粗糙,没有给出如何进行的提示。

这是我的 MWE:

import numpy as np
import scipy.odr

def linfit(beta, x):
    return beta[0]*x[:,0] + beta[1]*x[:,1] + beta[2]

n = 1000
t = np.linspace(0, 1, n)
x = np.full((n, 2), float('nan'))
x[:,0] = 2.5*np.sin(2*np.pi*6*t)+4
x[:,1] = 0.5*np.sin(2*np.pi*7*t + np.pi/3)+2
e = 0.25*np.random.randn(n)
y = 3*x[:,0] + 4*x[:,1] + 5 + e

print(x.shape)
print(y.shape)

linmod = scipy.odr.Model(linfit)
data = scipy.odr.Data(x, y)
odrfit = scipy.odr.ODR(data, linmod, beta0=[1., 1., 1.])
odrres = odrfit.run()
odrres.pprint()
Run Code Online (Sandbox Code Playgroud)

它引发以下异常:

scipy.odr.odrpack.odr_error: number …
Run Code Online (Sandbox Code Playgroud)

python numpy one-definition-rule scipy python-3.x

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

从 PostgreSQL 中的 regclass 获取表名

我想从regclassPostgreSQL 中获取表名。我找到了解决办法,但我对此不太满意:

SELECT split_part('datastore.inline'::regclass::TEXT, '.', 2);
Run Code Online (Sandbox Code Playgroud)

Postgre中有没有专门的函数从regclass中提取表名?

postgresql function

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

如何访问Postgresql中的记录元素?

PostgreSQL v8.2(Greenplum)

CREATE OR REPLACE FUNCTION util.retrec(OUT p1 date, OUT p2 boolean)
RETURNS RECORD
AS
$BODY$
DECLARE
BEGIN
 p1 := current_date;
 p2 := true;
 RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;

SELECT util.retrec();
Run Code Online (Sandbox Code Playgroud)

这将返回(2016-03-24,t)-我该如何分别提取这两个值?

我可以与之交互进行操作,SELECT p1,p2 FROM util.retrec();但是如何在过程中将两个值分配给两个变量?我尝试了这个:

SELECT util.retrec() INTO r1, r2;
Run Code Online (Sandbox Code Playgroud)

运气不好,这试图将记录分配到r1中。

postgresql greenplum

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