O que são essas letrinhas: BASE

O que são essas letrinhas: BASE

什么是这些缩写:BASE

Continuando com a saga de siglas, encontrei de maneira simplista a versão oposta do ACID, o BASE. Dizemos que é a versão oposta por conta de que os pontos focados por esse paradigma são totalmente diferentes do que o ACID tem como proposta, sem enrolação, vamos para as explicações. 延续我们的缩写系列,我以一种简单的方式找到了 ACID 的对立面:BASE。之所以说它是对立面,是因为该范式关注的重点与 ACID 的提议完全不同。废话不多说,让我们直接进入解释。

O que é

什么是 BASE

Dizemos que ele é a versão oposta do ACID por conta de que o modelo do BASE é focar na disponibilidade dos dados, ou seja, em detrimento da consistência dos dados, não iremos falhar a transação feita pelo usuário e sim iremos disponibilizar algum dado inconsistente por algum tempo. Agora explicando o que cada letra significa. 我们称其为 ACID 的对立面,是因为 BASE 模型侧重于数据的可用性。换句话说,为了保证可用性,我们宁愿牺牲数据的一致性,不会拒绝用户的交易,而是会在一段时间内提供可能不一致的数据。现在来解释每个字母的含义。

B - Basically available ou basicamente disponível, tem como premissa que cada request vai receber uma response, podendo ela não estar 100% atualizada. Então decidimos retornar respostas temporárias ou dados antigos com o objetivo de sempre retornar uma informação. B - Basically available(基本可用):其前提是每个请求都会收到响应,尽管该响应可能不是 100% 更新的。因此,我们选择返回临时响应或旧数据,目标是始终确保有信息返回。

S - Soft state ou Estado flexível, tem como premissa que os dados podem mudar com o tempo, mesmo sem nenhuma nova operação do usuário. Concordo, meio viagem isso, mas a ideia em si é que você em algum momento pode estar vendo uma informação X e logo depois pode estar vendo informação Y, isso acontece porque os bancos estão sincronizando as informações. Um bom exemplo disso é esse que tem no artigo do site da AWS: “Por exemplo, se os usuários editarem uma publicação nas redes sociais, a alteração poderá não ser visível para outros usuários imediatamente. No entanto, mais tarde, a postagem é atualizada sozinha (refletindo a alteração mais antiga), mesmo que nenhum usuário a tenha acionado.” A ideia geral é que uma transação foi feita e, com o tempo, os nós dos bancos vão ser sincronizados com essa informação atualizada. S - Soft state(软状态):其前提是数据可能会随时间变化,即使没有用户进行任何新操作。我同意这听起来有点奇怪,但其核心思想是:你可能在某一时刻看到信息 X,随后又看到信息 Y,这是因为数据库正在同步信息。AWS 网站文章中有一个很好的例子:“例如,如果用户编辑了社交媒体上的帖子,该更改可能不会立即对其他用户可见。然而,稍后该帖子会自动更新(反映出之前的更改),即使没有用户触发它。” 总体的想法是,交易已经完成,随着时间的推移,数据库节点将与更新后的信息同步。

E - Eventual Consistency ou Consistência Eventual, isso diz que em algum ponto os dados vão estar consistentes, no geral, a propagação da atualização da informação vai ser feita de forma async, destacando aqui, não existindo garantia de quando, mas ela vai. E - Eventual Consistency(最终一致性):这表示在某个时间点,数据最终会达到一致。通常,信息更新的传播是以异步方式进行的。需要强调的是,虽然无法保证具体时间,但它最终一定会达成一致。


Na prática

实践操作

Vamos ver agora na prática como funcionariam essas siglas. Primeiro, vamos utilizar o banco Cassandra via Docker por ser mais prático. 现在让我们看看这些缩写在实践中是如何运作的。首先,为了方便起见,我们将使用 Docker 运行 Cassandra 数据库。

(Nota: Os comandos de Docker e CQL foram omitidos para brevidade, mas o fluxo segue a criação de um cluster de 3 nós, a inserção de dados e a simulação de queda de um nó para demonstrar a disponibilidade e a sincronização posterior). (注:此处省略了具体的 Docker 和 CQL 命令,但流程包括创建 3 节点集群、插入数据以及模拟节点故障,以演示可用性和后续同步。)

Com isso, validamos o princípio de Basically Available, que mostra que o sistema continua aceitando operações mesmo com parte do cluster fora. 通过这些操作,我们验证了 Basically Available(基本可用) 的原则,即系统即使在部分集群离线的情况下,依然能够继续接受操作。

Esse retorno valida a ideia do Eventual Consistency, pois vimos que mesmo com o cass3 desligado, após a gente ligar de novo, vemos que os dados ficaram consistentes. 这个返回结果验证了 Eventual Consistency(最终一致性) 的理念,因为我们看到即使在 cass3 离线期间,重新启动后,数据最终也保持了一致。

Obs: Para validar o Soft State poderíamos simular usando TTL, fazendo com que registros com tempo de expiração desapareçam e mudem com a sincronização. 注:为了验证 Soft State(软状态),我们可以使用 TTL(生存时间)进行模拟,使带有过期时间的记录在同步过程中自动消失或变更。


Conclusão

结论

Com esse estudo conseguimos ver como funciona BASE e por que ele é considerado o “inverso” do ACID, e principalmente, quais pontos principalmente ele quer resolver, que é com relação à disponibilidade do serviço ao invés de consistência de dados. 通过这次学习,我们了解了 BASE 的工作原理,以及为什么它被认为是 ACID 的“反面”。最重要的是,我们明确了它主要解决的问题:即优先考虑服务的可用性,而非数据的一致性。