我在 DBA 和其他网站上看到,将数据库暴露给 Internet 是一个特别糟糕的主意,但我注意到 PostgreSQL 具有仅 SSL 证书的身份验证。这是否会使将数据库公开到互联网(来自非本地主机连接的仅证书身份验证)更安全,还是建立 VPN 或通过 SSH 等隧道更好?
如果后者更安全,究竟是什么让它更安全?在这方面,我觉得我忽略了一些显而易见的事情。
我之前已经设置了一些数据库,但实际上从未需要设置需要某种远程管理的数据库(在这种情况下,“远程”是指通过 Internet 或 WAN 而不是 LAN)。
我不确定我是否完全捏造了我的小型爱好数据库的设计(无论如何我都不是 DBA),但我有一个这样的表(主键是(staffid, effectivefrom)
):
staffid | target | effectivefrom
--------|--------|---------------
1 | 6.0 | 2012-01-01
2 | 6.0 | 2012-01-01
3 | 6.0 | 2012-01-01
1 | 7.0 | 2012-03-01
Run Code Online (Sandbox Code Playgroud)
所以基本上,三名员工都是以 6.0 的目标开始的,但是在 3 月份,ID 1 的员工有了新的 7.0 目标。我想维护历史目标,因为它与其他表中的其他数据相关。
我想有一个用户定义的函数,它以日期为参数,这个函数需要根据日期将上表与另一个表连接起来。假设以 2 月 1 日为日期调用该函数,我希望联接的结果包括显示所有员工 6.0 的目标列。
像这样(我认为这行不通,因为之前可能有多行dateParameter
):
SELECT othertable.*, targets.target
FROM othertable
JOIN targets ON
othertable.staffid = targets.staffid AND
targets.effectivedate <= dateParameter;
Run Code Online (Sandbox Code Playgroud)
请让我知道我是否做了一个绝对的 DBA 'no-no' 或者我是否只需要一些咖啡因。