# Limites do KV Store

O [KV Store](/pt-br/documentacao/plataforma/kv-store/) limita o nome que um namespace recebe, o número de namespaces que uma requisição de listagem retorna e o que uma conta pode alterar depois que um namespace existe. Esta página indica cada limite, a resposta que a plataforma retorna acima dele e o armazenamento e as chaves que uma conta inclui em cada medidor de cobrança. KV Store é um produto em Preview em todos os planos de serviço, e não vem habilitado por padrão. Nos planos Hobby e Pro, o acesso é solicitado e aprovado caso a caso; no Enterprise, é combinado com a conta. Para solicitar acesso, entre em contato com o time de [Suporte Técnico](/pt-br/documentacao/suporte/).

---

## Limites padrão

O KV Store aplica cada limite abaixo em todos os planos de serviço. Uma requisição rejeitada chega em um de dois envelopes de erro, e qual deles chega depende do que a rejeitou. O serviço KV responde a uma falha de validação com `state` definido como `error` e um objeto `error` que carrega um `code` em snake\_case e uma `message`. O gateway da plataforma responde a um método não suportado com um array `errors` que carrega um `code` numérico e um `title`. A coluna Acima do limite indica o status, o código e o texto que cada um retorna.

| Escopo                                                | Limite                                                                                                                          | Acima do limite                                                                                                                                              |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Tamanho do nome do namespace (`name`)                 | 3 a 63 caracteres                                                                                                               | `400` `validation_error`, com `Name must be at least 3 characters long` abaixo de 3 caracteres e `Name must be no more than 63 characters long` acima de 63. |
| Caracteres do nome do namespace                       | Letras, números, o hífen (`-`) e o underscore (`_`), conforme `^[a-zA-Z0-9_-]+$`. Os nomes diferenciam maiúsculas de minúsculas | `400` `validation_error`, `Name can only contain alphanumeric characters, hyphens and underscores`.                                                          |
| Unicidade do nome do namespace                        | Um único nome por conta                                                                                                         | `400` `validation_error`, `Namespace already exists`.                                                                                                        |
| Namespaces por resposta de listagem (`page_size`)     | 1 a 100, padrão 50                                                                                                              | `400` `invalid_page_size`, `Page size must be between 1 and 100`.                                                                                            |
| Renomear, desativar, esvaziar ou excluir um namespace | Não suportado. Um namespace é permanente                                                                                        | `PUT`, `PATCH` e `DELETE` respondem `405` `10007`, com o título `Method Not Allowed`.                                                                        |

Uma requisição de criação que não carrega `name`, ou que define `name` como uma string vazia, é rejeitada da mesma forma: `400` `validation_error`, com a mensagem `Name is required`. Letras maiúsculas passam por todas as verificações da tabela acima, então um nome é aceito em qualquer caixa. Minúsculas são uma convenção, e não uma regra, e [Boas práticas](/pt-br/documentacao/plataforma/kv-store/boas-praticas/) tratam disso.

O nome é o identificador do namespace e é somente leitura depois que o namespace existe. Como nenhuma interface remove um namespace, todo nome que uma conta cria permanece nessa conta, e um nome mal escolhido não pode ser corrigido no lugar. Para as três operações a que os limites acima se aplicam, consulte [Namespaces](/pt-br/documentacao/plataforma/kv-store/namespaces/).

---

## Limites de keys e values

Os limites abaixo se aplicam aos dados que uma função armazena, e não ao namespace que os guarda.

| Escopo                     | Limite                                |
| -------------------------- | ------------------------------------- |
| Tamanho da key             | Até 512 bytes, codificados em UTF-8   |
| Tamanho do value           | Até 25 MB por item                    |
| Tamanho do metadata        | Até 1.024 bytes, serializados em JSON |
| Gravações em uma mesma key | 1 gravação por segundo na mesma key   |
| `expirationTtl` mínimo     | 60 segundos                           |
| `cacheTtl` mínimo          | 60 segundos                           |

O cliente não aplica nenhum deles. Ele verifica que `expirationTtl` e `expiration` são números e que `metadata` é uma string ou um objeto, e repassa o resto, então um value acima de um desses limites é rejeitado pela plataforma, e não pelo código que o enviou. Para o que cada opção faz, consulte [Cliente KV](/pt-br/documentacao/devtools/runtime/api-reference/kv-store/).

---

## Limites por plano

| Teto                    | Hobby | Pro   | Enterprise |
| ----------------------- | ----- | ----- | ---------- |
| Namespaces por conta    | 1.000 | 1.000 | 1.000      |
| Armazenamento por conta | 5 GB  | 50 GB | 300 GB     |

O teto de armazenamento é o máximo que uma conta guarda de uma vez. Ele é diferente do armazenamento que um plano inclui antes de uma cobrança se aplicar, que a próxima seção indica.

---

## Uso incluído

O KV Store é cobrado por três métricas: Storage, Keys Read e Keys Written. Cada conta inclui uma quantidade de cada métrica antes que uma cobrança se aplique, e as três quantidades são fixas: não variam por plano de serviço.

| Métrica      | Incluído               | O que conta                                |
| ------------ | ---------------------- | ------------------------------------------ |
| Storage      | 1 GB por mês           | Os dados que KV Store guarda para a conta. |
| Keys Read    | 100.000 chaves por dia | Toda chave que uma leitura retorna.        |
| Keys Written | 1.000 chaves por dia   | Toda chave que uma gravação afeta.         |

Dois dos três medidores são zerados todo dia, o que limita uma carga de trabalho de forma mais rígida do que a quantidade mensal de armazenamento. Por exemplo, uma function que grava uma chave em cada requisição que atende alcança as 1.000 chaves incluídas depois de 1.000 requisições, qualquer que seja o tamanho dos valores que gravou.

A Azion oferece três planos de serviço: Hobby, Pro e Enterprise. A comparação de planos traz exatamente uma linha de KV Store, e essa linha é acesso, e não uma cota: ela indica `Upon request (subject to approval)` no Hobby e no Pro, e `Custom` no Enterprise. O acesso ao Preview é a única dimensão de KV Store que varia por plano.

Para a taxa que se aplica acima de uma quantidade incluída, consulte [Preços](/pt-br/documentacao/fundamentos/precos/#kv-store). Para o que cada um dos três planos carrega, consulte [Preços da Azion](https://www.azion.com/pt-br/precos/).

---

## Recursos relacionados

- [Namespaces](/pt-br/documentacao/plataforma/kv-store/namespaces.md): Os campos, as operações e os envelopes de erro a que se aplicam os limites de nome e de paginação.
- [Cliente KV](/pt-br/documentacao/devtools/runtime/api-reference/kv-store.md): Os métodos que uma function chama em um namespace e o que cada um retorna.
- [Boas práticas](/pt-br/documentacao/plataforma/kv-store/boas-praticas.md): Como nomear um namespace que não pode ser renomeado e como ler os dois envelopes de erro.
- [Solução de problemas](/pt-br/documentacao/plataforma/kv-store/solucao-de-problemas.md): O que fazer diante de uma requisição que um destes limites rejeitou.
- [Preços](/pt-br/documentacao/fundamentos/precos.md#kv-store): A taxa que se aplica acima de uma quantidade incluída de armazenamento, leituras ou gravações.
