O Couchbase Capella tem uma nova API de dados. Se você estiver se perguntando por que ela é importante, já que já temos SDKs, a resposta é abordados em nossa documentação - mas aqui está uma comparação rápida:
- API de dados: HTTP, linguagem e tempo de execução agnósticos; fácil integração com dependência zero; além de compensações em recursos de latência, taxa de transferência e resiliência.
- SDKs: Biblioteca nativa, recursos mais avançados, melhor desempenho, mais adequado para cargas de trabalho em que a escala e a resiliência são importantes.
Alguns casos de uso:
- Funções para FaaS/Serverless: AWS Lambda, Google Cloud Functions, Azure Functions, Netlify Functions
- Integrações de SaaS: Zapier, IFTTT, Relay, Make, N8N, Flowwise, Node-RED
- Criação de scripts: Pipeline do Jenkins ou ações do GitHub
- Ferramentas internas: Painel de controle, Grafana
Todos esses casos de uso podem ser implementados, mas exigiriam a implantação e o gerenciamento de sua própria API apoiada pelo SDK do Couchbase ou a garantia de que os SDKs estivessem disponíveis onde o código estivesse sendo executado - o que, em alguns casos, é impossível.
Com isso, vamos ver como tudo isso funciona na prática com um exemplo de caso de uso.
Node-RED Exemplo
O Node-RED permite a programação com pouco código para aplicativos orientados por eventos. Ele é visual, simples, leve e é executado em uma ampla variedade de plataformas de hardware. No entanto, embora seja compatível com o uso de módulos externos, alguns - especialmente aqueles que dependem de bibliotecas nativas, como o nosso Node SDK, podem ser difíceis de usar. Essa é a desculpa perfeita para experimentar a nova API de dados.
Abaixo está um caso de uso simples que tenta extrair dados do luma para saber o que está acontecendo em Paris. Você pode ver os resultados abaixo. Observe que o fluxo de nível superior é a ingestão e o segundo é a consulta de depuração.

Fluxo de ingestão
- Início: Um nó de ingestão que aciona isso a cada 72 horas.
- Consultar luma: Uma solicitação HTTP para https://luma.com/paris.
- Extrair eventos: Um analisador de HTML para recuperar a lista de eventos como String.
- Converta para JSON: Um analisador JSON para transformar essa String em um objeto JSON.
- Parse_to_events: Uma função que pega esse objeto e cria um novo com apenas os dados necessários.
O código tem a seguinte aparência:
|
1 2 |
var newMsg = { payload: msg.payload[0].content.props.pageProps.initialData.data.events }; return newMsg; |
- forEach: Uma tarefa Split que divide o objeto JSON de eventos da etapa anterior.
- Criar evento no Couchbase: Uma solicitação HTTP é enviada para o API de dados da Capella. O que estiver no payload da etapa anterior será o corpo da solicitação. Você pode usar o modelo Mustache para o campo URL. Aqui está uma captura de tela da etapa real; é como executar este comando curl:
|
1 2 3 |
curl -X PUT --user api:**** -H 'Content-Type: application/json' -d '{"event":"data",...}' https://snzd9hz3unnntl7.data.cloud.couchbase.com/v1/buckets/events/scopes/paris/collections/luma/documents/fd5hds83 |

- Debug1: Uma etapa de depuração para ver os resultados de todas as solicitações.
Fluxo de depuração
- Início: Um nó de ingestão que deve ser acionado manualmente.
- SQL_Query: Uma função que retorna um objeto JSON que representa a consulta a ser executada.
|
1 2 3 |
var query = { statement: "SELECT * FROM events.paris.luma ;" } var newMsg = { payload: query }; return newMsg |

- Consultar eventos no Couchbase: Uma solicitação HTTP que executa a consulta fornecida. Ela se pareceria com o seguinte comando curl:
|
1 2 3 |
curl -X POST --user api:**** -H 'Content-Type: application/json' -d '{ statement: "SELECT * FROM events.paris.luma ;" }' https://snzd9hz3unnntl7.data.cloud.couchbase.com/_p/query/query/service |

