BASE术语解释

时间:2010-07-27 10:06:02

标签: database nosql terminology definition base-db

BASE 首字母缩略词用于描述某些数据库的属性,通常是NoSQL数据库。它通常被称为ACID的反面。

只有少数文章涉及BASE的细节,而ACID有很多文章详述了每个原子性,一致性,隔离性和耐久性属性。维基百科仅将a few lines用于该术语。

这让我对定义

有些疑问
  

B aslica A vailable, S oft状态, E 文本一致​​性

我使用this article和我的想象力将这些属性解释如下:

基本上可用可以指代感知的数据可用性。如果单个节点发生故障,部分数据将无法使用,但整个数据层仍可运行。

  • 这种解释是正确的,还是指其他的?
  • 更新:Mau's answer推断,是否意味着整个数据层始终接受新数据,即没有锁定方案阻止数据立即插入?

软状态:我所能找到的只是需要周期刷新的数据概念。如果没有刷新,数据将过期或被删除。

  • 自动删除数据库中的数据对我来说似乎很奇怪。
  • 过期或过时的数据更有意义。但是这个概念适用于任何类型的冗余数据存储,而不仅仅是NoSQL。它是否描述了其他的东西呢?

最终一致性意味着如果有足够的时间,更新最终将会传播到所有服务器。

  • 此属性对我来说很清楚。

有人可以详细解释这些属性吗?

或者它只是一个牵强附会且毫无意义的缩写,指的是化学中发现的酸和碱的概念?

6 个答案:

答案 0 :(得分:131)

BASE首字母缩略词由Eric Brewer定义,他也因制定CAP theorem而闻名。

CAP定理指出分布式计算机系统不能同时保证以下三个属性:

  • 一致性
  • 状况
  • 分区容差

BASE系统放弃了一致性。

  • 基本上可用表示系统 保证可用性,就CAP定理而言。
  • 软状态表示即使没有输入,系统状态也可能随时间而变化。这是因为最终的一致性模型。
  • 最终一致性表示系统会随着时间的推移变得一致,因为系统在此期间没有收到输入。

Brewer确实承认the acronym is contrived

  

那年早些时候,我和我的学生在办公室里找到了[BASE]的缩写词。我同意它有点人为,但“ACID”也是如此 - 比人们意识到的要多得多,所以我们认为它已经足够好了。

答案 1 :(得分:34)

它与BASE有关:BASE跳线类型总是基本上可用(对于新的关系),处于软状态(他的关系没有持续很长时间)和最终一致(有一天他结婚。)

答案 2 :(得分:4)

  • 基本可用性:该数据库似乎大部分时间都可以正常工作。

  • 软状态:存储不必始终保持写一致或相互一致。

  • 最终一致性:关于如何执行任意数量的更改,数据应始终保持一致。

答案 3 :(得分:1)

可能只是因为ACID是物质显示的一组属性(在化学中)而BASE是它们的补充集。所以它可能只是为了显示两者之间的对比,这个首字母缩略词是由“基本上可用的软状态最终一致性”被确定为完整形式。

答案 4 :(得分:1)

  

ACID和BASE分别是RDBMS和NoSQL的一致性模型。 ACID交易更为悲观,即他们更担心数据安全。在NoSQL数据库世界中,ACID事务较不流行,因为一些数据库已经放松了对即时一致性,数据新鲜度和准确性的要求,以便获得其他好处,例如可伸缩性和弹性。

BASE代表-

  • 基本可用性-数据库似乎大部分时间都可以正常工作。
  • 软状态-存储不必保持写一致,不同的副本也不必始终保持一致。
  • 最终一致性-商店在以后的某个时刻(例如,在读取时懒惰)显示出一致性。
  

因此,BASE放松了一致性,以允许系统即使在不一致的状态下也可以处理请求。

示例:没有人会介意他们的推文在短时间内在社交网络中不一致。获得即时响应比保持一致的用户信息状态更为重要。

答案 5 :(得分:0)

为补充其他答案,我认为首字母缩略词的出现是为了显示两个术语之间的比例,以区分RDMS与大数据之间的事务或请求的可靠性。

摘自本文acid vs base

  

在化学中,pH值可测量   水溶液(水溶液)。 pH值范围从0开始   (高酸性物质,如电池酸)至14(高碱性)   谎言之类的物质); 25°C(77°F(25°C))的纯水的pH为7,   中性。

     

数据工程师巧妙地借用了化学家和   创建了首字母缩写词,尽管其含义不完全相同,但仍很恰当   给定数据库系统中正在发生的事情的表示形式   在讨论事务处理的可靠性时。

另外一点,因为我使用Elasticsearch处理大数据。为了明确起见,Elasticsearch的一个实例是一个节点,一组节点组成一个集群。

从我的实际角度来看,BA(基本可用)在这种情况下具有多个主节点来处理Elasticsearch集群及其操作的想法。

如果您有3个主节点,并且当前指挥的主节点发生故障,则系统将处于运行状态,尽管处于较低效率状态,并且另一个主节点将代替其作为主指挥的主节点。如果两个主节点发生故障,系统仍将保持运行状态,最后一个主节点将接管工作。