使用控制台在 Oracle NoSQL Database Cloud Service 中创建表

了解如何从控制台创建和管理 Oracle NoSQL Database Cloud Service 表和索引。

本文章包含以下主题:

创建区间

在您注册 Oracle Cloud Infrastructure 时,Oracle 将使用包含所有云资源的根区间创建租户。然后,您可以在租户(根区间)内创建其他区间以及相应的策略,以控制对每个区间中资源的访问。在创建 Oracle NoSQL Database Cloud Service 表之前,Oracle 建议您设置表所属的区间。

您可以在 Oracle Cloud Infrastructure Identity and Access Management (IAM) 中创建区间。请参阅 Oracle Cloud Infrastructure 文档中的设置租户管理区间

创建单例表

您可以从 NoSQL 控制台创建新的 Oracle NoSQL Database Cloud Service 表。

NoSQL 控制台允许您以两种模式创建 Oracle NoSQL Database Cloud Service 表:
  1. 简单输入模式:可以使用此模式以声明方式创建 NoSQL Database Cloud Service 表,即无需编写 DDL 语句。
  2. 高级 DDL 输入模式:可以使用此模式通过 DDL 语句创建 NoSQL Database Cloud Service 表。

创建单例表:简单输入模式

了解如何使用简单输入表创建模式从 NoSQL 控制台创建表。

创建表:
  1. Infrastructure Console 访问 NoSQL 控制台。请参阅从基础结构控制台访问服务
  2. 单击创建表
  3. 在“创建表”对话框中,为表创建模式选择简单输入
  4. 预留容量下,您具有以下选项。
    • 始终免费配置

      启用切换按钮以创建“始终免费”NoSQL 表。禁用切换按钮将创建常规 NoSQL 表。您最多可以在租户中创建三个“始终免费”NoSQL 表。如果租户中有三个“始终免费”NoSQL 表,则禁用用于创建“始终免费”SQL 表的切换按钮。

      如果启用切换按钮以创建“始终免费”NoSQL 表,则会为“读取容量”、“写入容量”和“磁盘存储”字段分配默认值。容量模式变为 Provisioned Capacity 。这些值不可更改。


      如果要创建常规表,请禁用切换按钮。您可以为表输入适当的容量值。
      • 读取容量 (ReadUnits):输入读取单位数。有关读取单位的信息,请参见 Estimating Capacity
      • 写入容量 (WriteUnits):输入写入单位数。有关写入单位的信息,请参见 Estimating Capacity
      • 磁盘存储 (GB):指定表要使用的磁盘空间 (GB)。要了解存储容量,请参见 Estimating Capacity


    • 容量模式

      您可以将“容量”模式的选项指定为“预配容量”“按需容量”。“预配容量”和“按需容量”模式是互斥的选项。如果为表启用“按需容量”,则不需要指定表的读/写容量。按实际读取和写入单位使用量收费,而非预配使用量收费。

      如果满足以下任一条件,为表启用按需扩容是一个不错的选择:
      1. 创建具有未知工作量的新表。
      2. 您有不可预测的应用程序流量。
      3. 您更喜欢仅为使用的内容付费。
      对表启用按需扩容的限制:
      1. On Demand Capacity 将表的容量限制为 5,000 次写入和 10,000 次读取。
      2. 每个租户的按需容量 (On Demand Capacity) 表的数量限制为 3 个。
      3. 对于按需容量表单位,您支付的单位数量比预配的表单位多。


      选择按需容量将禁用始终免费配置。“读取容量”和“写入容量”输入框变为只读,并显示文本按需容量。On Demand Capacity 表将在其读取和写入容量列中显示 On Demand Capacity 。如果“容量”模式为按需容量,则禁用“始终免费”控制。


  5. 名称字段中,输入在租户中唯一的表名。
    表名必须符合 Oracle NoSQL Database Cloud Service 命名约定。请参阅 Oracle NoSQL Database Cloud Service 限制
  6. 主键列部分中,输入主键详细信息:
    • 列名:为表中的主键输入列名。要了解列命名要求,请参阅 Oracle NoSQL Database Cloud Service Limits
    • 类型:选择主键列的数据类型。
    • 精度:此项仅适用于 TIMESTAMP 类型的列。时间戳值的精度为小数秒,范围从 0 到 9。例如,精度为 0 表示不存储小数秒,3 表示时间戳存储毫秒,9 表示精度为纳秒。0 表示最小精度,9 表示最大精度。
    • 设置为分片键:单击此选项可将此主键列设置为分片键。分片键是在 Oracle NoSQL Database Cloud Service 集群中分发数据以提高效率,并定位在本地共享分片键的记录以方便参考和访问。共享分片密钥的记录存储在同一物理位置中,可以原子性和高效地访问。
    • + 其他主键列:单击此按钮可在创建组合(多列)主键时添加更多列。
    • 创建组合主键时,使用向上和向下箭头更改列的顺序。

  7. 部分中,输入非主列详细信息:

    • 列名:输入列名。确保符合 Oracle NoSQL Database Cloud Service Limits 中所述的列命名要求。
    • 类型:选择列的数据类型。
    • 精度:此项仅适用于 TIMESTAMP 类型的列。时间戳值的精度为小数秒,范围从 0 到 9。例如,精度为 0 表示不存储小数秒,3 表示时间戳存储毫秒,9 表示精度为纳秒。0 表示最小精度,9 表示最大精度。
    • 大小:这仅适用于 BINARY 类型的列。指定大小(字节),以使二进制文件成为固定二进制文件。
    • 默认值:(可选)为列提供默认值。

      注意:

      无法为二进制和 JSON 数据类型列指定默认值。
    • 值不为 NULL:单击此选项可指定列必须始终具有值。
    • + 其他列:单击此按钮可添加更多列。
    • 单击“删除”图标可以删除列。
  8. (可选)要指定高级选项,请单击显示高级选项并输入高级详细信息:
    • 表生存时间(天):(可选)为表中的行指定失效持续时间(天数)。天数后,行将自动失效,并且不再可用。默认值为零,表示没有到期时间。

      注意:

      更新表生存时间 (TTL) 不会更改表中任何现有数据的 TTL 值。新的 TTL 值将仅应用于在修改此值后添加到表的那些行以及未为其提供覆盖行特定值的行。
    标记部分中:
    • 标记名称空间:从选择列表中选择标记名称空间。标记名称空间类似于标记键的容器。它不区分大小写,并且在租户中必须唯一。
    • 标记键:输入用于引用标记的名称。标记键不区分大小写,在名称空间中必须唯一。
    • 值:输入用于指定标记的值。
    • + 其他标记:单击此项可添加更多标记。

  9. 单击创建表
