Acerca de los compartimentos

Descubra cómo especificar el compartimento al crear y trabajar con tablas de Oracle NoSQL Database Cloud Service con Oracle NoSQL Database Drivers.

Oracle NoSQL Database Cloud Service tables are created in a compartment and are scoped to that compartment. Cuando 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á en relación con 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 al servicio 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:
  1. Utilice un compartimento por defecto en NoSQLHandleConfig para que se aplique a todas las operaciones que utilizan el identificador. Consulte Obtención de un identificador NoSQL para obtener un ejemplo.
  2. 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");
  3. 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 compartimiento con nombre, el nombre puede ser el nombre simple de un compartimiento de nivel superior o una ruta a un compartimiento anidado. En este caso, la ruta es una ruta separada por "." (punto).

Note:

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.

Note:

Si se utiliza una ruta de compartimento 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 prefijar un nombre de tabla en 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 un nombre o ID de compartimento deseado.
  • Defina 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 compartimento completa relativa al compartimento raíz como compartmentID. Por ejemplo, si utiliza rootCompartment.compartmentA.compartmentB, compartmentID se debe definir en compartmentA.compartmentB.
  • También puede utilizar el OCID de 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, un nombre de compartimento o una ruta de acceso. Si es un nombre simple, debe especificar un compartimento de nivel superior. Si se trata de una ruta de acceso a un compartimento anidado, el compartimento de nivel superior se debe excluir a medida que se infiere del arrendamiento. También se puede especificar un compartimento en cada solicitud del objeto options. Este valor sustituye el valor de configuración inicial.

Si no especifica un compartimento, el compartimento raíz del arrendamiento se utilizará como valor por defecto. Esto se aplica solo si está autorizando con la identidad de usuario específica. 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á 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 obtener información sobre 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 Compartimento 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, un nombre de compartimento o una ruta de acceso. Si es un nombre simple, debe especificar un compartimento de nivel superior. Si se trata de una ruta de acceso a un compartimento anidado, el compartimento de nivel superior se debe excluir a medida 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 tanto, también puede especificar la comparación por separado para cualquier operación. Si se define, este valor sustituirá el valor de compartimento en NoSQLConfig, si lo hay.

Si no se proporciona el compartimento, el OCID de arrendamiento se utilizará 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.

Temas relacionados