Introducción al modelo de datos de Table Storage
El servicio Tabla proporciona almacenamiento estructurado en forma de tabla. Las secciones siguientes describen el modelo de datos del servicio Tabla.
Cuenta de almacenamiento
Una cuenta de almacenamiento es una entidad globalmente única dentro del sistema de almacenamiento. La cuenta de almacenamiento es el espacio de nombres primario de Table service y es la base para la autorización. Puede crear cualquier número de tablas en una cuenta de almacenamiento determinada, siempre que cada tabla tenga un nombre único.
La cuenta de almacenamiento se debe especificar siempre en el URI de solicitud. El URI base para tener acceso al servicio Tabla es como sigue:
https://myaccount.table.core.windows.net
Tablas, entidades y propiedades
Las tablas almacenan los datos en forma de colecciones de entidades. Las entidades son similares a las filas. Una entidad tiene una clave principal y un conjunto de propiedades. Una propiedad es un nombre, un par de valor con tipo, que es similar a una columna.
El servicio Tabla no obliga a utilizar un esquema en particular para las tablas, por tanto las entidades en la misma tabla pueden tener conjuntos diferentes de propiedad. Los programadores pueden elegir el esquema en el lado del cliente. Una tabla puede contener cualquier número de entidades.
Nombres de tabla
Los nombres de tabla deben seguir estas reglas:
Los nombres de tabla deben ser únicos en una cuenta.
Los nombres de tabla solo pueden contener caracteres alfanuméricos.
Los nombres de tabla no pueden comenzar con un carácter numérico.
Los nombres de tabla distinguen entre mayúsculas y minúsculas.
Los nombres de tabla deben tener entre 3 y 63 caracteres.
Algunos nombres de tabla están reservados, incluido "tablas". Cuando se intenta crear una tabla con un nombre de tabla reservado, se obtiene el código de error 404 (solicitud incorrecta).
Estas reglas también se describen mediante la expresión regular "^[A-Za-z][A-Za-z0-9]{2,62}$".
Los nombres de tabla mantienen su capitalización inicial y distinguen entre mayúsculas y minúsculas cuando se utilizan.
Nombres de propiedad
Los nombres de propiedad son cadenas que distinguen entre mayúsculas y minúsculas, y pueden tener un máximo de 255 caracteres. Los nombres de propiedad deben seguir las reglas de nomenclatura de los identificadores de C#.
Nota
Algunos identificadores de C# no son válidos según la especificación XML. Estos identificadores no se pueden utilizar en los nombres de propiedad, porque los nombres de propiedad se envían a través de una carga XML en una solicitud respecto al servicio Tabla.
Importante
Los nombres de propiedad se pasan al servicio Tabla en una dirección URL. Es preciso que algunos caracteres tengan codificación de porcentaje para que aparezcan en una URL, con UTF-8 (codificación de preferencia) o MBCS. Esta codificación se produce automáticamente cuando se usan las bibliotecas cliente de Azure Storage. Sin embargo, hay algunos caracteres que no son válidos para rutas de acceso URL, incluso aunque estén codificados. Estos caracteres no pueden aparecer en nombres de propiedad. Hay algunos puntos de código como \uE000 que, pese a que son válidos en nombres de archivo NTFS, no son caracteres Unicode válidos y, por tanto, no se pueden utilizar. Por otra parte, algunos caracteres ASCII o Unicode, como los caracteres de control (0x00 a 0x1F, \u0081, etc.), tampoco están permitidos. Respecto a las reglas que rigen las cadenas Unicode en HTTP/1.1, vea:
Nota
A partir de la versión del 14/04/2009, el servicio Tabla ya no los admite, incluido el guión (-), en los nombres de propiedad.
Limitaciones de las propiedades
Una entidad puede tener hasta 255 propiedades, lo cual incluye las 3 propiedades del sistema que se describen en la sección siguiente. Por tanto, el usuario puede incluir hasta 252 propiedades personalizadas, además de las 3 propiedades del sistema. El tamaño combinado de todos los datos de las propiedades de una entidad no puede superar los 1 MiB.
Propiedades del sistema
Una entidad tiene siempre las propiedades del sistema siguientes:
Propiedad
PartitionKey
Propiedad
RowKey
Propiedad
Timestamp
Estas propiedades del sistema se incluyen automáticamente en cada entidad de una tabla. Los nombres de estas propiedades están reservados y no se pueden cambiar. El programador es responsable de insertar y actualizar los valores de PartitionKey
y de RowKey
. El servidor administra el valor de Timestamp
, que no puede modificarse.
Caracteres no permitidos en los campos clave
Los siguientes caracteres no se permiten en los valores de las propiedades PartitionKey
y RowKey
:
El carácter de barra diagonal (/)
El carácter de barra inversa (\)
El carácter de signo de número (#)
El signo de interrogación (?)
Caracteres de control de U+0000 a U+001F, incluyendo:
- Caracteres de tabulador horizontal (\ t)
- Caracteres de avance de línea (\ n)
- Caracteres de retorno de carro (\ r)
Caracteres de control de U+007F a U+009F
Propiedad PartitionKey
Las tablas tienen particiones para admitir el equilibrio de carga en los nodos de almacenamiento. Las entidades de una tabla se organizan en particiones. Una partición es un intervalo consecutivo de entidades que poseen el mismo valor de clave de partición. La clave de partición es un identificador único para la partición en una tabla determinada, que queda especificado por la propiedad PartitionKey
. La clave de partición constituye la primera parte de la clave principal de una entidad. La clave de partición puede ser un valor de cadena de hasta 1024 caracteres de tamaño.
Es preciso incluir la propiedad PartitionKey
en cada operación de inserción, actualización y eliminación.
Propiedad RowKey
La segunda parte de la clave principal es la clave de fila, que queda especificada por la propiedad RowKey
. La clave de fila es un identificador único de una identidad dentro de una partición determinada.
PartitionKey
y RowKey
identifican juntas a cada entidad en una tabla de forma única.
La clave de fila es un valor de cadena que puede tener un tamaño de hasta 1024 caracteres.
Es preciso incluir la propiedad RowKey
en cada operación de inserción, actualización y eliminación.
Propiedad Timestamp
La propiedad Timestamp
es un valor DateTime
que se conserva en el servidor para registrar el momento en que una entidad se modificó por última vez. El servicio Tabla usa la propiedad Timestamp
internamente para proporcionar simultaneidad optimista. El valor de la Timestamp
propiedad de una entidad avanza cada vez que se modifica la entidad. Esta propiedad no debe establecerse en operaciones de inserción o actualización (no se hará caso al valor).
La Timestamp
propiedad debe expresarse en uno de los formatos ISO 8601 UTC aceptados. Para obtener más información sobre los formatos UTC aceptados, vea Formato de valores DateTime.
Tipos de propiedades
Table service admite un subconjunto de tipos de datos definidos por la especificación del protocolo OData. La tabla siguiente muestra los tipos de propiedades admitidas para el servicio Tabla:
Tipo de datos OData | Tipo Common Language Runtime | Detalles |
---|---|---|
Edm.Binary |
byte[] |
Matriz de bytes de hasta 64 KiB de tamaño. |
Edm.Boolean |
bool |
Valor booleano. |
Edm.DateTime |
DateTime |
Valor de 64 bits expresado como hora universal coordinada (UTC). El intervalo admitido de DateTime comienza a las 12:00 de la noche del 1 de enero de 1601 A.D. (E.C.), UTC. El intervalo finaliza el 31 de diciembre de 9999. Para obtener más información, vea Aplicar formato a los valores DateTime. |
Edm.Double |
double |
Valor de punto flotante de 64 bits. |
Edm.Guid |
Guid |
Identificador único global de 128 bits. |
Edm.Int32 |
Int32 o int |
Entero de 32 bits. |
Edm.Int64 |
Int64 o long |
Entero de 64 bits. |
Edm.String |
String |
Valor codificado mediante UTF-16. Los valores de cadena pueden tener un tamaño de hasta 64 KiB. Tenga en cuenta que el número máximo de caracteres admitidos es de aproximadamente 32 K o menos. |
De forma predeterminada, las propiedades se crean como String
con tipo, a menos que se especifique otro tipo. Para escribir explícitamente una propiedad, especifique su tipo de datos mediante el tipo de datos OData adecuado para una operación Insertar entidad o Actualizar entidad . Para obtener más información, vea Insertar y actualizar entidades.
Table service no conserva null
los valores de las propiedades. Al consultar entidades, los tipos de propiedad anteriores son que no aceptan valores NULL. Al escribir entidades, todos los tipos de propiedad anteriores aceptan valores NULL y cualquier propiedad con un null
valor se controla como si la carga no contenga esa propiedad.
Para obtener ejemplos que muestran cómo filtrar los distintos tipos de propiedades en un URI de solicitud de consulta, consulte Consulta de tablas y entidades.