该表将创建并列在 NoSQL 控制台中。
要查看当前页面的帮助,请单击页面顶部的帮助链接。

创建单例表:高级 DDL 输入模式

了解如何使用高级 DDL 输入表创建模式从 NoSQL 控制台创建表。

创建表:
  1. Infrastructure Console 访问 NoSQL 控制台。请参阅从基础结构控制台访问服务
  2. 单击创建表
  3. 在“创建表”窗口中,为表创建模式选择高级 DDL 输入
  4. 预留容量下,您具有以下选项。
    • 始终免费配置

      启用切换按钮以创建“始终免费”NoSQL 表。禁用切换按钮将创建常规 NoSQL 表。您最多可以在租户中创建三个“始终免费”NoSQL 表。如果租户中有三个“始终免费”NoSQL 表,则禁用用于创建“始终免费”SQL 表的切换按钮。

      如果启用切换按钮以创建“始终免费”NoSQL 表,则会为“读取容量”、“写入容量”和“磁盘存储”字段分配默认值。容量模式变为 Provisioned Capacity 。这些值不可更改。


      如果要创建常规表,请禁用切换按钮。您可以为表输入适当的容量值。
      • 读取容量 (ReadUnits):输入读取单位数。有关读取单位的信息,请参见 Estimating Capacity
      • 写入容量 (WriteUnits):输入写入单位数。有关写入单位的信息,请参见 Estimating Capacity
      • 磁盘存储 (GB):指定表要使用的磁盘空间 (GB)。要了解存储容量,请参见 Estimating Capacity


    • 容量模式

      您可以将“容量”模式的选项指定为“预配容量”“按需容量”。“预配容量”和“按需容量”模式是互斥的选项。如果为表启用“按需容量”,则不需要指定表的读/写容量。按实际读取和写入单位使用量收费,而非预配使用量收费。

      如果满足以下任一条件,为表启用按需扩容是一个不错的选择:
      1. 创建具有未知工作量的新表。
      2. 您有不可预测的应用程序流量。
      3. 您更喜欢仅为使用的内容付费。
      对表启用按需扩容的限制:
      1. On Demand Capacity 将表的容量限制为 5,000 次写入和 10,000 次读取。
      2. 每个租户的按需容量 (On Demand Capacity) 表的数量限制为 3 个。
      3. 对于按需容量表单位,您支付的单位数量比预配的表单位多。


      选择按需容量将禁用始终免费配置。“读取容量”和“写入容量”输入框变为只读,并显示文本按需容量。On Demand Capacity 表将在其读取和写入容量列中显示 On Demand Capacity 。如果“容量”模式为按需容量,则禁用“始终免费”控制。


  5. DDL 输入部分中,输入查询的创建表 DDL 语句。您可能会收到一条错误,指出您的语句不完整或有故障。请参阅在 OCI 控制台中调试 SQL 语句错误,了解 OCI 控制台中可能存在的错误以及如何修复这些错误。有关 create table 语句的示例,请参阅开发人员指南
  6. (可选)要指定高级选项,请单击显示高级选项并输入高级详细信息:
    • 标记名称空间:从选择列表中选择标记名称空间。标记名称空间类似于标记键的容器。它不区分大小写,并且在租户中必须唯一。
    • 标记键:输入用于引用标记的名称。标记键不区分大小写,在名称空间中必须唯一。
    • 值:输入用于指定标记的值。
    • + 其他标记:单击此项可添加更多标记。

  7. 单击创建表
