<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Database on I'm OWenT</title><link>//owent.net/tags/database.html</link><description>Recent content in Database on I'm OWenT</description><generator>Hugo</generator><language>zh-cn</language><copyright>&lt;a rel="license" href="https://github.com/owent/blog-hugo/blob/master/LICENSE.md"&gt;&lt;img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png" /&gt;&lt;/a&gt;</copyright><lastBuildDate>Sat, 07 Nov 2020 19:27:08 +0000</lastBuildDate><atom:link href="//owent.net/tags/database/index.xml" rel="self" type="application/rss+xml"/><item><title>Amazon Aurora DB存储引擎论文阅读小记</title><link>//owent.net/2020/2008.html</link><pubDate>Sat, 07 Nov 2020 19:27:08 +0000</pubDate><guid>//owent.net/2020/2008.html</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;&#10;&lt;p&gt;前段时间接触到腾讯云的一个新数据库产品 &lt;a href="https://cloud.tencent.com/product/cynosdb"&gt;CynosDB&lt;/a&gt; 是基于 &lt;a href="https://aws.amazon.com/rds/aurora/"&gt;Amazon Aurora&lt;/a&gt; 数据库的Paper实现的。我比较感兴趣就来看看它和之前看过的 &lt;a href="https://ai.google/research/pubs/pub39966" title="Spanner: Google's Globally-Distributed Database"&gt;Spanner&lt;/a&gt; 之类有什么不同，也许部分设计也能用在我们游戏业务的服务器中。它的主要的创新点在于重新设计了binlog和存储的部分，所以我也主要就看了两篇Paper： &lt;a href="https://media.amazonwebservices.com/blog/2017/aurora-design-considerations-paper.pdf" title="Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases"&gt;《Amazon Aurora - Design Considerations for High Throughput Cloud-Native Relational Databases》&lt;/a&gt; 是一个整体性质的介绍和概述； &lt;a href="https://dl.acm.org/doi/abs/10.1145/3183713.3196937" title="Amazon Aurora: On Avoiding Distributed Consensus for I/Os, Commits, and Membership Changes"&gt;《Amazon Aurora: On Avoiding Distributed Consensus for I/Os,Commits, and Membership Changes》&lt;/a&gt; 是对其重点部分的存储服务的。&lt;/p&gt;</description></item><item><title>Anna（支持任意扩展和超高性能的KV数据库系统）阅读笔记</title><link>//owent.net/2019/1905.html</link><pubDate>Sun, 21 Apr 2019 11:38:16 +0000</pubDate><guid>//owent.net/2019/1905.html</guid><description>&lt;h1 id="前言"&gt;前言&lt;/h1&gt;&#10;&lt;p&gt;年前被同事安利了这个分布式最终一致性的存储系统 &lt;a href="http://db.cs.berkeley.edu/jmh/papers/anna_ieee18.pdf"&gt;Anna&lt;/a&gt; 。初略看了一眼Paper，似乎很是牛X。说是支持任意规模的扩展，并且性能不低于 &lt;a href="https://github.com/fastio/pedis"&gt;pedis&lt;/a&gt;。于是抽空来看看并了解下这套系统的设计特点和这种夸张的单机性能和扩展性的来源。&lt;/p&gt;&#10;&lt;h1 id="主流分布式kvs的比较"&gt;主流分布式KVS的比较&lt;/h1&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;系统名词&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;扩容设计&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;内存模型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;针对单个Key的一致性策略&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;针对多个Key一致性策略&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Masstree&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;共享内存&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Bw-tree&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;共享内存&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PALM&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;共享内存&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MICA&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;共享内存&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Redis&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;单核&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;N/A&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Serializability"&gt;&lt;strong&gt;串行化(Serializable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;COPS, Bolt-on&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Causal_consistency"&gt;&lt;strong&gt;因果一致性(Causal)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Bayou&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;, 单调读/写, &lt;a href="http://www.dbms2.com/2010/05/01/ryw-read-your-writes-consistency/"&gt;&lt;strong&gt;Read Your Writes&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Dynamo&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cassandra&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PNUTS&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;线性写, 单调读&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CouchDB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Voldemort&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;HBase&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Riak&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;DocumentDB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.allthingsdistributed.com/2007/12/eventually_consistent.html"&gt;&lt;strong&gt;Session&lt;/strong&gt;&lt;/a&gt;, &lt;a href="http://pbs.cs.berkeley.edu/"&gt;&lt;strong&gt;Bounded Staleness&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Memcached&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&amp;amp;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;共享内存&amp;amp;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MongoDB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&amp;amp;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;共享内存&amp;amp;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;H-Store&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&amp;amp;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Serializability"&gt;&lt;strong&gt;串行化(Serializable)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ScyllaDB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&amp;amp;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Anna&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多核&amp;amp;分布式&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;消息队列&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt;, Item Cut, Writes Follow Reads, 单调读/写, &lt;a href="http://www.dbms2.com/2010/05/01/ryw-read-your-writes-consistency/"&gt;&lt;strong&gt;Read Your Writes&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/PRAM_consistency"&gt;&lt;strong&gt;PRAM&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://jepsen.io/consistency/models/read-committed"&gt;&lt;strong&gt;Read Committed&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://jepsen.io/consistency/models/read-uncommitted"&gt;&lt;strong&gt;Read Uncommitted&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;一致性说明:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Linearizability"&gt;&lt;strong&gt;线性(Linearizable)&lt;/strong&gt;&lt;/a&gt; 是指在更新了某行之后，后续的客户端不会读到老数据，通常用在单行一致性上，最强的一致性模型；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性(Eventual)&lt;/strong&gt;&lt;/a&gt; 是指在更新了某行之后，后续的客户端可能在某些（缓存）结点上会读到老数据（特别是并发执行的事务），但是最后（一段时间后）一定会读到一致的最新数据；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Serializability"&gt;&lt;strong&gt;串行化(Serializable)&lt;/strong&gt;&lt;/a&gt; 是指对多个读写同一行数据的事务，采用排序和排队执行的机制，这样也能保证数据的严格一致性，但是通常这涉及加锁（&lt;a href="https://ai.google/research/pubs/pub39966" title="Spanner: Google's Globally-Distributed Database"&gt;spanner&lt;/a&gt;/&lt;a href="https://ai.google/research/pubs/pub41344" title="F1: A Distributed SQL Database That Scales"&gt;f1&lt;/a&gt;）或单点原子化操作（&lt;a href="https://redis.io/"&gt;redis&lt;/a&gt;）；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;单调读(Monotonic Reads)&lt;/strong&gt; 是指在某一个客户端读取到新数据后，不会再读到老数据，但是有可能在更新一行后短期内客户端仍然读到老数据，属于 &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性&lt;/strong&gt;&lt;/a&gt; 的一种；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;单调写(Monotonic Writes)&lt;/strong&gt; 是指对单个客户端的写入操作一定是有序的，属于 &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性&lt;/strong&gt;&lt;/a&gt; 的一种；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Causal_consistency"&gt;&lt;strong&gt;因果一致性(Causal)&lt;/strong&gt;&lt;/a&gt; 是指在某个客户端上对一组Key的读写操作会被认为有因果关系，那么在进程上也都保持一样的可见性顺序，属于 &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性&lt;/strong&gt;&lt;/a&gt; 的一种。通常通过 &lt;a href="https://en.wikipedia.org/wiki/Vector_clock"&gt;向量时钟(Vector Clock)&lt;/a&gt; 实现；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.dbms2.com/2010/05/01/ryw-read-your-writes-consistency/"&gt;&lt;strong&gt;Read Your Writes&lt;/strong&gt;&lt;/a&gt; 是指当一个数据行被更新后，这个进程后面的读操作一定会读到这个新值。通常如果数据库系统有 &lt;strong&gt;N个副本节点&lt;/strong&gt; ， &lt;strong&gt;W个节点感知到写入&lt;/strong&gt; ， &lt;strong&gt;R个节点对读操作返回的数据一致&lt;/strong&gt; ， 且如果 &lt;strong&gt;W + R &amp;gt; N&lt;/strong&gt; ， 那么我们认为当前系统符合 &lt;a href="http://www.dbms2.com/2010/05/01/ryw-read-your-writes-consistency/"&gt;&lt;strong&gt;Read Your Writes&lt;/strong&gt;&lt;/a&gt; 一致性，属于 &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性&lt;/strong&gt;&lt;/a&gt; 的一种；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.allthingsdistributed.com/2007/12/eventually_consistent.html"&gt;&lt;strong&gt;Session&lt;/strong&gt;&lt;/a&gt; 是&lt;a href="http://www.dbms2.com/2010/05/01/ryw-read-your-writes-consistency/"&gt;&lt;strong&gt;Read Your Writes&lt;/strong&gt;&lt;/a&gt;的一种更具体的行为，即每一次客户端连接到服务器的Session中保证 &lt;a href="http://www.dbms2.com/2010/05/01/ryw-read-your-writes-consistency/"&gt;&lt;strong&gt;Read Your Writes&lt;/strong&gt;&lt;/a&gt; 一致性，如果重新建立Session则不保证，属于 &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性&lt;/strong&gt;&lt;/a&gt; 的一种；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://pbs.cs.berkeley.edu/"&gt;&lt;strong&gt;Bounded Staleness&lt;/strong&gt;&lt;/a&gt; 是指读取操作最多滞后于写入操作最多k个版本或t个周期之后，属于 &lt;a href="https://en.wikipedia.org/wiki/Eventual_consistency"&gt;&lt;strong&gt;最终一致性&lt;/strong&gt;&lt;/a&gt; 的一种；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Writes follows reads&lt;/strong&gt; 是指对一个Key的读操作后一定跟着这个Key的写操作；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/PRAM_consistency"&gt;&lt;strong&gt;PRAM&lt;/strong&gt;&lt;/a&gt; 是指对于某个进程对多个Key的写入，其他进程看到的写入顺序和这个写入进程的写入顺序一致。因为这些Key在这个写入进程上是同一个pipeline；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://jepsen.io/consistency/models/read-uncommitted"&gt;&lt;strong&gt;Read Uncommitted&lt;/strong&gt;&lt;/a&gt; 是指对同一组事务禁止 &lt;em&gt;&lt;strong&gt;脏写&lt;/strong&gt;&lt;/em&gt; ，即多个未提交事务同时修改一组数据；&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://jepsen.io/consistency/models/read-committed"&gt;&lt;strong&gt;Read Committed&lt;/strong&gt;&lt;/a&gt; 是指事务读取数据时，不允许看到其他未提交事务所写入的数据，通常涉及多个事务并发执行且需要访问同一组数据；&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;See &lt;a href="https://en.wikipedia.org/wiki/Consistency_model"&gt;https://en.wikipedia.org/wiki/Consistency_model&lt;/a&gt; for more details&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Google去中心化分布式系统论文三件套(Percolator、Spanner、F1)读后感</title><link>//owent.net/2019/1902.html</link><pubDate>Thu, 31 Jan 2019 22:49:50 +0000</pubDate><guid>//owent.net/2019/1902.html</guid><description>&lt;h1 id="前言"&gt;前言&lt;/h1&gt;&#10;&lt;p&gt;之前看过 &lt;a href="https://read.douban.com/ebook/10179010/"&gt;《大规模分布式存储系统：原理解析与架构实战》&lt;/a&gt; ，这个系统设计还是挺有意思的，里面提及了Google的一整套系统都有论文，而且现在已经进化到下一代支持分布式跨行事务的关系型数据库系统了。所以一直很想抽时间看看Google的那套去中心化并且可以平行扩容的分布式系统和数据库的论文。之前一些计划中的我自己的项目的优化项都差不多完成了，这段时间就陆陆续续的看完了这三篇Paper，可怜我的渣渣英语，所以看得比较慢。&lt;/p&gt;</description></item><item><title>非常帅气的Linq to sql</title><link>//owent.net/2011/447.html</link><pubDate>Thu, 02 Jun 2011 10:57:03 +0000</pubDate><guid>//owent.net/2011/447.html</guid><description>&lt;p&gt;Linq是.NET 3里新增的东西，我在软件工程课程设计里初步应用到一点，而且主要用在Lambda表达式上，今天算是在好奇心驱动下尝试了一下在数据库方面的应用。&lt;/p&gt;&#10;&lt;p&gt;在数据库数据层自动化上，Linq强大地让我很惊喜。&lt;/p&gt;</description></item></channel></rss>