amxku

请教一个唯一写入的问题

  •  
  •   amxku · Sep 21, 2019 · 4991 views
    This topic created in 2453 days ago, the information mentioned may be changed or developed.
    我们代码是 python + sqlalchemy,数据库是 postgresql

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

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

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


    大神没有什么建议,提示下么,谢谢了,或是其他等什么数据库可以实现这样等逻辑么?
    7 replies    2019-09-21 21:57:23 +08:00
    psx2019
        1
    psx2019  
       Sep 21, 2019
    一次性查出来,然后在内存里面按照业务逻辑判重.
    amxku
        2
    amxku  
    OP
       Sep 21, 2019 via Android
    @psx2019 好几十个表呢,每个表的时间逻辑都不太一样
    jugelizi
        3
    jugelizi  
       Sep 21, 2019
    我怎么觉得 redis 很满足这种需求
    ByteRan
        4
    ByteRan  
       Sep 21, 2019
    @psx2019 #1 #1 大佬知道这个要吃多少内存吗?
    jianzhiyao020
        5
    jianzhiyao020  
       Sep 21, 2019
    pgsql 估计不行了,redis 辅助一下还可以,存一个过期时间为:1,3,5,7 天的键,去辅助快速检查
    jianzhiyao020
        6
    jianzhiyao020  
       Sep 21, 2019
    你这个数据是近 N 天唯一,
    假设解决办法 A 是获取一个近 N 天唯一的 hash,
    先假设 A 可行,
    那么每次获取的时候都能获取到近 N 天的唯一值,
    随着时间推移,
    那么这个 hash 将一直保持不变,
    那么也就是说:近 N 天“唯一”这个需求就不成立了,
    自己推翻了自己。
    证毕。
    amxku
        7
    amxku  
    OP
       Sep 21, 2019
    @jianzhiyao020 呵呵呵呵。。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3180 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 14:14 · PVG 22:14 · LAX 07:14 · JFK 10:14
    ♥ Do have faith in what you're doing.