Visión general
Los documentos son objetos JSON. Los documentos también son contenedores para los datos y son la base de la base de datos IBM® Cloudant® for IBM Cloud®.
Si utiliza un servicio de IBM Cloudant en IBM Cloud®, los documentos están limitados a un tamaño máximo de 1 MB. Si se supera este límite, se produce un error de « 413 ».
IBM Cloudant utiliza un modelo finalmente coherente para los datos. Si utiliza el modelo finalmente coherente, es posible, bajo algunas condiciones, recuperar el contenido más antiguo del documento. Por ejemplo, el contenido más antiguo se recupera cuando la aplicación escribe o actualiza un documento seguido inmediatamente por una lectura del mismo documento.
Es decir, la aplicación vería el contenido del documento tal como estaba antes de que se realizara la escritura o la actualización. Para obtener más información sobre este modelo, consulte el tema sobre Coherencia.
Campos de un documento
Todos los documentos deben tener dos campos:
- Un campo
_idexclusivo. El campo_idse detalla en la sección siguiente. - Un campo
_rev. El campo_reves un identificador de revisión y es esencial para el protocolo de réplica de IBM Cloudant.
Además de estos dos campos obligatorios, los documentos pueden incluir cualquier otro contenido que se pueda describir mediante JSON, sujeto a algunas advertencias que se detallan en las secciones siguientes.
ID de documento
El formato de un ID de documento difiere en función de si una base de datos está particionada o no. Cuando una base de datos está particionada, la clave de partición para cada documento se define como parte del ID del documento tal como se detalla en la sección siguiente.
ID en las bases de datos particionadas
Cuando utiliza una base de datos particionada, el ID del documento especifica la clave de partición y la clave del documento. Estas claves se especifican dividiendo el ID del documento en dos partes separadas por dos puntos:
$PARTITION_KEY:$DOCUMENT_KEY
La parte $PARTITION_KEY puede coincidir entre documentos. La cabecera HTTP $DOCUMENT_KEY deben ser exclusivas dentro de cada partición. Es decir, todo el ID del documento debe ser exclusivo dentro de una base de
datos. Una clave de documento puede contener más caracteres de dos puntos.
ID en bases de datos no particionadas
En el caso de las bases de datos no particionadas, el campo « _id » lo creas tú mismo o se genera automáticamente como un UUID por IBM Cloudant.
Si elige especificar el campo _id del documento, se debe limitar a no más de 7168 caracteres (7k).
Al igual que sucede con bases de datos particionadas, el ID del documento debe ser exclusivo dentro de una base de datos.
Restricciones de los nombres de campo
Los nombres de campo que empiezan por el carácter de subrayado (_) están reservados en IBM Cloudant. Esta regla significa que normalmente no puede tener sus propios nombres de campo que comiencen con un carácter de subrayado.
Por ejemplo, el campo example se aceptaría, pero el campo _example daría como resultado un mensaje de error doc_validation.
Consulte un ejemplo de documento JSON que intenta crear un campo con un prefijo de subrayado:
{
"_top_level_field_name": "some data"
}
Consulte un mensaje de error que se devuelve cuando se intenta crear un campo con un prefijo de subrayado:
{
"error": "doc_validation",
"reason": "Bad special document member: _top_level_field_name"
}
Sin embargo, si el nombre del campo es para un objeto que está anidado en el documento, puede utilizar un prefijo de subrayado para el nombre del campo.
Consulte un ejemplo de documento JSON que intenta crear un campo con un prefijo de subrayado, anidado dentro de un objeto:
{
"another_top_level_field_name": "some data",
"another_field": {
"_lower_level_field_name": "some more data"
}
}
Consulte un ejemplo de mensaje de éxito (abreviado) que se devuelve cuando se crea un campo anidado con un prefijo de subrayado:
{
"ok": true,
"id": "2",
"rev": "1-9ce...8d4"
}
Quórum: escritura y lectura de datos
En un sistema distribuido, es posible que una solicitud tarde algún tiempo en completarse. Se utiliza un mecanismo de "quórum" para ayudar a determinar cuándo una solicitud, como por ejemplo escritura o lectura, se completa correctamente.
Para obtener más información sobre los valores de quórum y sus implicaciones en los sistemas IBM Cloudant, póngase en contacto con el equipo de soporte de IBM Cloudant.
Tiempo de vida
El tiempo de vida (TTL) es una propiedad de los datos, según la cual, tras un periodo de tiempo relativo, o en un momento concreto, los datos se consideran caducados. Los propios datos se pueden suprimir o mover a una ubicación alternativa (archivado).
IBM Cloudant No admite funciones Time to Live dentro de la base de datos. Los clientes podrían implementar esta funcionalidad indexando los documentos por su fecha de caducidad mediante [Views] y consultando periódicamente la vista para encontrar los documentos que deben eliminarse.