Visão geral
Os documentos são objetos JSON. Os documentos também são contêineres para os seus dados, e são a base do banco de dados do IBM® Cloudant® for IBM Cloud®.
Se você estiver usando um serviço IBM Cloudant na IBM Cloud®, os documentos serão limitados a um tamanho máximo de 1 MB. Ultrapassar esse limite gera um erro do tipo “ 413 ”.
O IBM Cloudant usa um modelo eventualmente consistente para dados. Sob algumas condições, ao usar o modelo eventualmente consistente, é possível recuperar conteúdos mais antigos do documento. Por exemplo, o conteúdo mais antigo é recuperado quando o seu aplicativo grava ou atualiza um documento que é seguido imediatamente por uma leitura do mesmo documento.
Em outras palavras, seu aplicativo veria o conteúdo do documento como ele era antes de a gravação ou atualização ocorrer. Para obter mais informações sobre esse modelo, consulte o tópico sobre Consistência.
Campos de documentos
Todos os documentos devem ter dois campos:
- Um campo exclusivo
_id. O campo_idé detalhado na próxima seção. - Um campo
_rev. O campo_revé um identificador de revisão e é essencial para o protocolo de replicação do IBM Cloudant.
Além desses dois campos obrigatórios, os documentos geralmente podem conter qualquer outro conteúdo que possa ser descrito usando JSON, sujeito a algumas ressalvas detalhadas nas seções a seguir.
IDs de documento
O formato de um ID do documento difere dependendo se um banco de dados é particionado ou não. Quando um banco de dados é particionado, a chave de partição para cada documento é definida como parte do ID do documento, conforme detalhado na próxima seção.
IDs em bancos de dados particionados
Quando você usa um banco de dados particionado, o ID do documento especifica tanto a chave de partição quanto a chave de documentos. Essas chaves são especificadas dividindo o ID do documento em duas partes que são separadas por dois pontos:
$PARTITION_KEY:$DOCUMENT_KEY
O $PARTITION_KEY pode ser o mesmo entre os documentos. Os comandos $DOCUMENT_KEY deve ser único dentro de cada partição. Ou seja, no geral, o ID do documento inteiro deve ser exclusivo dentro de um banco de dados.
Uma chave de documento pode conter mais caracteres de dois pontos.
IDs em bancos de dados não particionados
Para bancos de dados não particionados, o campo _id é criado por você ou gerado automaticamente como um UUID pelo IBM Cloudant.
Ao optar por especificar o campo _id do documento, ele deve ser limitado a no máximo 7168 caracteres (7k).
Assim como acontece com bancos de dados particionados, o ID do documento deve ser exclusivo dentro de um banco de dados.
Restrições de nome de campo
Os nomes de campo que começam com o caractere sublinhado (_) são reservados no IBM Cloudant. Essa regra significa que normalmente não é possível ter seus próprios nomes de campo começando com um sublinhado. Por exemplo, o campo
example seria aceito, mas o campo _example resultaria em uma mensagem de erro doc_validation.
Veja um exemplo de um documento JSON que tenta criar um campo com um prefixo sublinhado:
{
"_top_level_field_name": "some data"
}
Veja uma mensagem de erro que é retornada quando você tenta criar um campo com um prefixo sublinhado:
{
"error": "doc_validation",
"reason": "Bad special document member: _top_level_field_name"
}
No entanto, se o nome do campo for destinado a um objeto aninhado dentro do documento, será possível usar um prefixo sublinhado para o nome do campo.
Veja um exemplo de um documento JSON que tenta criar um campo com um prefixo sublinhado, aninhado dentro de um objeto:
{
"another_top_level_field_name": "some data",
"another_field": {
"_lower_level_field_name": "some more data"
}
}
Veja uma mensagem de sucesso de exemplo (abreviada) retornada quando um campo aninhado com um prefixo sublinhado é criado:
{
"ok": true,
"id": "2",
"rev": "1-9ce...8d4"
}
Quorum - gravação e leitura de dados
Em um sistema distribuído, é possível que uma solicitação possa levar algum tempo para ser concluída. Um mecanismo de "quorum" é usado para ajudar a determinar quando uma solicitação, como uma gravação ou leitura, é concluída com sucesso.
Para obter mais informações sobre as configurações de quorum e suas implicações em sistemas IBM Cloudant dedicados, entre em contato com o suporte do IBM Cloudant.
Tempo de vida
O tempo de validade (TTL) é uma propriedade dos dados, em que, após um período de tempo relativo, ou em um momento específico, os dados são considerados expirados. Os dados em si podem ser excluídos ou movidos para um local alternativo (arquivo).
IBM Cloudant não suporta funções Time to Live dentro do banco de dados. Os clientes podem implementar essa funcionalidade indexando documentos por sua data de validade usando [o Views] e, periodicamente, consultando a visualização para encontrar documentos que precisam ser removidos.