Object Store

Descubra mais sobre o componente Object Store e saiba como utilizá-lo na Digibee Integration Platform.

O Object Store realiza operações para armazenar qualquer documento no Object Store da Digibee. É uma maneira rápida e fácil de salvar informações úteis do tipo JSON, que possui operações para auxiliar em diversos usos durante a criação de um pipeline.

Parâmetros

Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

Boas práticas de utilização

O Object Store é uma base de dados (NoSQL) auxiliar para integrações. Sua utilização confere mais agilidade e praticidade no desenvolvimento de integrações. Para exemplificar a aplicabilidade deste componente, listamos as seguintes boas práticas de utilização:

  • O Object Store desempenha a função de uma base de dados intermediária, isto é, para intermediação de informações entre fluxos de uma integração. Sendo assim, ele deve ser utilizado unicamente para armazenamento de informações relevantes para a integração em questão.

  • O Object Store é uma base de dados temporária. Uma vez utilizado apenas para intermediação de informações pertinentes ao fluxo de integração, dados antigos e dispensáveis devem ser removidos da base de dados periodicamente.

  • Por se tratar de uma base auxiliar, o componente Object Store não deve ser utilizado como uma base de dados permanente, mas sim de maneira pontual, com o objetivo de apoiar o usuário no desenvolvimento das integrações.

  • Todo e qualquer dado é armazenado com o máximo de segurança dentro da Digibee Integration Platform. Ainda assim, recomendamos que dados sensíveis armazenados no Object Store sejam criptografados. Para isso, utilize nossos conectores de criptografia disponíveis no Canvas.

Fluxo de mensagens

Entrada

Para esse componente específico, o único padrão de mensagem de entrada obrigatória é o formato JSON aplicado ao objeto. O parâmetro de entrada pode utilizar a sintaxe de Double Braces para enviar a mensagem recebida para o componente.

Saída

  • Insert

{
    "data": [],
    "updateCount": 1
}
  • Find

{
   "data": [
       {
           "name": "Galaxy s20",
           "uuid": "123",
           "_oId": "1"
       }
   ],
   "rowCount": 1
}
  • Update

{
    "data": [],
    "updateCount": 1
}
  • Delete

{
    "data": [],
    "updateCount": 1
}
  • Aggregate

{
    "data": [],
    "rowCount": 0
}

Object Store em Ação

Acima foram demonstrados alguns exemplos de saída de cada operação. Veja abaixo mais aplicações que demonstram a configuração correta para que se obtenha determinado resultado:

Inserir diversos itens de uma única vez em uma coleção

Ao enviar um array de objetos no campo query, o componente insere cada item de forma separada dentro da coleção selecionada.

Observe como configurar o componente com os parâmetros Operation (Insert), Unique Index (False) e Query:

[
   {
       "id": 1,
       "name": "Galaxy s20",
       "price": 5000
   },
   {
       "id": 2,
       "name": "Samsung 4k 55\"",
       "price": 5000
   },
   {
       "id": 3,
       "name": "Galaxy A10",
       "price": 699
   },
   {
       "id": 4,
       "name": "Galaxy A51",
       "price": 1620
   }
]

Saída

{
    "data": [],
    "updateCount": 4
}

Importante: a inserção de múltiplos objetos de uma só vez é permitida apenas em coleções criadas com Unique Index (False). A propriedade Unique Index é definida na criação da coleção. Depois que o index é criado, não é possível alterar a propriedade.

Encontrar itens a partir de uma determinada query

Como exemplo, considere um Object Store que já possui itens cadastrados do tipo produto e que tem as características de nome e preço.

Observe como configurar o componente com os parâmetros Operation (Find By Query) e Query:

{
    "product.price": { $gt: 2000 }
}

Saída

{
   "data": [
       {
           "product": {
               "id": 1,
               "name": "Galaxy s20",
               "price": 5000
           },
           "_oId": "1"
       },
       {
           "product": {
               "id": 2,
               "name": "Samsung 4k 55\"",
               "price": 5000
           },
           "_oId": "2"
       }
   ],
   "rowCount": 2
}

Encontrar todos os itens a partir de uma query

Como exemplo, considere um Object Store que já possui itens cadastrados do tipo produto e que tem as características de nome e preço.

Observe como configurar o componente com os parâmetros Operation (Find By Query), Limit (10) e Query:

{}

Saída

