{"id":3751,"date":"2017-06-15T07:05:16","date_gmt":"2017-06-15T14:05:16","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3751"},"modified":"2025-06-13T21:28:56","modified_gmt":"2025-06-14T04:28:56","slug":"getting-started-nosql-using-couchbase-server-php","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/getting-started-nosql-using-couchbase-server-php\/","title":{"rendered":"Primeiros passos com NoSQL usando o Couchbase Server e PHP"},"content":{"rendered":"<p>H\u00e1 alguns dias, escrevi sobre <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/deploy-php-couchbase-application-docker-containers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Usando PHP com Docker e Couchbase<\/a>mas nunca me aprofundei nas pr\u00e1ticas recomendadas para usar PHP e bancos de dados NoSQL. Por exemplo, como voc\u00ea l\u00ea e grava dados com o Couchbase Server usando PHP? O que acontece quando voc\u00ea precisa criar algumas consultas avan\u00e7adas ou criar \u00edndices de alto desempenho?<\/p>\n<p>Veremos alguns exemplos de uso do <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/server\/\" target=\"_blank\" rel=\"noopener noreferrer\">Servidor Couchbase<\/a> com PHP, uma extens\u00e3o do tutorial anterior sobre como colocar o banco de dados e o aplicativo da Web em cont\u00eaineres.<\/p>\n<p><!--more--><\/p>\n<p>Enquanto o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/deploy-php-couchbase-application-docker-containers\/\" target=\"_blank\" rel=\"noopener noreferrer\">tutorial anterior<\/a> \u00e9 incrivelmente \u00fatil para o desenvolvimento de microsservi\u00e7os, mas n\u00e3o \u00e9 um pr\u00e9-requisito para o material que discutiremos a seguir.<\/p>\n<p>Supondo que voc\u00ea tenha algum ambiente PHP configurado e pronto para servir aplicativos, precisamos obter o Couchbase PHP SDK para comunica\u00e7\u00e3o com nosso banco de dados. Se voc\u00ea estiver usando o Debian ou o Ubuntu, execute o seguinte:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">wget https:\/\/packages.couchbase.com\/releases\/couchbase-release\/couchbase-release-1.0-2-amd64.deb\r\nsudo dpkg -i couchbase-release-1.0-2-amd64.deb\r\nrm couchbase-release-1.0-2-amd64.deb\r\nsudo apt-get update\r\nsudo apt-get install libcouchbase-dev build-essential php5-dev zlib1g-dev\r\nsudo pecl install pcs-1.3.3\r\nsudo pecl install couchbase<\/pre>\n<p>Os comandos do Terminal acima foram retirados do manual oficial do C<a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/sdk\/php\/start-using-sdk.html\" target=\"_blank\" rel=\"noopener noreferrer\">Documenta\u00e7\u00e3o do ouchbase PHP<\/a>. Primeiro, o SDK \u00e9 baixado e instalado, seguido por v\u00e1rios pacotes Debian que s\u00e3o necess\u00e1rios. Por fim, a extens\u00e3o do Couchbase \u00e9 baixada e seu pacote\u00a0<code>pe\u00e7as<\/code> depend\u00eancia.<\/p>\n<p>Depois que as depend\u00eancias forem instaladas, adicione o seguinte ao seu\u00a0<strong>php.ini<\/strong> file:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">extension=couchbase.so<\/pre>\n<p>Se estiver usando um ambiente diferente do Debian ou Ubuntu para hospedar seu aplicativo PHP, consulte a documenta\u00e7\u00e3o para obter outras etapas de instala\u00e7\u00e3o do SDK.<\/p>\n<h2>Execu\u00e7\u00e3o de opera\u00e7\u00f5es CRUD com o Couchbase Server e PHP<\/h2>\n<p>O Couchbase, em sua forma mais simples, \u00e9 um banco de dados de valor-chave. Com isso em mente, podemos fazer opera\u00e7\u00f5es como leitura, grava\u00e7\u00e3o, substitui\u00e7\u00e3o e exclus\u00e3o (CRUD), todas baseadas na chave de um determinado documento.<\/p>\n<p>Veja o seguinte c\u00f3digo PHP, por exemplo:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">openBucket(\"default\", \"\");\r\n\r\n    try {\r\n        $result = $bucket-&gt;get(\"nraboy\");\r\n    } catch (CouchbaseException $e) {\r\n        $bucket-&gt;insert(\"nraboy\", array(\r\n            \"firstname\" =&gt; \"Nic\",\r\n            \"lastname\" =&gt; \"Raboy\",\r\n            \"social_media\" =&gt; array(\r\n                \"twitter\" =&gt; \"https:\/\/www.twitter.com\/nraboy\",\r\n                \"website\" =&gt; \"https:\/\/www.thepolyglotdeveloper.com\"\r\n            )\r\n        ));\r\n        $result = $bucket-&gt;get(\"nraboy\");\r\n    }\r\n\r\n    echo json_encode($result-&gt;value);\r\n\r\n?&gt;<\/pre>\n<p>O c\u00f3digo acima pressup\u00f5e que todos os dados impressos estar\u00e3o no formato JSON. Primeiro nos conectamos a um cluster do Couchbase, neste caso um \u00fanico n\u00f3 localizado em nossa m\u00e1quina local. Por m\u00e1quina local, quero dizer que, nesse cen\u00e1rio, o Couchbase e o PHP est\u00e3o operando no mesmo servidor.<\/p>\n<p>Depois que uma conex\u00e3o \u00e9 estabelecida, podemos abrir um determinado Bucket que usaremos para armazenar dados em nosso aplicativo e ler dados. O Bucket neste exemplo \u00e9 denominado\u00a0<code>padr\u00e3o<\/code> e n\u00e3o tem senha.<\/p>\n<p>\u00c9 aqui que as coisas ficam interessantes:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">try {\r\n    $result = $bucket-&gt;get(\"nraboy\");\r\n} catch (CouchbaseException $e) {\r\n    $bucket-&gt;insert(\"nraboy\", array(\r\n        \"firstname\" =&gt; \"Nic\",\r\n        \"lastname\" =&gt; \"Raboy\",\r\n        \"social_media\" =&gt; array(\r\n            \"twitter\" =&gt; \"https:\/\/www.twitter.com\/nraboy\",\r\n            \"website\" =&gt; \"https:\/\/www.thepolyglotdeveloper.com\"\r\n        )\r\n    ));\r\n    $result = $bucket-&gt;get(\"nraboy\");\r\n}<\/pre>\n<p>Primeiro, tentamos obter um determinado documento em nosso Bucket pelo nome da chave. Se for lan\u00e7ado um erro por motivos como a inexist\u00eancia dessa chave, n\u00f3s o detectaremos e tentaremos criar um novo documento com essa chave.<\/p>\n<p>Os dados inseridos podem ser t\u00e3o complexos quanto voc\u00ea desejar. No Couchbase, eles s\u00e3o armazenados como JSON e s\u00e3o flex\u00edveis, ao contr\u00e1rio das alternativas de bancos de dados relacionais.<\/p>\n<p>Depois de ler os dados com \u00eaxito, podemos tentar imprimi-los de volta ao cliente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">echo json_encode($result-&gt;value);<\/pre>\n<p>Se quis\u00e9ssemos, poder\u00edamos usar outros comandos do SDK, como\u00a0<code>substituir<\/code> ou\u00a0<code>remover<\/code> dependendo de nossas necessidades. No entanto, na maioria das vezes, estaremos trabalhando com grandes quantidades de dados em que talvez n\u00e3o saibamos todas as chaves para consulta.<\/p>\n<p>\u00c9 aqui que o N1QL e o PHP podem se unir.<\/p>\n<h2>Execu\u00e7\u00e3o de consultas SQL em NoSQL com PHP e N1QL<\/h2>\n<p>Se esta \u00e9 a primeira vez que voc\u00ea ouve falar do N1QL, trata-se de uma sintaxe SQL que funciona com dados JSON no Couchbase. Isso significa que, se voc\u00ea conhece SQL de um banco de dados relacional como o Postgres, saber\u00e1 a maior parte do N1QL.<\/p>\n<p>Vamos usar o exemplo anterior de CRUD e prepar\u00e1-lo para o N1QL:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">openBucket($bucketName, \"\");\r\n\r\n    try {\r\n        $query = CouchbaseN1qlQuery::fromString(\"CREATE INDEX `people` ON `$bucketName` (lastname)\");\r\n        $bucket-&gt;query($query);\r\n    } catch (CouchbaseException $e) {\r\n        printf(\"N\u00e3o foi poss\u00edvel criar o \u00edndice. Talvez ele j\u00e1 exista? (c\u00f3digo: %d)\\n\", $e-&gt;getCode());\r\n    }\r\n\r\n    $query = CouchbaseN1qlQuery::fromString(\"SELECT firstname, lastname, social_media FROM `$bucketName` WHERE lastname = \\$lastname\");\r\n    $query-&gt;namedParams(array(\"lastname\" =&gt; \"Raboy\"));\r\n    $result = $bucket-&gt;query($query);\r\n\r\n    Se(empty($result-&gt;rows)) {\r\n        $data = array(\r\n            \"firstname\" =&gt; \"Nic\",\r\n            \"lastname\" =&gt; \"Raboy\",\r\n            \"social_media\" =&gt; array(\r\n                \"twitter\" =&gt; \"https:\/\/www.twitter.com\/nraboy\",\r\n                \"website\" =&gt; \"https:\/\/www.thepolyglotdeveloper.com\"\r\n            )\r\n        );\r\n        $query = CouchbaseN1qlQuery::fromString(\"INSERT INTO `$bucketName` (KEY, VALUE) VALUES ('nraboy', \" . json_encode($data) . \")\");\r\n        $bucket-&gt;query($query);\r\n        $query = CouchbaseN1qlQuery::fromString(\"SELECT firstname, lastname, social_media FROM `$bucketName` WHERE lastname = \\$lastname\");\r\n        $query-&gt;namedParams(array(\"lastname\" =&gt; \"Raboy\"));\r\n        $query-&gt;consistency(CouchbaseN1qlQuery::REQUEST_PLUS);\r\n        $result = $bucket-&gt;query($query);\r\n    }\r\n\r\n    echo json_encode($result-&gt;rows);\r\n\r\n?&gt;<\/pre>\n<p>Como no exemplo anterior, estamos estabelecendo uma conex\u00e3o e abrindo um determinado Bucket NoSQL. Como planejamos consultar os documentos no banco de dados por valores diferentes de suas chaves, precisamos criar \u00edndices.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">try {\r\n    $query = CouchbaseN1qlQuery::fromString(\"CREATE INDEX `people` ON `$bucketName` (lastname)\");\r\n    $bucket-&gt;query($query);\r\n} catch (CouchbaseException $e) {\r\n    printf(\"N\u00e3o foi poss\u00edvel criar o \u00edndice. Talvez ele j\u00e1 exista? (c\u00f3digo: %d)\\n\", $e-&gt;getCode());\r\n}<\/pre>\n<p>O procedimento acima cria um \u00edndice que estamos chamando de\u00a0<code>pessoas<\/code> que indexa o\u00a0<code>sobrenome<\/code> propriedade de documentos dentro do\u00a0<code>padr\u00e3o<\/code> Bucket. Isso significa que poderemos consultar todos os documentos com base em um\u00a0<code>sobrenome<\/code> valor.<\/p>\n<p>Se o \u00edndice j\u00e1 existir, receberemos uma exce\u00e7\u00e3o, e \u00e9 por isso que estamos tentando captur\u00e1-la.<\/p>\n<p>Com o \u00edndice instalado, queremos tentar consultar os documentos:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$query = CouchbaseN1qlQuery::fromString(\"SELECT firstname, lastname, social_media FROM `$bucketName` WHERE lastname = \\$lastname\");\r\n$query-&gt;namedParams(array(\"lastname\" =&gt; \"Raboy\"));\r\n$result = $bucket-&gt;query($query);<\/pre>\n<p>No exemplo acima, estamos construindo uma consulta para v\u00e1rias propriedades dentro de documentos que atendem \u00e0 l\u00f3gica condicional do\u00a0<code>ONDE<\/code> cl\u00e1usula. Se n\u00e3o quis\u00e9ssemos definir cada propriedade, poder\u00edamos ter usado facilmente o caractere asterisco.<\/p>\n<p>Assim como em um banco de dados relacional, os bancos de dados NoSQL podem ser v\u00edtimas de ataques de inje\u00e7\u00e3o de SQL, e \u00e9 por isso que estamos usando uma consulta parametrizada. Isso nos permite dividir em par\u00e2metros os dados que s\u00e3o potencialmente gerados pelo usu\u00e1rio. Esses dados podem ter sido enviados por meio de um formul\u00e1rio.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">se(empty($result-&gt;rows)) {\r\n    $data = array(\r\n        \"firstname\" =&gt; \"Nic\",\r\n        \"lastname\" =&gt; \"Raboy\",\r\n        \"social_media\" =&gt; array(\r\n            \"twitter\" =&gt; \"https:\/\/www.twitter.com\/nraboy\",\r\n            \"website\" =&gt; \"https:\/\/www.thepolyglotdeveloper.com\"\r\n        )\r\n    );\r\n    $query = CouchbaseN1qlQuery::fromString(\"INSERT INTO `$bucketName` (KEY, VALUE) VALUES ('nraboy', \" . json_encode($data) . \")\");\r\n    $bucket-&gt;query($query);\r\n    $query = CouchbaseN1qlQuery::fromString(\"SELECT firstname, lastname, social_media FROM `$bucketName` WHERE lastname = \\$lastname\");\r\n    $query-&gt;namedParams(array(\"lastname\" =&gt; \"Raboy\"));\r\n    $query-&gt;consistency(CouchbaseN1qlQuery::REQUEST_PLUS);\r\n    $result = $bucket-&gt;query($query);\r\n}<\/pre>\n<p>Se os resultados da consulta anterior retornarem como uma matriz vazia, isso significa que nenhum documento foi encontrado com esse crit\u00e9rio. Se a matriz estiver vazia, queremos criar novos dados de modo semelhante ao que fizemos no exemplo anterior. Desta vez, estamos criando dados por meio de uma consulta N1QL e um\u00a0<code>INSERIR<\/code> declara\u00e7\u00e3o.<\/p>\n<p>Depois que os dados s\u00e3o inseridos, queremos consult\u00e1-los. O problema aqui \u00e9 que estamos consultando com base em um \u00edndice e esse \u00edndice pode n\u00e3o ter sido atualizado ainda. Para garantir que receberemos os dados mais recentes, podemos definir a consist\u00eancia da consulta e aguardar at\u00e9 que o \u00edndice seja atualizado.<\/p>\n<p>Por fim, imprimimos o resultado na tela.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Voc\u00ea acabou de receber uma r\u00e1pida introdu\u00e7\u00e3o ao uso de aplicativos de exemplo NoSQL e PHP executados em <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/\" target=\"_blank\" rel=\"noopener noreferrer\">Couchbase<\/a>. Nos exemplos que vimos, era tudo CRUD ou tudo N1QL. Voc\u00ea n\u00e3o \u00e9, de forma alguma, obrigado a usar um ou outro. Voc\u00ea pode usar CRUD e N1QL no mesmo aplicativo.<\/p>\n<p>O Docker funciona muito bem para criar cont\u00eaineres de microsservi\u00e7o usando este exemplo. Para ver como colocar esse aplicativo em cont\u00eaineres, confira o tutorial anterior que escrevi, intitulado, <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/deploy-php-couchbase-application-docker-containers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Implantar um aplicativo PHP com Couchbase como cont\u00eaineres do Docker<\/a>.<\/p>\n<p>Se voc\u00ea quiser obter mais informa\u00e7\u00f5es sobre como usar o SDK PHP do Couchbase, consulte a se\u00e7\u00e3o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Portal do desenvolvedor do Couchbase<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>A few days ago I wrote about using PHP with Docker and Couchbase, but I never really got into best practices of going all in with PHP and NoSQL databases. For example, how do you read and write data with [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,9408,1812],"tags":[1725],"ppma_author":[9032],"class_list":["post-3751","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-php","category-n1ql-query","tag-nosql-database"],"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>Getting Started with NoSQL Using Couchbase Server and PHP<\/title>\n<meta name=\"description\" content=\"Learn how to get started using NoSQL in your PHP applications with Couchbase Server, N1QL queries, and the Couchbase PHP SDK.\" \/>\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\/getting-started-nosql-using-couchbase-server-php\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting Started with NoSQL Using Couchbase Server and PHP\" \/>\n<meta property=\"og:description\" content=\"Learn how to get started using NoSQL in your PHP applications with Couchbase Server, N1QL queries, and the Couchbase PHP SDK.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/getting-started-nosql-using-couchbase-server-php\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-15T14:05:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:28:56+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, 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\/getting-started-nosql-using-couchbase-server-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Getting Started with NoSQL Using Couchbase Server and PHP\",\"datePublished\":\"2017-06-15T14:05:16+00:00\",\"dateModified\":\"2025-06-14T04:28:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/\"},\"wordCount\":985,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"NoSQL Database\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"PHP\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/\",\"name\":\"Getting Started with NoSQL Using Couchbase Server and PHP\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-06-15T14:05:16+00:00\",\"dateModified\":\"2025-06-14T04:28:56+00:00\",\"description\":\"Learn how to get started using NoSQL in your PHP applications with Couchbase Server, N1QL queries, and the Couchbase PHP SDK.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#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\/getting-started-nosql-using-couchbase-server-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with NoSQL Using Couchbase Server and PHP\"}]},{\"@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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Primeiros passos com NoSQL usando o Couchbase Server e PHP","description":"Learn how to get started using NoSQL in your PHP applications with Couchbase Server, N1QL queries, and the Couchbase PHP SDK.","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\/getting-started-nosql-using-couchbase-server-php\/","og_locale":"pt_BR","og_type":"article","og_title":"Getting Started with NoSQL Using Couchbase Server and PHP","og_description":"Learn how to get started using NoSQL in your PHP applications with Couchbase Server, N1QL queries, and the Couchbase PHP SDK.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/getting-started-nosql-using-couchbase-server-php\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-06-15T14:05:16+00:00","article_modified_time":"2025-06-14T04:28:56+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Getting Started with NoSQL Using Couchbase Server and PHP","datePublished":"2017-06-15T14:05:16+00:00","dateModified":"2025-06-14T04:28:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/"},"wordCount":985,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["NoSQL Database"],"articleSection":["Best Practices and Tutorials","Couchbase Server","PHP","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/","url":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/","name":"Primeiros passos com NoSQL usando o Couchbase Server e PHP","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-06-15T14:05:16+00:00","dateModified":"2025-06-14T04:28:56+00:00","description":"Learn how to get started using NoSQL in your PHP applications with Couchbase Server, N1QL queries, and the Couchbase PHP SDK.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-nosql-using-couchbase-server-php\/#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\/getting-started-nosql-using-couchbase-server-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting Started with NoSQL Using Couchbase Server and PHP"}]},{"@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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, defensor dos desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","first_name":"Nic","last_name":"Raboy","user_url":"https:\/\/www.thepolyglotdeveloper.com","author_category":"","description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3751","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\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=3751"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3751\/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=3751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=3751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=3751"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=3751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}