定理捕获了由Eric Brewer计算机科学家在1998年详细阐述的定理。根据该定理,没有分布式数据库可以同时确保以下过渡:一致性,可用性和TOLON.
>一致性是读取最新更新或错误的给定交付给定传递的每个操作。如果有1毫秒的Atrás的更新,这并不重要。
可用性是所有操作(阅读或书面)成功的属性,而没有系统返回任何错误。
对分区的耐受性是系统必须继续运行的属性,即使集群各方之间的通信是失败。
根据布鲁尔(Brewer)的说法,理解捕获的最幻想的方法是在一个(或群集)党(或集群)的相对侧的两个段落(或本能)思考。允许至少一个实例执行更新将导致党派的不一致,损害“ C”。如果一致性在分配系统中很重要,则政党的一侧必须将自己视为“必不可少的”,损害可用性(a)。因此,只有当党的双方毫无失败(24/7)损害分区toleã(p)时,才有可能同时确保一致性和可用性。总之,只有在选择数据库系统时,才有可能优先考虑这3个属性中的2个。
正如我之前说的那样,por在1998年进行了详细阐述。自从进入以来,已经发生了很多变化,许多新技术已经出现,2012年酿酒师列出了可以通过ernãeno的理由来源:
容量的特性是小ba菜但包含的。分布式系统可以保证100%的可用性和对分区的耐受性,同时提供90%的一致性,或者确保100%分区toleã且耐受性为90%的可用性。
另一点是,随着云服务的发展,各方的管理系统变得更好,最大程度地减少了当事方之间的通信错误的发生。从理论上讲,建筑师需要优先考虑“ C”或“ A”。
另一件事是,在微服务世界中,每个产品系统都可以选择其他数据库。没有100%CA,CP或AP系统。这些不同属性的优先级可能会根据商业服务的粒度而有所不同。
也就是说,没有银色子弹来开发数据库技术的系统。有必要分析有需要的要求,以了解最重要的内容,并根据这些要求,选择最符合最符合的技术。
当然,现实生活中的系统比其他系统更优先。我想一个一个人通过,并在下面引用示例。确定一致性(C)的系统的示例:
- 余额和银行声明;
- 库存管理;
- 旅行储备;
- 打印
确定可用性的系统示例(a):
- 社交网络;
- 实时的使者;
- 监视;
- Streaming de mÃdia;
- 组成
确定划分toleã(p)的系统的示例:
- ot;
- 监视;
- 云存储;
- 实时合作。
还有数据库管理系统(SGBD)优先考虑CAP定理的两个toll属性,并且可以适合CA,CP或AP。最后,我想引用每个类别的示例。
类别: p>
- oracle;
- SQL Server;
- PostgreSql。
cancoria cp:
- mongodb;
- cockleachdb;
- faunadb。
类别AP: p>
- Apache Cassandra;
- dynamodb;
- Apache HBase。 li>