{
   "data": [
       {
           "product": {
               "id": 1,
               "name": "Galaxy s20",
               "price": 5000
           },
           "_oId": "1"
       },
       {
           "product": {
               "id": 2,
               "name": "Samsung 4k 55\"",
               "price": 5000
           },
           "_oId": "2"
       },
       {
           "product": {
               "id": 3,
               "name": "Galaxy A10",
               "price": 699
           },
           "_oId": "3"
       },
       {
           "product": {
               "id": 4,
               "name": "Galaxy A51",
               "price": 1620
           },
           "_oId": "4"
       }
   ],
   "rowCount": 4
}

Nesse cenário específico, o parâmetro Limit foi configurado para que não haja uma sobrecarga desnecessária ao retornar os objetos de um Object Store. Caso a opção não seja configurada dessa forma, poderá ocorrer um erro de "Out Of Memory" dentro do pipeline. Da maneira indicada, existe controle sobre quantos objetos são visualizados na resposta.

Atualizar um item a partir de um ID específico

Como exemplo, considere um Object Store que já possui itens cadastrados do tipo produto e que possui as características de nome e preço.

Observe como configurar o componente com os parâmetros Operation (Update By Object ID), Object ID (3) e Document:

{
   $set: {
       "product": {
         "id": 3,
         "name": "Galaxy A10",
         "price": 605
       }
   }
}

Saída

{
    "data": [],
    "updateCount": 1
}

Nesse cenário específico, é possível ver que a saída é apenas um objeto identificando a realização de uma atualização. Para visualizar se o objeto foi devidamente atualizado, repita o cenário da busca por ID.

Importante: se o componente Object Store estiver envolvido em atualizações, dentro de um componente de iterações (For Each, Stream File Reader, etc.) e realizando execuções paralelas, pode haver concorrência na atualização de registros caso as instruções de atualização de registros sejam exatamente iguais. Consequentemente, uma instrução retornará "updateCount":1 e a outra "updateCount": 0. Isso acontece quando 2 registros exatamente iguais entram no pool de operação do Object Store e as instruções de atualização ou inserção (com o parâmetro Upsert habilitado) são executadas sequencialmente. A primeira instrução efetiva uma atualização e a segunda encontra o registro já persistido e verifica que não há nada a ser modificado, retornando que nenhuma ação foi necessária ("updateCount": 0).

Remover um item a partir de um ID específico

Como exemplo, considere um Object Store que já possui itens cadastrados do tipo produto e que tem as características de nome e preço.

Observe como configurar o componente com os parâmetros Operation (Delete By Object ID) e Object ID (4).

Saída

{
    "data": [],
    "updateCount": 1
}

Nesse cenário específico, é possível ver que a saída é apenas um objeto identificando a realização de uma atualização. Para visualizar se o objeto foi devidamente removido, repita o cenário da busca por ID.

Agregação para cópia da coleção

Como exemplo, considere um Object Store chamado "product" que já possui itens cadastrados do tipo produto e que tem as características de nome e preço. A partir disso, crie um novo Object Store chamado "product-backup", copiando todos os itens da coleção mencionada acima.

Você deve receber um array de objetos contendo os pipelines de agregação da query no parâmetro Document.

Observe como configurar o componente com os parâmetros Operation (Aggregate) e Query:

[
   {
       $merge: {
           into: "product-backup",
           on: "_id",
           whenMatched: "replace",
           whenNotMatched: "insert"
       }
   }
]

Nesse cenário específico, a query foi configurada para substituir itens repetidos pelos novos na coleção.

Saída

{
    "data": [],
    "rowCount": 0
}

Para verificar se a coleção foi devidamente criada com os itens propostos, repita o cenário da busca por todos os itens e informe a coleção nova.

Agregação para filtro de itens da coleção

Você deve receber um array de objetos contendo os pipelines de agregação da query no parâmetro Document.

Observe como configurar o componente com os parâmetros Operation (Aggregate) e Query:

[
   {
       $match: {
           "product.price": {
               $gt: 3000
           }
       }
   },
   {
       $group: {
           _id: null,
           count: {
               $sum: 1
           }
       }
   }
]

Nesse cenário específico, a query foi configurada para buscar os produtos que possuem determinado valor e apenas apresentar a soma deles.

Saída

{
    "data": [
        {
            "count": 2
        }
    ],
    "rowCount": 0
}

Tecnologia

O Object Store utiliza operadores de busca e agregação de objetos semelhantes à sintaxe do MongoDB. Consulte a documentação externa do MongoDB para saber mais.

Last updated