Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Crear un tipo definido por el usuario (UDT) en Amazon Keyspaces
Para crear una UDT en un espacio de claves de una sola región, puede utilizar la CREATE TYPE sentencia de CQL, el create-type comando de la consola o la AWS CLI consola.
Los nombres de UDT deben contener 48 caracteres o menos, deben empezar por un carácter alfabético y solo pueden contener caracteres alfanuméricos y guiones bajos. Amazon Keyspaces convierte automáticamente los caracteres en mayúsculas en minúsculas.
Como alternativa, puede declarar un nombre de UDT entre comillas dobles. Al declarar un nombre de UDT entre comillas dobles, Amazon Keyspaces conserva las mayúsculas y admite caracteres especiales.
También puede usar comillas dobles como parte del nombre al crear el UDT, pero debe eliminar cada carácter de comillas dobles con un carácter adicional de comillas dobles.
En la tabla siguiente se muestran ejemplos de nombres de UDT permitidos. La primera columna muestra cómo ingresar el nombre al crear el tipo y la segunda columna muestra cómo Amazon Keyspaces formatea el nombre internamente. Amazon Keyspaces espera el nombre formateado para operaciones como GetType.
| Nombre ingresado |
Nombre formateado |
Nota |
MY_UDT
|
my_udt |
Sin comillas dobles, Amazon Keyspaces convierte todos los caracteres en mayúsculas en minúsculas. |
"MY_UDT"
|
MY_UDT |
Con las comillas dobles, Amazon Keyspaces respeta los caracteres en mayúscula y elimina las comillas dobles del nombre formateado. |
"1234"
|
1234 |
Con comillas dobles, el nombre puede empezar por un número y Amazon Keyspaces elimina las comillas dobles del nombre formateado. |
"Special_Ch@r@cters<>!!"
|
Special_Ch@r@cters<>!! |
Con comillas dobles, el nombre puede contener caracteres especiales y Amazon Keyspaces elimina las comillas dobles del nombre formateado. |
"nested""""""quotes"
|
nested"""quotes |
Amazon Keyspaces elimina las comillas dobles exteriores y las comillas dobles de escape del nombre formateado. |
- Console
-
- Cassandra Query Language (CQL)
-
Cree un tipo definido por el usuario (UDT) con CQL
En este ejemplo, creamos una nueva versión de la tabla de premios de libros utilizada en. Creación de un espacio de claves en Amazon Keyspaces En esta tabla, almacenamos todos los premios que recibe un autor por un libro determinado. Creamos dos UDTs que están anidados y contienen información sobre el libro que recibió un premio.
-
Crea un espacio de claves con el nombre. catalog
CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};
-
Cree el primer tipo. Este tipo almacena los códigos BISAC, que se utilizan para definir el género de los libros. Un código BISAC consiste en un código alfanumérico y hasta cuatro áreas temáticas.
CREATE TYPE catalog.bisac (
bisac_code text,
subject1 text,
subject2 text,
subject3 text,
subject4 text
);
-
Cree un segundo tipo para los premios de libros que utilice el primer UDT. La UDT anidada debe congelarse.
CREATE TYPE catalog.book (
award_title text,
book_title text,
publication_date date,
page_count int,
ISBN text,
genre FROZEN <bisac>
);
-
Cree una tabla con una columna para el nombre del autor y utilice un tipo de lista para los premios de libros. Tenga en cuenta que la UDT utilizada en la lista debe estar inmovilizada.
CREATE TABLE catalog.authors (
author_name text PRIMARY KEY,
awards list <FROZEN <book>>
);
-
En este paso, insertamos una fila de datos en la nueva tabla.
CONSISTENCY LOCAL_QUORUM;
INSERT INTO catalog.authors (author_name, awards) VALUES (
'John Stiles' ,
[{
award_title: 'Wolf',
book_title: 'Yesterday',
publication_date: '2020-10-10',
page_count: 345,
ISBN: '026204630X',
genre: { bisac_code:'FIC014090', subject1: 'FICTION', subject2: 'Historical', subject3: '20th Century', subject4: 'Post-World War II'}
},
{award_title: 'Richard Roe',
book_title: 'Who ate the cake?',
publication_date: '2019-05-13',
page_count: 193,
ISBN: '9780262046305',
genre: { bisac_code:'FIC022130', subject1: 'FICTION', subject2: 'Mystery & Detective', subject3: 'Cozy', subject4: 'Culinary'}
}]
);
-
En el último paso, leemos los datos de la tabla.
SELECT * FROM catalog.authors;
El resultado del comando debería tener este aspecto.
author_name | awards
-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
John Stiles | [{award_title: 'Wolf', book_title: 'Yesterday', publication_date: 2020-10-10, page_count: 345, isbn: '026204630X', genre: {bisac_code: 'FIC014090', subject1: 'FICTION', subject2: 'Historical', subject3: '20th Century', subject4: 'Post-World War II'}}, {award_title: 'Richard Roe', book_title: 'Who ate the cake?', publication_date: 2019-05-13, page_count: 193, isbn: '9780262046305', genre: {bisac_code: 'FIC022130', subject1: 'FICTION', subject2: 'Mystery & Detective', subject3: 'Cozy', subject4: 'Culinary'}}]
(1 rows)
Para obtener más información sobre la sintaxis CQL, consulte CREATE TYPE.
- CLI
-
Cree un tipo definido por el usuario (UDT) con el AWS CLI
-
Para crear un tipo, puede utilizar la siguiente sintaxis.
aws keyspaces create-type
--keyspace-name 'my_keyspace'
--type-name 'my_udt'
--field-definitions
'[
{"name" : "field1", "type" : "int"},
{"name" : "field2", "type" : "text"}
]'
El resultado de ese comando es similar al de este ejemplo. Tenga en cuenta que typeName devuelve el nombre formateado de la UDT.
{
"keyspaceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/my_keyspace/",
"typeName": "my_udt"
}