该表将创建并列在 NoSQL 控制台中。
要查看当前页面的帮助,请单击页面顶部的帮助链接。

创建子表

使用 Oracle NoSQL Database,可以在分层结构(作为父子表)中创建表。

表层次

可以使用 create table 语句将表创建为另一个表的子表,然后该表将成为新表的父表。这是通过使用子表的组合名称 (name_path) 来完成的。组合名称由以点分隔的标识符的数字 N(N > 1) 组成。最后一个标识符是子表的本地名称,第一个 N-1 标识符是父表的名称。
   
           A   
         /   \ 
      A.B    A.G  
       /  
    A.B.C   
     /  
   A.B.C.D

最顶部的父表是 A。子表 B 获得组合名称 A.B. 子表 C 的下一级别获得组合名称 A.B.C 等。

子表的属性:

  • 创建子表时,无法指定读取容量、写入容量或磁盘存储限制。子表共享父表中的相应值。
  • 子表计入租户的表总数。
  • 父表及其子表始终位于同一区间中。
  • 在父级别收集和汇总度量信息。在子表级别看不到任何度量。
  • 子表有自己的标记,独立于父表。
  • 子表还会继承父表的容量定价模型。例如,如果为父表配置了 On Demand Capacity,则也可以为子表配置相同的容量定价模型。

父子表中的事务处理

父表和子表共享相同的分片键。使用子表,您可以使用以下两个简单步骤跨多个对象实现 ACID 事务:
  • 将一个表声明为另一个表的子项。
  • 使用 writeMutliple API 为父表和子表添加操作。
如果子表不存在,则跨多个对象实现 ACID 事务是一个繁琐的过程。如果没有子表,则执行以下操作:
  • 查找要包括在事务处理中的所有对象的分片键值。
  • 确保所有对象的分片键相同。
  • 使用 writeMutliple API 将每个对象添加到集合。

使用子表可以轻松跨多个对象实现 ACID 事务。

子表中的授权:

如果您不拥有某个表,并且希望从中读取、删除或插入到此表中,则必须满足两个条件:
  • 您对子表具有特定权限 (READ/INSERT/DELETE)。
  • 对于层次结构中特定子表的父表,您具有相同的权限或至少读取权限。

有关更多详细信息,请参见 IAM policies for authorization

例如,如果要将数据插入不归您所有的子表 myTable.child1,则必须对子表具有 INSERT 权限,对 myTable 具有 READ 和/或 INSERT 权限。向子表授予权限与向父表授予权限无关。这意味着您可以向子表授予特定权限,而不必为其父表授予相同的权限。任何父/子联接查询都需要对查询中使用的所有表具有相关权限。有关更多详细信息,请参阅将左外部联接与父子表一起使用

创建子表

注意:

未指定 "Read Capacity"、"Write Capacity" 和 "Disk Storage" 字段,因为子表从顶层表继承了这些限制。为顶层表设置的限制将自动应用于子表。

查看子表的详细信息

创建子表后,可以查看其详细信息。