Percolator (transações)
O modelo do Google (2010) para montar transações ACID distribuídas sobre um armazenamento chave-valor (Bigtable), com commit em duas fases dirigido pelo cliente e um oráculo central de timestamps. A base de bancos SQL distribuídos modernos como o TiDB.
Contexto: o Google criou o Percolator para atualizar o índice de busca de forma incremental e precisava de transações sobre o Bigtable, que não as tinha. Mecânica: um commit em duas fases conduzido pelo cliente, que guarda metadados de lock e de commit em colunas extras do Bigtable; um "Timestamp Oracle" distribui timestamps globalmente ordenados para o isolamento por snapshot. Não existe um serviço central coordenador de transações — a lógica mora no cliente e no armazenamento de dados. O legado: o modelo transacional do TiDB se baseia diretamente no Percolator, e as ideias influenciaram toda a onda de bancos SQL distribuídos. É diferente do Spanner (que usa o hardware TrueTime). Um artigo influente que mostrou que dá para ter ACID sobre um KV escalável. Relacionado a transação distribuída e Spanner TrueTime.