请教一个唯一写入的问题

2019-09-21 16:19:49 +08:00
 amxku
我们代码是 python + sqlalchemy,数据库是 postgresql

单个表里头差不多 7、8 千万数据,因为数据有一些逻辑,有些数据是 3 天唯一,有些是 7 天唯一,有些是 30 天唯一,

现在逻辑是每次写入的时候先查下,3 天内有没有,或是 7 天有没有,或是 30 天或是。。。,比较费

是否有好的建议,或是唯一索引里头可以做时间等逻辑么,前面有尝试过加日期字段,做成联合唯一索引,但是只能做到天,比如 3 天,7 天、30 天,或是 90 天的逻辑好像就没办法了


大神没有什么建议,提示下么,谢谢了,或是其他等什么数据库可以实现这样等逻辑么?
4169 次点击
所在节点    PostgreSQL
7 条回复
psx2019
2019-09-21 16:28:46 +08:00
一次性查出来,然后在内存里面按照业务逻辑判重.
amxku
2019-09-21 16:30:01 +08:00
@psx2019 好几十个表呢,每个表的时间逻辑都不太一样
jugelizi
2019-09-21 16:30:16 +08:00
我怎么觉得 redis 很满足这种需求
tanranran
2019-09-21 16:31:21 +08:00
@psx2019 #1 #1 大佬知道这个要吃多少内存吗?
jianzhiyao020
2019-09-21 17:32:53 +08:00
pgsql 估计不行了,redis 辅助一下还可以,存一个过期时间为:1,3,5,7 天的键,去辅助快速检查
jianzhiyao020
2019-09-21 17:37:30 +08:00
你这个数据是近 N 天唯一,
假设解决办法 A 是获取一个近 N 天唯一的 hash,
先假设 A 可行,
那么每次获取的时候都能获取到近 N 天的唯一值,
随着时间推移,
那么这个 hash 将一直保持不变,
那么也就是说:近 N 天“唯一”这个需求就不成立了,
自己推翻了自己。
证毕。
amxku
2019-09-21 21:57:23 +08:00
@jianzhiyao020 呵呵呵呵。。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/602849

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX