gpt4 book ai didi

caching - 使用clojureql还是STM+异步写入?

转载 作者:行者123 更新时间:2023-12-02 00:22:15 25 4
gpt4 key购买 nike

我正在用 clojure 编写一个应用程序,它需要保留其数据,但如果某些数据丢失,那么也不是灾难性的。我想知道每次想要访问数据时是否应该使用 ClojureQL,或者应该使用 STM + ClojureQL 并且在更新/写入时异步保留数据。有谁知道每种方法的优点/缺点。有人尝试过异步持久化方法吗?

最佳答案

这是改善写入延迟的经典方法,通常称为 write-behind。将更新批处理在一起并在单独的异步线程中执行它们有几个好处:

  • 从更新路径中删除(可能很慢)对持久存储的写入
  • 如果可以批量更新,效率会更高
  • 可能允许合并更新(如果您在同一批处理中对同一键进行多次写入,则可以删除除最后一个之外的所有内容,并且根本不写入中间值)

后写式也有明显的缺点:

  • 如果数据仅存储在内存中,写入可能会丢失
  • 让后台异步线程正确参与事务系统的其余部分有时会很困难
  • 后台线程可以得到备份,因为它们正在处理操作的“慢速”部分; write-behind 在用于加速偶尔的峰值并可以在低谷期间恢复时效果最佳
  • 内存写入和存储写入之间的后续读取将看到旧值,除非您还检查内存中状态 - 这可能会造成困惑或在读取时可能会很昂贵。因此,后写通常与直读缓存结合使用,其中所有读取都通过缓存进行。

当然,这一切与 ClojureQL 或 STM 都没有任何关系。 :)

关于caching - 使用clojureql还是STM+异步写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4562122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com