Experimente você mesmo
O Node-RED pode ser facilmente executado em sua máquina com docker run -it -p 1880:1880 --name mynodered nodered/node-red
Em seguida, vá para http://127.0.0.1:1880/ e siga as instruções. Você pode criar os nós manualmente ou importar esse fluxo com essa exportação JSON:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 |
[ { "id":"f6f2187d.f17ca8", "type":"tab", "label":"Event Ingestion", "disabled":false, "info":"" }, { "id":"5039574f789798bf", "type":"inject", "z":"f6f2187d.f17ca8", "name":"Start", "props":[ { "p":"payload" }, { "p":"topic", "vt":"str" } ], "repeat":"259200", "crontab":"", "once":false, "onceDelay":0.1, "topic":"", "payload":"", "payloadType":"date", "x":90, "y":60, "wires":[ [ "a7e82076addaf2bf" ] ] }, { "id":"65dcb4aeead12a54", "type":"debug", "z":"f6f2187d.f17ca8", "name":"debug 1", "active":true, "tosidebar":true, "console":false, "tostatus":false, "complete":"payload", "targetType":"msg", "statusVal":"", "statusType":"auto", "x":580, "y":120, "wires":[ ] }, { "id":"a7e82076addaf2bf", "type":"http request", "z":"f6f2187d.f17ca8", "name":"Query Luma", "method":"GET", "ret":"txt", "paytoqs":"ignore", "url":"https://luma.com/paris", "tls":"", "persist":false, "proxy":"", "insecureHTTPParser":false, "authType":"", "senderr":false, "headers":[ ], "x":290, "y":60, "wires":[ [ "c463b094ea88ec73" ] ] }, { "id":"c463b094ea88ec73", "type":"html", "z":"f6f2187d.f17ca8", "name":"Extract Events", "property":"payload", "outproperty":"payload", "tag":"#__NEXT_DATA__", "ret":"compl", "as":"single", "chr":"content", "x":480, "y":60, "wires":[ [ "3be4c6d9e4554672" ] ] }, { "id":"3be4c6d9e4554672", "type":"json", "z":"f6f2187d.f17ca8", "name":"Convert to JSON", "property":"payload[0].content", "action":"obj", "pretty":true, "x":690, "y":60, "wires":[ [ "9b66605f179021d0" ] ] }, { "id":"9b66605f179021d0", "type":"function", "z":"f6f2187d.f17ca8", "name":"parse_to_events", "func":"var newMsg = { payload: msg.payload[0].content.props.pageProps.initialData.data.events };\nreturn newMsg;", "outputs":1, "timeout":0, "noerr":0, "initialize":"", "finalize":"", "libs":[ ], "x":900, "y":60, "wires":[ [ "1924a3c26b9520bd" ] ] }, { "id":"1924a3c26b9520bd", "type":"split", "z":"f6f2187d.f17ca8", "name":"foreach", "splt":"1", "spltType":"len", "arraySplt":1, "arraySpltType":"len", "stream":true, "addname":"", "property":"payload", "x":120, "y":120, "wires":[ [ "7e3a02b180875fed" ] ] }, { "id":"7e3a02b180875fed", "type":"http request", "z":"f6f2187d.f17ca8", "name":"create event in couchbase", "method":"PUT", "ret":"txt", "paytoqs":"query", "url":"https://snzd9hz3unnntl7.data.cloud.couchbase.com/v1/buckets/events/scopes/paris/collections/luma/documents/{{{payload.event.url}}}", "tls":"", "persist":true, "proxy":"", "insecureHTTPParser":false, "authType":"basic", "senderr":false, "headers":[ ], "x":370, "y":120, "wires":[ [ "65dcb4aeead12a54" ] ] }, { "id":"f309559bde533ab6", "type":"inject", "z":"f6f2187d.f17ca8", "name":"Start", "props":[ { "p":"payload" }, { "p":"topic", "vt":"str" } ], "repeat":"", "crontab":"", "once":false, "onceDelay":0.1, "topic":"", "payload":"", "payloadType":"date", "x":90, "y":200, "wires":[ [ "49244e9d100517aa" ] ] }, { "id":"7945b9a86fa49919", "type":"http request", "z":"f6f2187d.f17ca8", "name":"query events in couchbase", "method":"POST", "ret":"txt", "paytoqs":"query", "url":"https://snzd9hz3unnntl7.data.cloud.couchbase.com/_p/query/query/service", "tls":"", "persist":true, "proxy":"", "insecureHTTPParser":false, "authType":"basic", "senderr":false, "headers":[ { "keyType":"other", "keyValue":"Accept", "valueType":"other", "valueValue":"application/json" } ], "x":520, "y":200, "wires":[ [ "24b1dd899b6d2ef1" ] ] }, { "id":"24b1dd899b6d2ef1", "type":"debug", "z":"f6f2187d.f17ca8", "name":"debug 2", "active":true, "tosidebar":true, "console":false, "tostatus":false, "complete":"payload", "targetType":"msg", "statusVal":"", "statusType":"auto", "x":740, "y":200, "wires":[ ] }, { "id":"49244e9d100517aa", "type":"function", "z":"f6f2187d.f17ca8", "name":"SQL Query", "func":"var query = { statement: \"SELECT * FROM events.paris.luma ;\" }\nvar newMsg = { payload: query };\nreturn newMsg", "outputs":1, "timeout":0, "noerr":0, "initialize":"", "finalize":"", "libs":[ ], "x":270, "y":200, "wires":[ [ "7945b9a86fa49919" ] ] } ] |
Você precisará de uma instância do Capella com a API de dados ativada. Ela está disponível em nossa camada gratuita e é fácil de testar. Basta ir para cloud.couchbase.com, Abra seu cluster e vá para a guia conectar. Em seguida, você clicará em Ativar a API de dados. Isso pode levar até 20 minutos para ficar pronto, portanto, enquanto isso, você pode seguir as instruções sobre endereços IP e credenciais.
Agora você tem tudo o que precisa para usar a API de dados, especificamente o endpoint de URL da API. Você também pode acessar o Documentação de referência para obter mais informações.
Esperamos que você aproveite esse novo recurso do Capella e todos os casos de uso que agora estão disponíveis para você.