{"id":1752,"date":"2014-12-16T18:50:43","date_gmt":"2014-12-16T18:50:42","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1752"},"modified":"2022-11-12T18:08:51","modified_gmt":"2022-11-13T02:08:51","slug":"optimistic-or-pessimistic-locking-which-one-should-you-pick","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/","title":{"rendered":"Bloqueio otimista ou pessimista - qual deles voc\u00ea deve escolher?"},"content":{"rendered":"<p><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Suponha que Alice e Joe leiam o mesmo item de dados do Couchbase Server, ent\u00e3o eles\u00a0<\/span><span style=\"font-style: normal;font-size: 15px;font-family: Arial\">ambos alteraram os dados e, em seguida, ambos tentaram gravar as novas vers\u00f5es de volta no banco de dados.\u00a0<\/span><span style=\"font-style: normal;font-size: 15px;font-family: Arial\">De quem s\u00e3o as altera\u00e7\u00f5es que devem ser salvas? As da Alice? As do Joe? Nenhuma delas? Uma combina\u00e7\u00e3o? S\u00e3o perguntas como essas que determinam o vencedor no debate sobre bloqueio pessimista versus otimista.<\/span><\/p>\n<p><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Especificamente, os desenvolvedores usam o bloqueio para serializar o acesso a itens de dados compartilhados. Mas qual esquema de bloqueio <\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">voc\u00ea deve escolher para seu aplicativo?<\/span><\/p>\n<p><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Neste blog, vou explicar o bloqueio otimista versus o bloqueio pessimista e as diferen\u00e7as entre os dois. Tamb\u00e9m vamos<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">\u00a0discutir as APIs de bloqueio otimista e pessimista que voc\u00ea pode usar no Couchbase <\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">Servidor para controlar o acesso simult\u00e2neo aos seus dados.<\/span><\/p>\n<h6><strong>O que \u00e9 o bloqueio otimista no Couchbase Server?<\/strong><\/h6>\n<p><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Vamos supor que estejamos criando um aplicativo semelhante \u00e0 Wikip\u00e9dia on-line usando o Couchbase Server:\u00a0<\/span><span style=\"font-style: normal;font-size: 15px;font-family: Arial\">os usu\u00e1rios podem atualizar um artigo e adicionar novos artigos. Vamos supor que Alice esteja usando esse aplicativo\u00a0<\/span><span style=\"font-style: normal;font-size: 15px;font-family: Arial\">para editar um artigo sobre\u00a0<\/span><b style=\"font-size: 15px;font-family: Arial\">\"bicicletas\u00a0<\/b><span style=\"font-style: normal;font-size: 15px;font-family: Arial\">para corrigir algumas informa\u00e7\u00f5es. Alice abre o artigo e faz\u00a0<\/span><span style=\"font-style: normal;font-size: 15px;font-family: Arial\">Essas mudan\u00e7as, mas antes de clicar em salvar, ela se distrai e se afasta de sua mesa.\u00a0<\/span><span style=\"font-style: normal;font-family: Arial;font-size: 15px\">Enquanto isso, vamos supor que Joe perceba o mesmo erro no artigo sobre bicicletas e queira\u00a0<\/span><span style=\"font-style: normal;font-size: 15px;font-family: Arial\">corrigir o erro.<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Se o bloqueio otimista for usado no aplicativo, Joe poder\u00e1 editar o artigo e salvar suas altera\u00e7\u00f5es.\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">Quando Alice retornar e quiser salvar suas altera\u00e7\u00f5es, Alice ou o aplicativo desejar\u00e1\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">lidar com as atualiza\u00e7\u00f5es mais recentes antes de permitir que a a\u00e7\u00e3o de Alice altere o documento. Otimista\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">O bloqueio adota a vis\u00e3o \"otimista\" de que os conflitos de dados devido a edi\u00e7\u00f5es simult\u00e2neas ocorrem raramente, portanto, \u00e9\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">mais importante para permitir edi\u00e7\u00f5es simult\u00e2neas.<\/span><\/p>\n<p><span style=\"font-family: 'proxima nova', proxima-nova-1, proxima-nova-2, Avenir, Futura, 'Gill Sans', Helvetica, Arial, sans-serif;font-size: 16px;font-style: normal;font-weight: bold\">O que \u00e9 Pessimistic Locking no Couchbase Server?<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Agora vamos supor que seu processo comercial exija acesso exclusivo a um ou mais <\/span><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">documentos ou um gr\u00e1fico de documentos. Referindo-se ao nosso exemplo anterior, quando Alice estiver editando\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">o documento, ela n\u00e3o quer que nenhum outro usu\u00e1rio edite o mesmo documento. Se Joe tentar abrir o\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">a p\u00e1gina, ele ter\u00e1 que esperar at\u00e9 que Alice libere o cadeado.<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Com o bloqueio pessimista, o aplicativo precisar\u00e1 obter explicitamente um bloqueio no documento para\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">garantem o acesso exclusivo do usu\u00e1rio. Quando o usu\u00e1rio termina de acessar o documento, os bloqueios podem\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">ser removido manualmente ou usando um tempo limite.<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span style=\"font-family: 'proxima nova', proxima-nova-1, proxima-nova-2, Avenir, Futura, 'Gill Sans', Helvetica, Arial, sans-serif;font-size: 16px;font-style: normal;font-weight: bold\"><br \/>\nEnt\u00e3o, qual deles voc\u00ea deve escolher?<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><b style=\"font-size: 15px;font-family: Arial\">A resposta \u00e9 que n\u00e3o h\u00e1 uma resposta correta.\u00a0<\/b><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">depende<\/span><b style=\"font-size: 15px;font-family: Arial\">. Voc\u00ea deve escolher seu bloqueio\u00a0<\/b><b><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">com base nos requisitos de sua aplica\u00e7\u00e3o.<\/span><\/b><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">A menos que voc\u00ea espere que um documento seja muito disputado, o bloqueio otimista ser\u00e1 muito\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">menor sobrecarga do que o bloqueio pessimista - pegue o item que voc\u00ea precisa, atualize-o rapidamente e tente<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">ou aplic\u00e1-lo. Se algum outro ator do sistema chegar antes de voc\u00ea, basta tentar novamente at\u00e9 conseguir.<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Com o bloqueio pessimista, voc\u00ea pode obter acesso exclusivo a um determinado item - nenhum outro thread pode\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">acessar o item enquanto ele estiver bloqueado. Voc\u00ea precisa ter certeza de que liberar\u00e1 o bloqueio durante as falhas. Imagine que eu tenha o objeto cereal e n\u00e3o o entregue at\u00e9 obter o objeto leite. Mas voc\u00ea tem o objeto de leite e n\u00e3o o entregar\u00e1 at\u00e9 obter o objeto de cereal. Os tempos limite podem ser usados para possivelmente quebrar deadlocks ou para lidar com clientes que n\u00e3o liberam o bloqueio.\u00a0<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">Para simplificar, os usu\u00e1rios podem escolher a mesma estrat\u00e9gia de bloqueio em todo o aplicativo. Essa\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">funciona bem se os requisitos de acesso de todos os diferentes objetos em seu aplicativo forem\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">mas, na realidade, esse n\u00e3o \u00e9 o caso - objetos de aplicativos diferentes t\u00eam acesso diferente\u00a0<\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">requisitos. Por exemplo, no caso de jogos sociais -<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">1. As informa\u00e7\u00f5es do invent\u00e1rio do personagem e do jogador s\u00e3o muito acessadas durante o jogo,<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">que exigem acesso r\u00e1pido de leitura e grava\u00e7\u00e3o. Primeira op\u00e7\u00e3o - Use o bloqueio otimista. Pr\u00f3xima op\u00e7\u00e3o - Use o bloqueio otimista.<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Bloqueio pessimista<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">2. As contas e as prefer\u00eancias dos jogadores s\u00e3o lidas durante o login do jogador ou no in\u00edcio de um jogo<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal;font-size: 11px;font-family: Helvetica\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">mas n\u00e3o \u00e9 atualizado com frequ\u00eancia. O bloqueio otimista tamb\u00e9m funcionaria bem aqui.<\/span><\/p>\n<p style=\"margin-bottom: 0px;font-style: normal\"><span style=\"font-family: 'proxima nova', proxima-nova-1, proxima-nova-2, Avenir, Futura, 'Gill Sans', Helvetica, Arial, sans-serif;font-size: 16px;font-style: normal;font-weight: bold\">Obten\u00e7\u00e3o de um bloqueio pessimista no Couchbase Server<\/span><\/p>\n<p style=\"font-family: Helvetica;font-size: 11px;margin-bottom: 0px;font-style: normal\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">A obten\u00e7\u00e3o de um bloqueio no Couchbase Server consiste nas seguintes etapas:<\/span><\/p>\n<ol>\n<li style=\"font-family: Helvetica;font-size: 10px;margin-bottom: 0px;font-style: normal\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">Use a API get-and-lock para recuperar um valor para uma determinada chave e bloquear essa chave<\/span><\/li>\n<li style=\"font-family: Helvetica;font-size: 10px;margin-bottom: 0px;font-style: normal\"><span style=\"font-family: Arial;font-size: 15px;font-style: normal\">O aplicativo agora tem controle exclusivo sobre o documento<\/span><\/li>\n<\/ol>\n<p style=\"margin-bottom: 0px;font-style: normal\"><span style=\"font-family: 'proxima nova', proxima-nova-1, proxima-nova-2, Avenir, Futura, 'Gill Sans', Helvetica, Arial, sans-serif;font-size: 16px;font-style: normal;font-weight: bold\">Obten\u00e7\u00e3o de um bloqueio otimista no Couchbase Server<\/span><\/p>\n<p style=\"font-family: Helvetica;font-size: 11px;margin-bottom: 0px;font-style: normal\"><span class=\"Apple-style-span\" style=\"font-size: 15px;font-family: Arial\">A obten\u00e7\u00e3o de um bloqueio no Couchbase Server consiste nas seguintes etapas:<\/span><\/p>\n<ol>\n<li style=\"font-family: Helvetica;font-size: 11px;margin-bottom: 0px;font-style: normal\"><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">Use a API de check-and-set (CAS) para recuperar um n\u00famero de revis\u00e3o do CAS<\/span><\/li>\n<\/ol>\n<h6 style=\"margin-bottom: 0px;font-style: normal\">Libera\u00e7\u00e3o de um bloqueio no Couchbase Server<\/h6>\n<p style=\"font-style: normal;font-size: 16px;font-family: ff-meta-serif-web-pro-1, ff-meta-serif-web-pro-2, Georgia, 'Times New Roman', Times, serif\"><span style=\"font-family: Arial\"><span style=\"font-size: 15px;line-height: 22px\">Execute estas etapas para liberar manualmente um bloqueio<\/span><\/span><span style=\"font-size: 15px;font-family: Arial;font-style: normal\">:<\/span><\/p>\n<ol style=\"font-style: normal;font-size: 16px;font-family: ff-meta-serif-web-pro-1, ff-meta-serif-web-pro-2, Georgia, 'Times New Roman', Times, serif\">\n<li style=\"font-style: normal;font-size: 11px;font-family: Helvetica\"><span style=\"font-style: normal;font-size: 15px;font-family: Arial\">Use o CAS para modificar o valor e liberar o bloqueio<\/span><\/li>\n<\/ol>\n<p><span style=\"font-family: 'proxima nova', proxima-nova-1, proxima-nova-2, Avenir, Futura, 'Gill Sans', Helvetica, Arial, sans-serif;font-size: 16px;font-style: normal;font-weight: bold\">Nos bastidores do CAS<\/span><\/p>\n<p><span style=\"background-color: transparent;font-style: normal\">A opera\u00e7\u00e3o CAS \u00e9 um conceito simples que pode ser usado para criar mecanismos de controle de simultaneidade mais avan\u00e7ados. O CAS determina se um objeto foi atualizado por outro cliente entre o momento em que foi lido inicialmente e o momento em que se tentou salvar. Se o objeto for modificado por outro cliente, ser\u00e1 gerado um erro e o aplicativo ter\u00e1 de reler o valor e tentar novamente a opera\u00e7\u00e3o. Se os objetos n\u00e3o estiverem em alta conten\u00e7\u00e3o, a transforma\u00e7\u00e3o dos dados for idempotente e a repeti\u00e7\u00e3o da opera\u00e7\u00e3o for facilmente realizada sem muito desperd\u00edcio de trabalho, o bloqueio otimista \u00e9 uma boa solu\u00e7\u00e3o que oferece alto desempenho no caso m\u00e9dio. <\/span><\/p>\n<p><span style=\"text-align: justify;background-color: transparent;font-style: normal\">Uma maneira comum de interagir com o CAS envolve um loop do CAS, conforme mostrado na comunidade desenvolvida <\/span><a style=\"text-align: justify\" href=\"https:\/\/github.com\/dustin\/gomemcached\/blob\/c8a7845be6b4010a3a4ddd93118e7da11d0a64e2\/client\/mc.go#L297\"><span style=\"color: #1155cc;background-color: transparent;font-style: normal;text-decoration: underline\">cliente go memcached<\/span><\/a><span style=\"text-align: justify;background-color: transparent;font-style: normal\">.<\/span><\/p>\n<p><span style=\"background-color: transparent;font-weight: bold;font-style: normal\">Por exemplo: <\/span><span style=\"background-color: transparent;font-style: normal\">Imagine que h\u00e1 tr\u00eas clientes, conforme mostrado no diagrama de intera\u00e7\u00e3o abaixo. Todos os tr\u00eas clientes tentam atualizar o objeto X usando o CAS - cada cliente \u00e9 bem-sucedido, um de cada vez.<\/span><\/p>\n<p><span style=\"font-family: 'proxima nova', proxima-nova-1, proxima-nova-2, Avenir, Futura, 'Gill Sans', Helvetica, Arial, sans-serif;font-size: 16px;font-style: normal;font-weight: bold\">Voc\u00ea n\u00e3o liberou o bloqueio, deixe que o Couchbase fa\u00e7a isso por voc\u00ea<\/span><\/p>\n<p>Ao executar uma opera\u00e7\u00e3o get-and-lock, voc\u00ea fornece um prazo de validade para o bloqueio como par\u00e2metro. O per\u00edodo de tempo padr\u00e3o em que uma chave pode ser bloqueada \u00e9 de 15 segundos. Ap\u00f3s 15 segundos, se voc\u00ea n\u00e3o liberar o bloqueio manualmente, o Couchbase o liberar\u00e1 automaticamente.<\/p>\n<p><span style=\"font-family: 'proxima nova', proxima-nova-1, proxima-nova-2, Avenir, Futura, 'Gill Sans', Helvetica, Arial, sans-serif\"><b>Considera\u00e7\u00f5es finais sobre bloqueio pessimista e otimista em bancos de dados<\/b><\/span><\/p>\n<p>O bloqueio otimista pode n\u00e3o ser a melhor solu\u00e7\u00e3o para todas as situa\u00e7\u00f5es. Embora alguns casos de uso funcionem bem com o bloqueio otimista, outros podem precisar de esquemas mais r\u00edgidos, como o bloqueio pessimista.<\/p>\n<p>O bloqueio pode n\u00e3o ser bom para todos os casos - seu aplicativo pode ter um problema se houver uma conten\u00e7\u00e3o de bloqueio. Um thread pode manter um bloqueio e ter o agendamento cancelado pelo sistema operacional. Ent\u00e3o, todos os threads que quiserem adquirir esse bloqueio ser\u00e3o bloqueados. Uma op\u00e7\u00e3o \u00e9 evitar totalmente o bloqueio sempre que poss\u00edvel, usando opera\u00e7\u00f5es at\u00f4micas. Essas APIs podem ser muito \u00fateis em dados muito contestados.<\/p>\n<p>No entanto, se voc\u00ea realmente precisar de bloqueio e achar que o bloqueio otimista abrange a maioria dos casos de uso dos seus aplicativos, o bloqueio otimista usando CAS no Couchbase Server \u00e9 t\u00e3o f\u00e1cil de implementar que n\u00e3o h\u00e1 motivo para n\u00e3o tentar.<\/p>","protected":false},"excerpt":{"rendered":"<p>Assume that Alice and Joe both read the same data item from Couchbase Server, then they\u00a0both changed the data, and then both tried to write the new versions back to the database.\u00a0Whose changes should be saved? Alice\u2019s? Joe\u2019s? Neither? A [&hellip;]<\/p>","protected":false},"author":4,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8972],"class_list":["post-1752","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Optimistic vs Pessimistic Locking: What Are the Differences?<\/title>\n<meta name=\"description\" content=\"This blog page explains optimistic locking vs. pessimistic locking and the differences between the two, including locking APIs in Couchbase Server.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Optimistic vs Pessimistic Locking \u2013 Which One Should You Pick?\" \/>\n<meta property=\"og:description\" content=\"This blog page explains optimistic locking vs. pessimistic locking and the differences between the two, including locking APIs in Couchbase Server.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T18:50:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-13T02:08:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Don Pinto, Principal Product Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Don Pinto, Principal Product Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/\"},\"author\":{\"name\":\"Don Pinto, Principal Product Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c\"},\"headline\":\"Optimistic vs Pessimistic Locking \u2013 Which One Should You Pick?\",\"datePublished\":\"2014-12-16T18:50:42+00:00\",\"dateModified\":\"2022-11-13T02:08:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/\"},\"wordCount\":1145,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/\",\"name\":\"Optimistic vs Pessimistic Locking: What Are the Differences?\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T18:50:42+00:00\",\"dateModified\":\"2022-11-13T02:08:51+00:00\",\"description\":\"This blog page explains optimistic locking vs. pessimistic locking and the differences between the two, including locking APIs in Couchbase Server.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Optimistic vs Pessimistic Locking \u2013 Which One Should You Pick?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c\",\"name\":\"Don Pinto, Principal Product Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/39c6d6178c73f0dc09af63f930a4f37d\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g\",\"caption\":\"Don Pinto, Principal Product Manager, Couchbase\"},\"description\":\"Don Pinto is a Principal Product Manager at Couchbase and is currently focused on advancing the capabilities of Couchbase Server. He is extremely passionate about data technology, and in the past has authored several articles on Couchbase Server including technical blogs and white papers. Prior to joining Couchbase, Don spent several years at IBM where he maintained the role of software developer in the DB2 information management group and most recently as a program manager on the SQL Server team at Microsoft. Don holds a master's degree in computer science and a bachelor's in computer engineering from the University of Toronto, Canada.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/don-pinto\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Optimistic vs Pessimistic Locking: What Are the Differences?","description":"This blog page explains optimistic locking vs. pessimistic locking and the differences between the two, including locking APIs in Couchbase Server.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/","og_locale":"pt_BR","og_type":"article","og_title":"Optimistic vs Pessimistic Locking \u2013 Which One Should You Pick?","og_description":"This blog page explains optimistic locking vs. pessimistic locking and the differences between the two, including locking APIs in Couchbase Server.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T18:50:42+00:00","article_modified_time":"2022-11-13T02:08:51+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Don Pinto, Principal Product Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Don Pinto, Principal Product Manager, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/"},"author":{"name":"Don Pinto, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c"},"headline":"Optimistic vs Pessimistic Locking \u2013 Which One Should You Pick?","datePublished":"2014-12-16T18:50:42+00:00","dateModified":"2022-11-13T02:08:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/"},"wordCount":1145,"commentCount":6,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/","url":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/","name":"Optimistic vs Pessimistic Locking: What Are the Differences?","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T18:50:42+00:00","dateModified":"2022-11-13T02:08:51+00:00","description":"This blog page explains optimistic locking vs. pessimistic locking and the differences between the two, including locking APIs in Couchbase Server.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Optimistic vs Pessimistic Locking \u2013 Which One Should You Pick?"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c","name":"Don Pinto, gerente principal de produtos da Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/39c6d6178c73f0dc09af63f930a4f37d","url":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","caption":"Don Pinto, Principal Product Manager, Couchbase"},"description":"Don Pinto \u00e9 gerente de produto principal da Couchbase e atualmente est\u00e1 concentrado no avan\u00e7o dos recursos do Couchbase Server. Ele \u00e9 extremamente apaixonado por tecnologia de dados e, no passado, foi autor de v\u00e1rios artigos sobre o Couchbase Server, incluindo blogs t\u00e9cnicos e white papers. Antes de ingressar no Couchbase, Don passou v\u00e1rios anos na IBM, onde ocupou a fun\u00e7\u00e3o de desenvolvedor de software no grupo de gerenciamento de informa\u00e7\u00f5es DB2 e, mais recentemente, como gerente de programa na equipe do SQL Server na Microsoft. Don tem mestrado em ci\u00eancia da computa\u00e7\u00e3o e \u00e9 bacharel em engenharia da computa\u00e7\u00e3o pela Universidade de Toronto, no Canad\u00e1.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/don-pinto\/"}]}},"authors":[{"term_id":8972,"user_id":4,"is_guest":0,"slug":"don-pinto","display_name":"Don Pinto, Principal Product Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","first_name":"Don","last_name":"Pinto, Principal Product Manager, Couchbase","user_url":"","author_category":"","description":"Don Pinto \u00e9 gerente de produto principal da Couchbase e atualmente est\u00e1 concentrado no avan\u00e7o dos recursos do Couchbase Server. Ele \u00e9 extremamente apaixonado por tecnologia de dados e, no passado, foi autor de v\u00e1rios artigos sobre o Couchbase Server, incluindo blogs t\u00e9cnicos e white papers. Antes de ingressar no Couchbase, Don passou v\u00e1rios anos na IBM, onde ocupou a fun\u00e7\u00e3o de desenvolvedor de software no grupo de gerenciamento de informa\u00e7\u00f5es DB2 e, mais recentemente, como gerente de programa na equipe do SQL Server na Microsoft. Don tem mestrado em ci\u00eancia da computa\u00e7\u00e3o e \u00e9 bacharel em engenharia da computa\u00e7\u00e3o pela Universidade de Toronto, no Canad\u00e1."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1752"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1752\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1752"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}