tioover
V2EX  ›  数据库

ORM 能不能这样

  •  
  •   tioover · Sep 28, 2013 · 2374 views
    This topic created in 4685 days ago, the information mentioned may be changed or developed.
    我设想,ORM 用算法判断,如果一个字段被频繁访问,就会被被判断为热点,对于热点的字段,自动的加载到内存中(比如说Redis)然后定时同步……

    这种思路有意义吗?有没有成品?
    12 replies    1970-01-01 08:00:00 +08:00
    Alex_L
        1
    Alex_L  
       Sep 28, 2013 via iPad
    大部分ORM都有缓存和延迟加载一类的机制
    ericls
        2
    ericls  
       Sep 28, 2013 via Android
    好像还是只有自己写 我也在寻找类似的
    est
        3
    est  
       Sep 28, 2013
    那也只是频繁读啊,遇到频繁写的怎么办?
    shiny
        4
    shiny  
    PRO
       Sep 28, 2013
    频繁读取的,数据库本身就有 Query Cache 吧,而且可靠性很好。热点数据自己用 redis 实现也不费劲吧,关键是可靠。
    tioover
        5
    tioover  
    OP
       Sep 28, 2013
    @est 频繁写就是写在内存啊,定时写入SQL
    tioover
        6
    tioover  
    OP
       Sep 28, 2013
    好吧,那么可以讨论一下怎么判断热点数据

    访问次数为y轴,时间为x轴,那么一个热点数据的曲线大致上是驼峰或者波浪型,可以通过导数来判断?
    9hills
        7
    9hills  
       Sep 28, 2013 via Android
    @tioover 写 cache 的话数据一致性怎么解决啊
    Alex_L
        8
    Alex_L  
       Sep 29, 2013 via iPad
    没太明白你的意思。内存的空间是有限的,不经常访问的缓存数据会过期,换而言之缓存中的数据大都是热点数据。至于利用缓存不一致写缓存要根据业务场景来,比如点赞功能就不适合每次写数据库。这种行为应该根据业务场景对数据一致性的需求,由程序员自己判断,不应该由ORM做,而且反正做起来也很简单。
    davepkxxx
        9
    davepkxxx  
       Sep 29, 2013
    缓存框架就是干这个的。
    kfll
        10
    kfll  
       Sep 29, 2013 via iPhone
    @tioover 频繁写就没这么容易了…
    tioover
        11
    tioover  
    OP
       Sep 29, 2013
    @kfll
    @Alex_L 对哦……
    mengzhuo
        12
    mengzhuo  
       Sep 29, 2013
    一个字段……做好数据库的优化其实比应用层的优化有用得多。
    先检查query cache hit rate比较好,如果是MYSQL的话,可以开始考虑proxy+主-从了。
    反正一般对已上线的服务都是先加硬件,再考虑代码优化。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3131 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 13:14 · PVG 21:14 · LAX 06:14 · JFK 09:14
    ♥ Do have faith in what you're doing.