As operações de pipeline do Firestore são um recurso central da edição Enterprise do Firestore, criadas em um novo mecanismo de consulta para expandir significativamente o intervalo de consultas possíveis. As operações de pipeline do Firestore usam uma sintaxe de consulta flexível e um método de indexação distinto em que os índices são opcionais e não são criados automaticamente, permitindo operações avançadas de recuperação de dados para aplicativos.
Recursos das operações do pipeline do Firestore
A edição Enterprise do Firestore e as novas operações de pipeline usam um novo mecanismo de consulta avançado que remove muitas limitações da edição Standard do Firestore. As operações de pipeline do Firestore oferecem mais de 120 novos recursos de consulta. As operações de pipeline do Firestore têm os seguintes recursos:
Sintaxe combinável baseada em estágios
As consultas de pipeline são criadas definindo uma série de estágios sequenciais que são executados em ordem. Isso permite operações complexas, como filtrar o resultado de uma agregação, o que não era possível antes.
O exemplo a seguir mostra uma consulta de pipeline que encontra o número de IDs de produtos exclusivos visualizados no último mês:
guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
return
}
let snapshot = try await db.pipeline()
.collection("productViews")
.where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
.aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
.execute()
Recursos ampliados
A consulta de pipelines apresenta vários recursos novos, incluindo:
- Agregações: suporte para novas funções de agregação (como
sum(...),min(...)ecount_distinct(...)) combinadas com campos de agrupamento arbitrários. - Filtragem complexa: suporte para mais de 120 novas funções para expressar instruções
where(...)arbitrariamente complexas, incluindoregex_match(...),add(...)estr_contains(...), tudo sem requisitos de índice rígidos. - Leituras / projeções parciais: recupere subconjuntos dinâmicos de documentos usando
select(...),remove_fields(...)e muitas outras etapas de manipulação de documentos.
Suporte em tempo real e off-line
Para usar o suporte em tempo real ou off-line, os desenvolvedores podem usar as operações principais do Firestore na edição Enterprise do Firestore.
Integração de clientes e ferramentas
A edição Enterprise inclui recursos especializados para interagir com consultas de pipeline e gerenciá-las:
- Explicação e criação de perfil de consultas: use os resultados do Query Explain para entender quantas unidades de leitura ou gravação uma consulta consome e analisar a execução dela.
- Insights de consulta : a edição Enterprise é compatível com o Query Insights, que ajuda a determinar onde os índices podem ser criados para melhorar a performance e o custo, oferecendo visibilidade das características de performance da consulta.
- Novos tipos de índice : é possível criar índices especializados para a edição Enterprise, incluindo índices esparsos. Ele também permite criar e editar índices de pesquisa vetorial para bancos de dados empresariais.
Diferenças entre o Firestore Standard e o Firestore Enterprise
A principal diferença operacional entre as operações principais e de pipeline está no gerenciamento da indexação, que afeta diretamente o desempenho e o custo.
| Firestore Standard: operações principais | Firestore Enterprise: operações principais e de pipeline | |
| Requisito de indexação | Os índices são obrigatórios para consultas.
Os índices para campos individuais são criados automaticamente, enquanto as consultas mais complexas dependem de índices compostos ou de grupo de coleções que precisam ser configurados manualmente. |
Os índices não são necessários e, portanto, são opcionais para consultas.
Você define os índices conforme necessário. A edição Enterprise também oferece suporte a uma variedade maior de tipos de índice, incluindo não esparso/esparso e índices exclusivos. |
| Risco de performance | Consultas indexadas: o desempenho e o custo são escalonados com o tamanho do conjunto de resultados. |
Consultas não indexadas: o desempenho e o custo são escalonados com o tamanho do conjunto de dados. Consultas indexadas: o desempenho e o custo são escalonados com o tamanho do conjunto de resultados. Recomendamos usar as ferramentas Explicação da consulta e Query Insights para criar índices e melhorar a performance e o custo das suas consultas. |
| Implicação de custo de armazenamento | Você incorre em sobrecarga de armazenamento de índices automáticos e compostos. | Você economiza em custos de armazenamento porque os índices não são criados automaticamente para todos os campos. |
| Base de custo | Cobrança por operação de leitura, gravação e exclusão de documento. | Cobrado por unidade de leitura (blocos de 4 KB) e unidade de gravação (blocos de 1 KB). A gravação de entradas de índice consome unidades de gravação.
Confira alguns exemplos dos novos preços. |
| Regras de segurança | As regras de segurança protegem as coleções verificando as permissões de leitura/gravação. | As regras de segurança protegem as coleções verificando as permissões de leitura/gravação. Saiba como modelar seus dados para oferecer suporte a consultas de pipeline no guia Modelo de dados. |