Uso de API para Crear una Tabla Singleton
La tabla es la estructura básica para contener los datos de usuario. Utilice un comando SQL (sentencia CREATE TABLE
) o comandos de API TableRequest
para crear una nueva tabla.
También puede utilizar la consola de Oracle NoSQL Cloud Infrastructure(OCI) o la interfaz de línea de comandos de OCI (OCI-cli) para crear una tabla en NDCS.
- La definición de tabla debe incluir al menos una definición de campo y exactamente una definición de clave primaria. Para obtener más información sobre la definición de clave primaria, consulte Crear tabla.
- La definición de campo especifica el nombre de la columna, su tipo de dato, si la columna se puede anular o no, un valor por defecto opcional, si la columna es una columna IDENTITY y un comentario opcional. Todos los campos (que no sean PRIMARY KEY) son nulos por defecto.
- La sintaxis de la especificación de clave primaria (key_definition) especifica las columnas de clave primaria de la tabla como una lista ordenada de nombres de campo.
- El valor de tiempo de actividad (TTL) se utiliza para calcular la hora de caducidad de una fila. Las filas caducadas no se incluyen en los resultados de la consulta y, finalmente, Oracle NoSQL Database las elimina de la tabla automáticamente. Si especifica un valor TTL al crear la tabla, se aplica como TTL por defecto para cada fila insertada en esta tabla.
Uso de comandos SQL
Puede utilizar el comando CREATE TABLE en SQL para crear tablas NoSQL.
BaggageInfo
que contiene información de equipaje de pasajeros en un sistema de líneas aéreas.CREATE TABLE BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
stream_acct
que contiene datos de una aplicación de transmisión de TV.CREATE TABLE stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
PRIMARY KEY(acct_id)
)
stream_acct_new
que contiene datos de una aplicación de transmisión de TV. Las filas de la tabla caducan en 2 días.CREATE TABLE stream_acct_new(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
PRIMARY KEY(acct_id)) USING TTL 2 days
Temas relacionados
Uso de la API de TableRequest
Puede utilizar la API TableRequest para crear tablas NoSQL.
La clase TableRequest
se utiliza para crear tablas. La ejecución de las operaciones especificadas por esta solicitud es asíncrona. Se trata de operaciones de larga duración. Las operaciones TableRequest
devuelven TableResult
y encapsula el estado de la tabla. Consulte Referencia de API de SDK de Java de Oracle NoSQL para obtener más información sobre la clase TableRequest y sus métodos.
private static void createTab(NoSQLHandle handle) throws Exception {
String createTableDDL =
"CREATE TABLE IF NOT EXISTS " + tableName +
"(acct_Id INTEGER," +
"profile_name STRING," +
"account_expiry TIMESTAMP(1) ," +
"acct_data JSON, " +
"PRIMARY KEY(acct_Id))";
TableLimits limits = new TableLimits(20, 20, 1);
TableRequest treq = new TableRequest()
.setStatement(createTableDDL)
.setTableLimits(limits);
TableResult tres = handle.tableRequest(treq);
/* The request is async,
* so wait for the table to become active.
*/
tres.waitForCompletion(handle, 60000,1000);
System.out.println("Created Table: " + tableName);
}
Note:
Los límites de tabla se aplican solo a Oracle NoSQL Database Cloud Service. Si se definen límites para una base de datos NoSQL local, se ignoran de forma silenciosa.Creación de una tabla secundaria: utilice la misma clase y métodos TableRequest
para ejecutar la sentencia DDL para crear una tabla secundaria.
- Debe especificar el nombre completo de la tabla (name_parent_table.name_child_table)
- Los límites de tabla no se deben definir explícitamente como una tabla secundaria hereda los límites de una tabla principal.
Descargue el código completo TableJoins.java de los ejemplos para saber cómo crear una tabla principal-secundaria aquí.
La clase borneo.TableRequest
se utiliza para crear una tabla. Todas las llamadas a borneo.NoSQLHandle.table_request()
son asíncronas, por lo que es necesario comprobar el resultado y llamar a borneo.TableResult.wait_for_completion()
para esperar a que finalice la operación. Consulte Referencia de API de SDK de Python NoSQL de Oracle para obtener más información sobre table_request
y sus métodos.
def create_table(handle):
statement = '''create table if not exists
stream_acct (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))'''
request = TableRequest().set_statement(statement)
.set_table_limits(TableLimits(20, 10, 1))
table_result = handle.do_table_request(request, 40000, 3000)
table_result.wait_for_completion(handle, 40000, 3000)
if (table_result.get_state() == State.ACTIVE):
print('Created table: stream_acct')
else:
raise NameError('Table stream_acct is in an unexpected state ' +
str(table_result.get_state()))
Note:
Los límites de tabla se aplican solo a Oracle NoSQL Database Cloud Service. Si se definen límites para una base de datos NoSQL local, se ignoran de forma silenciosa.Creación de una tabla secundaria: utilice la misma clase y métodos TableRequest
para ejecutar la sentencia DDL para crear una tabla secundaria.
- Debe especificar el nombre completo de la tabla (name_parent_table.name_child_table).
- Los límites de tabla no se deben definir explícitamente como una tabla secundaria hereda los límites de una tabla principal.
Descargue el código completo TableJoins.py de los ejemplos aquí.
La clase TableRequest
se utiliza para crear una tabla. La ejecución de las operaciones especificadas por TableRequest
es asíncrona. Se trata de operaciones de larga duración. Esta solicitud se utiliza como entrada de una operación Client.DoTableRequest()
, que devuelve un valor TableResult
que se puede utilizar para sondear hasta que la tabla alcance el estado deseado. Consulte Referencia de API de SDK de Go de Oracle NoSQL para obtener más información sobre los distintos métodos de la clase TableRequest
.
func createTable(client *nosqldb.Client, err error, tableName string)(){
// Creates a table
stmt := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s ("+
"acct_Id INTEGER," +
"profile_name STRING," +
"account_expiry TIMESTAMP(1) ," +
"acct_data JSON, " +
"PRIMARY KEY(acct_Id))",tableName)
tableReq := &nosqldb.TableRequest{
Statement: stmt,
TableLimits: &nosqldb.TableLimits{
ReadUnits: 20,
WriteUnits: 20,
StorageGB: 1,
},
}
tableRes, err := client.DoTableRequest(tableReq)
if err != nil {
fmt.Printf("cannot initiate CREATE TABLE request: %v\n", err)
return
}
// The create table request is asynchronous,
// wait for table creation to complete.
_, err = tableRes.WaitForCompletion(client, 60*time.Second, time.Second)
if err != nil {
fmt.Printf("Error finishing CREATE TABLE request: %v\n", err)
return
}
fmt.Println("Created table: ", tableName)
return
}
Note:
Los límites de tabla se aplican solo a Oracle NoSQL Database Cloud Service. Si se definen límites para una base de datos NoSQL local, se ignoran de forma silenciosa.Creación de una tabla secundaria: utilice la misma clase y métodos TableRequest
para ejecutar la sentencia DDL para crear una tabla secundaria.
- Debe especificar el nombre completo de la tabla (name_parent_table.name_child_table).
- Los límites de tabla no se deben definir explícitamente como una tabla secundaria hereda los límites de una tabla principal.
Descargue el código completo TableJoins.go de los ejemplos aquí.
Puede crear una tabla mediante el método tableDDL
. Este método es asíncrono y devuelve una promesa de TableResult
. TableResult
es un objeto JavaScript sin formato que contiene el estado de la operación DDL, como TableState, nombre, esquema y TableLimits. Para obtener detalles sobre el método, consulte la clase NoSQLClient.
El método tableDDL
toma el objeto TableDDLOpt como el segundo argumento opcional. Al crear una tabla, debe especificar TableLimits
como parte del argumento opt. TableLimits
especifica el rendimiento y la capacidad de almacenamiento máximos para la tabla como la cantidad de unidades de lectura, unidades de escritura y gigabytes de almacenamiento.
Descargue el código JavaScript completo CreateTable.js de los ejemplos aquí y el código TypeScript completo CreateTable.ts de los ejemplos aquí.
import {NoSQLClient, TableState } from 'oracle-nosqldb';
const client = new NoSQLClient('config.json');
const TABLE_NAME = 'stream_acct;
async function createTable(handle) {
const createDDL = `CREATE TABLE IF NOT EXISTS
${TABLE_NAME} (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))`;
/* For Provisioned Capacity specify read units, write units, and storage limit as shown below*/
/* For On-demand Capacity - set only the storage limit and specify the mode as shown here.
* { storageGB: 25, mode: CapacityMode.ON_DEMAND };
*/
let res = await handle.tableDDL(createDDL, {
complete: true,
tableLimits: {
readUnits: 20,
writeUnits: 20,
storageGB: 1
}
});
console.log('Created table: ' + TABLE_NAME);
}
const createDDL = `CREATE TABLE IF NOT EXISTS
${TABLE_NAME} (acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))`;
let res = await client.tableDDL(createDDL, {complete: true,});
console.log('Created table: ' + TABLE_NAME);
Creación de una tabla secundaria: utilice la misma clase y métodos TableRequest
para ejecutar la sentencia DDL para crear una tabla secundaria.
- Debe especificar el nombre completo de la tabla (name_parent_table.name_child_table)
- Los límites de tabla no se deben definir explícitamente como una tabla secundaria hereda los límites de una tabla principal.
Descargue el código JavaScript completo TableJoins.js de los ejemplos aquí y el código TypeScript completo TableJoins.ts de los ejemplos aquí.
Para crear una tabla, utilice uno de los métodos ExecuteTableDDLAsync
o ExecuteTableDDLWithCompletionAsync
. Ambos métodos devuelven Task<TableResult>
. La instancia TableResult
contiene el estado de la operación DDL como TableState y el esquema de tabla. Consulte Referencia de API de SDK de Dotnet de Oracle NoSQL para obtener más información sobre estos métodos.
private static async Task createTable(NoSQLClient client){
// Create a table
var sql =
$@"CREATE TABLE IF NOT EXISTS
{TableName}(acct_Id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(1),
acct_data JSON,
primary key(acct_Id))";
var tableResult = await client.ExecuteTableDDLAsync(sql,
new TableDDLOptions{TableLimits = new TableLimits(20, 20, 1)});
// Wait for the operation completion
await tableResult.WaitForCompletionAsync();
Console.WriteLine(" Created table: ",tableResult.TableName);
}
Note:
Los límites de tabla se aplican solo a Oracle NoSQL Database Cloud Service. Si se definen límites para una base de datos NoSQL local, se ignoran de forma silenciosa.Creación de una tabla secundaria: utilice la misma clase y métodos TableRequest
para ejecutar la sentencia DDL para crear una tabla secundaria.
- Debe especificar el nombre completo de la tabla (name_parent_table.name_child_table)
- Los límites de tabla no se deben definir explícitamente como una tabla secundaria hereda los límites de una tabla principal.
Descargue el código completo TableJoins.cs de los ejemplos aquí.