Acerca de los compartimentos
Descubra cómo especificar el compartimento al crear y trabajar con tablas de de Oracle NoSQL Database Cloud Service con controladores de Oracle NoSQL Database.
Las tablas de Oracle NoSQL Database Cloud Service se crean en un compartimento y se limitan a ese compartimento. Si se autentica como un usuario específico, las tablas se gestionan en el compartimento raíz del arrendamiento a menos que se especifique lo contrario. La organización de tablas en diferentes compartimentos ayudará a la organización y la seguridad.
Si se ha autenticado mediante una instancia principal (accediendo al servicio desde una instancia informática de OCI), debe especificar un compartimento mediante su ID (OCID), ya que no hay valor por defecto en este caso. Consulte Llamada a servicios desde una instancia en la documentación de Oracle Cloud Infrastructure.
Hay varias formas de especificar un compartimento en el código de la aplicación:
-
Utilice un compartimento por defecto en
NoSQLHandleConfigpara que se aplique a todas las operaciones en las que utiliza el identificador. Consulte Obtención de un identificador NoSQL para ver un ejemplo. -
Utilice el nombre o el ID de compartimento (OCID) en cada solicitud, además del nombre de tabla. Esto sustituye cualquier compartimento por defecto.
Por ejemplo:
GetRequest getReq = new GetRequest().setTableName("mytable") .setCompartment("mycompartment"); -
Utilice el nombre del compartimento como prefijo en el nombre de la tabla. Esto sustituye cualquier compartimento por defecto, así como un compartimento especificado con API.
Por ejemplo:
GetRequest getReq = new GetRequest().setTableName("mycompartment:mytable");
Cuando se utiliza un compartimento con nombre, el nombre puede ser el nombre simple de un compartimento de nivel superior o una ruta a un compartimento anidado. En este caso, la ruta es una ruta separada por "." (punto).
Nota: Al especificar la ruta a un compartimento anidado, no incluya el nombre del compartimento de nivel superior en la ruta, ya que se deduce del arrendamiento.
Hay varias formas de especificar un compartimento en el código de la aplicación:
-
Existe un método para permitir la especificación de un compartimento por defecto para las solicitudes en
borneo.NoSQLHandleConfig.set_compartment(). Esto sustituye el compartimento por defecto del usuario. -
Además, es posible especificar un compartimento en cada instancia
Request.
Los métodos set_compartment toman un ID (OCID), un nombre de compartimento o una ruta de acceso. Si se utiliza un nombre de compartimento, puede ser el nombre de un compartimento de nivel superior.
Nota: Si una ruta de compartimento se utiliza para hacer referencia a un compartimento anidado, la ruta es una ruta separada por puntos que excluye el compartimento de nivel superior de la ruta, por ejemplo, compartmentA.compartmentB.
En lugar de definir un compartimento en la solicitud, es posible utilizar un nombre de compartimento para anteponer un nombre de tabla a una solicitud, consulta o sentencia DDL. Este uso sustituye cualquier otro valor del compartimento. Por ejemplo,
...
request = PutRequest().set_table_name('mycompartment:mytable')
...
create_statement = 'create table mycompartment:mytable(...)'
...
request = GetRequest().set_table_name('compartmentA.compartmentB')
Hay varias formas de especificar un compartimento en el código de la aplicación:
-
Puede definir el nombre o el ID de compartimento que desee.
-
Se define en una cadena vacía para utilizar el compartimento por defecto, que es el compartimento raíz del arrendamiento.
-
Si utiliza un compartimento anidado, especifique la ruta de acceso del compartimento completo relativa al compartimento raíz como compartmentID. Por ejemplo, si se utiliza rootCompartment.compartmentA.compartmentB, el identificador de compartimento se debe definir en
compartmentA.compartmentB. -
También puede utilizar el OCID del compartimento como valor de cadena.
compartmentID:="<optional-compartment-name-or-ID>"
iam.NewRawSignatureProvider(tenancy, user, region, fingerprint, compartmentID,
privateKey, &privateKeyPassphrase)
Puede especificar un compartimento por defecto para todas las operaciones realizadas por una instancia NoSQLClient definiendo la propiedad de compartimento de la configuración transferida al constructor NoSQLClient:
import { NoSQLClient,Region } from 'oracle-nosqldb';
const client = new NoSQLClient({
region: Region.US_ASHBURN_1,
compartment: 'mycompartment'
});
El valor de cadena puede ser un ID de compartimento o un nombre o ruta de compartimento. Si se trata de un nombre simple, debe especificar un compartimento de nivel superior. Si se trata de una ruta de acceso a un compartimento anidado, se debe excluir el compartimento de nivel superior, ya que se infiere del arrendamiento. También se puede especificar un compartimento en cada solicitud en el objeto de opciones. Este valor sustituye al valor de configuración inicial.
Si no especifica un compartimento, el compartimento raíz del arrendamiento se utilizará como valor por defecto. Esto solo se aplica si está autorizando con la identidad de un usuario específico. Si utiliza la entidad de instancia o la entidad de recurso para la autenticación, debe especificar el ID de compartimento, ya que no hay ningún valor por defecto en estos casos.
Si no se proporciona el compartimento, el OCID de arrendamiento se utilizará como valor por defecto. Tenga en cuenta que esto solo se aplica si está autorizando con la identidad del usuario. Al utilizar la entidad de instancia o la entidad de recurso, se debe especificar el ID de compartimento.
Para conocer el procedimiento para configurar el principal de instancia, consulte Llamada a servicios desde una instancia. Para conocer el procedimiento para configurar la entidad de recurso, consulte Acceso a otros recursos de Oracle Cloud Infrastructure desde funciones en ejecución.
El compartimento por defecto para las tablas es el compartimento raíz del arrendamiento del usuario. Se puede especificar un compartimento por defecto para todas las operaciones definiendo la propiedad Compartment de NoSQLConfig. Por ejemplo:
var client = new NoSQLClient(
new NoSQLConfig
{
Region=Region.US_ASHBURN_1,
Compartment="<compartment_ocid_or_name>"
});
El valor de cadena puede ser un OCID de compartimento o un nombre o ruta de compartimento. Si se trata de un nombre simple, debe especificar un compartimento de nivel superior. Si se trata de una ruta de acceso a un compartimento anidado, se debe excluir el compartimento de nivel superior, ya que se infiere del arrendamiento.
Además, todas las clases de opciones de operación tienen la propiedad Compartment, como TableDDLOptions.Compartment, GetOptions.Compartment, PutOptions.Compartment, etc. Por lo tanto, también puede especificar la comparación por separado para cualquier operación. Este valor, si se define, sustituirá el valor de compartimento en NoSQLConfig, si lo hay.
Si no se proporciona el compartimento, el OCID de arrendamiento se utilizará como valor por defecto. Tenga en cuenta que esto solo se aplica si está autorizando con la identidad del usuario. Al utilizar la entidad de instancia o la entidad de recurso, se debe especificar el ID de compartimento.