Domain 4: NoSQL Database Service (20%)
Domain 4 of the 1Z0-1093-25 Oracle AI Cloud Database Services 2025 Professional exam covers Oracle NoSQL Database Cloud Service (NDCS). At 20% of the exam this is one of the heaviest domains, translating to roughly 10 questions out of 50. You must understand the data models, capacity model, security, multi-region replication, query language, and SDK ecosystem.
1. Service Overview and Architecture
Oracle NoSQL Database Cloud Service is a fully managed, serverless NoSQL database running on Gen 2 OCI infrastructure. It provides predictable single-digit millisecond latency at any scale with zero administration of servers, patching, or upgrades. (NDCS Features)
Architecture
NDCS uses a sharded (shared-nothing) architecture that distributes data uniformly across multiple shards in a cluster. Within each shard, storage nodes are replicated across multiple Availability Domains (ADs) or Fault Domains (FDs) to provide high availability, rapid failover, and load balancing. There is zero single point of failure. (Oracle NoSQL Technologies)
Key architectural points:
- Data is automatically partitioned across shards using the shard key portion of the primary key
- Rows sharing the same shard key are co-located on the same physical shard
- Replication across ADs/FDs is transparent; failover is automatic
- Oracle handles all infrastructure: hardware, software, security patching, monitoring, and upgrades
Responsibility Model
| Responsibility | Owner |
|---|---|
| Provisioning, patching, upgrading | Oracle |
| Scaling execution | Oracle (customer initiates) |
| Service health monitoring | Oracle |
| Application health monitoring | Customer |
| Backups and restores | Customer |
| Application-level security | Customer |
| Data encryption (at rest and in transit) | Oracle |
Source: NDCS Features
Exam trap: Backups are the customer's responsibility. Oracle provides the NoSQL Migrator tool to export data to OCI Object Storage, but scheduling and executing backups is not automatic. This contrasts with Autonomous Database where automatic backups are Oracle-managed.
2. Data Models and Table Types
NDCS supports three data models through a unified table API. (NDCS Features)
| Model | Description | Schema | Use Case |
|---|---|---|---|
| Fixed-Schema (Table) | Traditional structured tables with predefined column types | Rigid; schema changes require ALTER TABLE | Relational-like data with known structure |
| JSON (Document) | Schema-less JSON documents stored in a JSON column | Flexible; fields can vary per row | Semi-structured or evolving data |
| Key-Value | Simple key-value pairs via primary key + single value column | Minimal | Caching, session stores, simple lookups |
Table Types
| Type | Description |
|---|---|
| Singleton Table | Default. Standard table within a single region. Can be converted to Global Active Table by adding replicas. |
| Global Active Table | Multi-region replicated table with active-active configuration. Created by adding regional replicas to a singleton. |
| Child Table | Hierarchical table declared as child of a parent. Inherits shard key and capacity from parent. Enables ACID transactions across parent-child with writeMultiple API. |
| Always Free Table | Singleton table with fixed capacity (50 RU, 50 WU, 25 GB). Cannot be Global Active. Up to 3 per region. Phoenix region only. |
Source: Console Table Creation, NDCS Features
Table Hierarchies (Parent-Child)
Child tables enable data normalization with co-located access:
- Child rows are stored on the same shard as their parent (inherited shard key)
- Enables efficient left outer joins between parent and child
writeMultipleAPI provides ACID transactions across parent and child tables- Child inherits capacity and pricing model from the top-level parent
- Child tables count against the tenancy table limit
- Metrics are aggregated at the parent level only
Source: Console Table Creation
Exam trap: To access a child table, you need privileges on both the child AND the parent. Having INSERT on the child but no privilege on the parent will fail.
3. Supported Data Types
NDCS supports a rich set of data types for fixed-schema columns. (NDCS Reference)
| Data Type | Description | Storage Size (Index) | Primary Key Size |
|---|---|---|---|
| STRING | Unicode (UTF-8) | UTF-8 bytes + 1-4 length bytes | UTF-8 bytes + 1 null byte |
| INTEGER | 32-bit integer, variable encoding | 1-4 bytes | 5 bytes |
| LONG | 64-bit integer, variable encoding | 1-8 bytes | 10 bytes |
| FLOAT | 32-bit IEEE floating point | 4 bytes | 5 bytes |
| DOUBLE | 64-bit IEEE floating point | 8 bytes | 10 bytes |
| NUMBER | Arbitrary-precision signed decimal | Variable (expensive) | Variable |
| BINARY | Variable-length byte array | Number of bytes + size encoding | N/A |
| FIXED_BINARY | Fixed-size byte array | Exact byte count (no overhead) | N/A |
| BOOLEAN | TRUE or FALSE | 1 byte | N/A |
| TIMESTAMP | UTC point in time (precision 0-9) | 3-9 bytes | 3-9 bytes |
| UUID | Universally unique identifier (STRING subtype) | 16 bytes | 19 bytes |
| ENUM | Symbolic tokens from a defined set | Small integer (positional) | N/A |
| ARRAY | Ordered collection of typed items | Variable | N/A |
| MAP | Unordered string-keyed pairs | Variable (no NULL values) | N/A |
| RECORD | Fixed collection of key-value pairs | Variable | N/A |
| JSON | Any valid JSON data | Variable (with metadata overhead) | N/A |
Source: NDCS Reference
Best practice from Oracle: Use data types in this order of preference: INTEGER, LONG, FLOAT, DOUBLE, NUMBER. Avoid NUMBER unless necessary because it is the most expensive in both storage and processing.
Exam trap: JSON columns carry self-describing metadata overhead per document. Fixed-schema tables add exactly 1 byte overhead per record. If a question asks about storage efficiency, fixed-schema wins over JSON.
4. Table Design: Primary Keys, Shard Keys, and TTL
Primary Key Design
Every table requires a primary key. The primary key uniquely identifies each row and determines how data is distributed across shards.
CREATE TABLE IF NOT EXISTS products (
product_id STRING,
category STRING,
details JSON,
PRIMARY KEY(SHARD(category), product_id)
)
- Maximum primary key size: 64 bytes (NDCS Limits)
- Composite primary keys supported (multiple columns)
- Primary key columns are ordered; order matters for queries
Shard Key Design
The shard key is a subset of the primary key columns that determines which shard stores a row. Rows with the same shard key value are co-located.
PRIMARY KEY(SHARD(category), product_id)
-- 'category' is the shard key
-- Rows with same category value are co-located
Key shard key principles:
- Shard key determines data distribution across the cluster
- Co-located data enables efficient single-partition queries and ACID transactions
- A query that includes the complete shard key in the WHERE clause executes on a single partition (cheapest query type)
- Without the shard key, queries fan out to all partitions or all shards (expensive)
Source: Console Table Creation, Capacity Estimation
Exam trap: Choosing a shard key with low cardinality (few distinct values) creates hot spots. Choosing a shard key with extremely high cardinality (e.g., UUID) spreads data evenly but prevents co-located queries. The exam tests understanding of this trade-off.
Time-to-Live (TTL)
TTL specifies how long rows remain accessible before automatic expiration.
CREATE TABLE sensor_data (...) USING TTL 7 days
ALTER TABLE sensor_data USING TTL 30 days
- Set at table level or overridden per row
- Units: hours or days
- Default: 0 (no expiration)
- Updating table-level TTL does NOT retroactively affect existing rows; applies only to new rows or rows without a row-level override
- In Global Active Tables, expiration is replicated as an absolute timestamp, so rows expire simultaneously across all regions
Source: NDCS Reference, Global Active Tables
5. Capacity Model: Read Units, Write Units, and Storage
This is the most exam-critical section. Oracle tests capacity calculation knowledge heavily.
Unit Definitions
| Unit | Definition | Rounding |
|---|---|---|
| Read Unit (RU) | 1 KB of data read per second (eventually consistent) | Round up to next KB |
| Write Unit (WU) | 1 KB of data written per second | Round up to next KB |
| Storage | 1 GB of stored data | Per GB |
Source: NDCS Limits, Capacity Estimation
Consistency and Cost
| Consistency Model | Read Cost | Guarantee |
|---|---|---|
| Eventual Consistency | 1 RU per 1 KB | Data may not reflect the most recent write |
| Absolute Consistency | 2 RU per 1 KB (2x cost) | Data guaranteed to reflect the most recent write |
Exam trap: Absolute consistency reads cost exactly 2x eventual consistency. A 1.5 KB record costs 2 RU (eventual) or 4 RU (absolute). The rounding happens first (1.5 KB rounds to 2 KB = 2 RU), then the consistency multiplier applies (2 RU x 2 = 4 RU for absolute).
Write Cost with Indexes
Secondary indexes add write overhead. When a record is modified:
Write Units = record_size + (1 KB x number_of_indexes_affected)
Example: Updating a 1 KB record in a table with 1 secondary index costs:
- Old record (1 KB) + New record (1 KB) + Index update (1 KB) = 3 WU for the update
- Delete operations also consume WU for index cleanup
Source: Capacity Estimation
Additional Cost Factors
| Operation | Additional Cost |
|---|---|
IfAbsent / IfPresent conditional writes |
+2 RU for the read check |
setReturnRow() on write |
+2x record_size in RU |
| Batch query overhead | ~1 KB per batch boundary (key read) |
Provisioned vs. On-Demand Capacity
| Aspect | Provisioned | On-Demand |
|---|---|---|
| How it works | You set fixed RU, WU, and storage per table | Service auto-scales to workload |
| Max RU per table | 40,000 (non-hosted) | 10,000 (non-hosted) |
| Max WU per table | 20,000 (non-hosted) | 5,000 (non-hosted) |
| Table limit | No special limit | Max 3 On-Demand tables per region |
| Billing | Reserved capacity (lower per-unit cost) | Pay-per-use (higher per-unit cost) |
| Use case | Predictable, steady workloads | Unpredictable or bursty workloads |
| Mode change | Can switch to On-Demand once per day | Can switch to Provisioned once per day |
Source: NDCS Limits, NDCS Features
Throughput Change Limits
- Increases: Unlimited per day
- Decreases: Up to 4 per 24-hour period
- Mode change (Provisioned to/from On-Demand): Once per day
Exam trap: You can increase provisioned capacity unlimited times, but decreases are limited to 4 per day. This is a common trick question.
6. Service Limits
| Limit | Non-Hosted | Hosted |
|---|---|---|
| Max tables per region | 30 | 30 (customizable) |
| Max columns per table | 50 | 50 (customizable) |
| Max indexes per table | 5 | 5 (customizable) |
| Max row size | 512 KB | 512 KB (customizable) |
| Max primary key size | 64 bytes | 64 bytes (customizable) |
| Max secondary index key size | 64 bytes | 64 bytes (customizable) |
| Max table storage | 5 TB/tenant | 17.5 TB/tenant |
| Max regional RU (total) | 100,000 | 280,000 |
| Max regional WU (total) | 40,000 | 420,000 |
| Max DDL operations rate | 4 per minute | 4 per minute |
| Max WriteMultiple ops | 50 per request | 50 (customizable) |
| Max WriteMultiple data | 25 MB | 25 MB (customizable) |
| Max query string length | 10 KB | 10 KB (customizable) |
| Max table name length | 256 characters | 256 characters |
| Max column/index name | 64 characters | 64 characters |
| Max schema updates | 100 per table | 100 per table |
Source: NDCS Limits
Most limits are customizable via a Service Limits Update request in the OCI Console.
Exam trap: The default batch limit for query execution is 2,000 read units (~2 MB of data). This can only be decreased, not increased, via query-level options.
7. Always Free Tier
| Property | Value |
|---|---|
| Max tables | 3 per region |
| Read capacity | 50 RU (fixed, non-changeable) |
| Write capacity | 50 WU (fixed, non-changeable) |
| Storage | 25 GB (fixed, non-changeable) |
| Capacity mode | Provisioned only |
| Region availability | Phoenix only |
| Global Active Tables | Not supported |
| Conversion | Cannot convert to/from regular tables |
Inactivity Deletion Policy
| Days Inactive | Action |
|---|---|
| 30 days | Table moves to inactive state; admin notification sent |
| 75 days | Reminder notification sent |
| 90 days | Table automatically deleted |
Reactivation: Any DML operation (get, put, delete on rows) reactivates the table. DDL operations (ALTER TABLE, CREATE INDEX) do NOT count as activity.
Source: NDCS Features
Exam trap: Always Free tables are singleton only (no Global Active Tables), capacity is fixed (cannot be changed), and they are auto-deleted after 90 days of inactivity. DDL operations do not count as activity for preventing deletion.
8. Security Model
Encryption
| Layer | Method |
|---|---|
| At rest | AES-256 encryption |
| In transit | TLS 1.2 (HTTPS) |
| Customer-managed keys (CMEK) | Supported in Dedicated/Hosted environments only |
Source: NDCS Features
IAM Policies
NDCS uses OCI IAM for all access control. Three resource types are controlled independently. (Access Management)
| Resource Type | Controls |
|---|---|
| nosql-tables | Table DDL: CREATE, ALTER, DROP, MOVE |
| nosql-rows | Data DML: GET, PUT, DELETE, QUERY |
| nosql-indexes | Index DDL: CREATE INDEX, DROP INDEX |
| nosql-family | Umbrella covering all three above |
Verbs and Permissions
| Verb | nosql-tables | nosql-rows | nosql-indexes |
|---|---|---|---|
| inspect | List tables | N/A | List indexes |
| read | Get table metadata | Read rows | Get index metadata |
| use | Alter table limits | Read/write rows | N/A |
| manage | Full DDL control | Full DML control | Full index control |
Policy Syntax Examples
-- Tenancy-wide full access
allow group Admins to manage nosql-family in tenancy
-- Compartment-scoped read access
allow group Analytics to read nosql-rows in compartment Production
-- Table-specific row access (row-level security)
allow group DevTeam to manage nosql-rows in compartment Dev
where target.nosql-table.name = 'customer'
-- Specific permission control
allow group Ops to manage nosql-tables in compartment Dev
where any {request.permission = 'NOSQL_TABLE_CREATE',
request.permission = 'NOSQL_TABLE_DROP'}
Cross-Tenancy Access
NDCS supports cross-tenancy access using three policy verbs:
| Verb | Tenancy | Purpose |
|---|---|---|
| Endorse | Source | Declares what source group can do in other tenancies |
| Admit | Destination | Grants access to groups from other tenancies |
| Define | Both | Assigns aliases to tenancy/group OCIDs |
Source: Access Management
Auditing
Oracle logs all DDL API calls to NoSQL Database tables. Logs are available to customers for audit purposes. (NDCS Features)
Exam trap: Row-level security is implemented via IAM policy conditions (e.g., where target.nosql-table.name = 'tablename'), not through a separate row-level security mechanism inside the database. This is fundamentally different from relational database row-level security (VPD/FGAC).
9. Secondary Indexes
NDCS supports up to 5 secondary indexes per table (customizable). (NDCS Limits)
-- Index on a fixed-schema column
CREATE INDEX IF NOT EXISTS idx_category ON products (category)
-- Index on a JSON field (must specify type)
CREATE INDEX IF NOT EXISTS idx_screen ON products
(details.display.screenSize AS STRING)
Index Characteristics
| Property | Detail |
|---|---|
| Max per table | 5 (customizable) |
| Max index key size | 64 bytes (customizable) |
| JSON field indexing | Supported; must cast with AS type |
| Index name max length | 64 characters |
| Write cost impact | Each affected index adds ~1 KB WU per write |
| Covering index | Query answered entirely from index without table row fetch |
| Creation rate | Subject to DDL rate limit (4 per minute per region) |
Query Distribution with Indexes
| Scenario | Distribution | Cost |
|---|---|---|
| Query includes complete shard key | SINGLE_PARTITION | Lowest cost |
| Query uses primary key index, no shard key | ALL_PARTITIONS | Medium cost |
| Query uses secondary index, no shard key | ALL_SHARDS | Higher cost |
| Full table scan | ALL_PARTITIONS | Highest cost |
Source: NDCS Reference, Capacity Estimation
Exam trap: Index lookups themselves are free (no separate RU charge for the index scan), but reading the resulting rows consumes RU normally. A "covering index" query avoids the row fetch entirely, making it the cheapest indexed query.
10. Query Language
NDCS uses a SQL-like query language (not full SQL). (NDCS Reference)
Supported Syntax
SELECT <expression>
FROM <table_name>
[WHERE <expression>]
[GROUP BY <expression>]
[ORDER BY <expression> [ASC|DESC]]
[LIMIT <number>]
[OFFSET <number>]
Supported Aggregate Functions
count(*),count(expr)sum(expr)avg(expr)min(expr)max(expr)
Built-in Functions
modification_time($row)-- row modification timestampexpiration_time($row)-- row TTL expiration timecreation_time($row)-- row creation timestampremaining_days($row)-- days until TTL expiration
UPDATE Syntax
UPDATE products $p
SET TTL 30 DAYS
WHERE id = 'prod_123'
RETURNING remaining_days($p) AS Expires
What is NOT Supported
- JOINs (except parent-child left outer joins via table hierarchies)
- Subqueries
- CASE expressions in SELECT clause
- Nested aggregate functions
- DESCRIBE / SHOW TABLE statements
- Full-text indexes
- User/role management within the database
Source: NDCS Reference
Exam trap: NDCS query language looks like SQL but has significant limitations. No JOINs between unrelated tables, no subqueries, no CASE in SELECT. The only join type is a left outer join between parent and child tables in a hierarchy.
11. Global Active Tables (Multi-Region Replication)
Global Active Tables provide active-active multi-region replication. Any singleton table can become a Global Active Table by adding a regional replica. (Global Active Tables)
How It Works
- Create a singleton table in a region
- Freeze the table schema (change state from Mutable to Frozen)
- Add a regional table replica in another region
- Existing data is copied to the new replica (tracked as initialization percentage)
- Once initialization reaches 100%, DML is allowed on the new replica
- All subsequent writes replicate asynchronously across all regions
What Gets Replicated
- Table schema and secondary indexes
- All row data
- Storage capacity (identical across all replicas)
- Table default TTL (replicated as absolute timestamp)
- Read and write capacity defaults (can be customized per region)
Conflict Resolution
Last-writer-wins based on timestamp: When multiple regions update the same primary key, the write with the latest timestamp wins. Same rule applies to TTL updates.
Scope of Operations
| Operation | Scope | Propagation |
|---|---|---|
| Add/Drop Index | Global | All replicas |
| Change storage capacity | Global | All replicas |
| Change table TTL | Global | All replicas |
| Change read units | Local | Only target region |
| Change write units | Local | Only target region |
| Change capacity mode | Local | Only target region |
| OCI tags | Local | Not replicated |
Schema Changes on Global Active Tables
To modify the schema of a Global Active Table:
- Drop ALL regional replicas
- Alter the table schema
- Re-add regional replicas (data automatically re-populated)
Best practice: Include at least one JSON column to allow schema flexibility without needing to drop replicas.
Identity Columns and Global Active Tables
- Standard
GENERATED ALWAYS AS IDENTITYis NOT suitable for Global Active Tables (not guaranteed unique across regions) - Use UUID as primary key instead for global uniqueness
Required IAM Permissions
| Action | Sender Region | Existing Receiver Regions | New Receiver Region |
|---|---|---|---|
| Add replica | NOSQL_TABLE_ALTER | NOSQL_TABLE_ALTER | NOSQL_TABLE_CREATE |
| Drop replica | NOSQL_TABLE_ALTER | NOSQL_TABLE_ALTER | NOSQL_TABLE_DROP |
| Create index | NOSQL_INDEX_CREATE in all regions | -- | -- |
| Update limits/TTL | NOSQL_TABLE_ALTER in all regions | -- | -- |
Limitations
- Schema must be frozen before adding replicas
- Storage capacity must be identical across all regions
- ACID transactions are local to the region where the write occurred
- Eventual consistency for cross-region reads
- Always Free tables cannot be Global Active Tables
- Dedicated/Hosted environments do not support Global Active Tables
- Compartment with the same name must exist in the receiver region
Source: Global Active Tables
Exam trap: Schema must be FROZEN before adding replicas. To change the schema, you must drop ALL replicas first, alter the table, then re-add replicas. This is a disruptive operation. The exam will test whether you know this requirement.
Exam trap: ACID transactions in Global Active Tables are local to one region only. Cross-region consistency is eventual. If a question asks about transaction guarantees in multi-region, the answer is "local ACID, eventual cross-region."
12. Table States and Lifecycle
| State | Description |
|---|---|
| CREATING | Table being provisioned; not ready |
| ACTIVE | Stable, ready for use |
| UPDATING | Schema evolution, limit changes, or index operations in progress |
| DROPPING | Table being deleted; inaccessible |
| DROPPED | Deleted; name can be reused |
Source: NDCS Reference
13. SDK and Development Ecosystem
NoSQL Database SDKs
NDCS provides dedicated SDKs in six languages. These are distinct from the general OCI SDKs and provide richer NoSQL-specific functionality. (NoSQL SDK Drivers)
| Language | Package | Repository |
|---|---|---|
| Java | com.oracle.nosql.sdk:nosqldriver (Maven) |
GitHub |
| Python | borneo (PyPI), requires oci for cloud auth |
GitHub |
| Node.js | oracle-nosqldb (npm) |
GitHub |
| Go | github.com/oracle/nosql-go-sdk/nosqldb |
GitHub |
| C# / .NET | Oracle.NoSQL.SDK (NuGet) |
GitHub |
| Rust | oracle-nosql-rust-sdk (crates.io) |
GitHub |
Framework Integration
- Spring Data: Jakarta NoSQL and Eclipse TopLink compatibility
- OCI SDKs: REST-based alternative (Java, Python, JS, .NET, Go, Ruby, PL/SQL) with more limited NoSQL features
Key Advantage of NoSQL SDKs over OCI SDKs
NoSQL SDKs work with all three deployment targets using the same API:
- Oracle NoSQL Database Cloud Service (production)
- Oracle NoSQL Database on-premises (Enterprise/Community Edition)
- Oracle NoSQL Cloud Simulator (local development)
Oracle NoSQL Cloud Simulator
The Cloud Simulator is a locally deployable instance that emulates the full NDCS API for development and testing:
- Requires Java 8 or higher
- Runs on localhost (default port 8080)
- Downloaded separately from the Oracle NoSQL OTN download page
- All SDKs can connect to it with simple configuration changes
- Ideal for CI/CD pipelines and local development without cloud costs
Source: NoSQL SDK Drivers
OCI Management Interfaces
| Interface | Capabilities |
|---|---|
| OCI Console | Create/manage tables, view metrics, run queries, manage indexes |
| OCI CLI | oci nosql commands for all table and data operations |
| REST API | Full programmatic access to NDCS control and data planes |
| Terraform | OCI provider supports NoSQL table provisioning |
| Cloud Shell | Browser-based CLI with pre-configured OCI credentials |
Authentication Methods
| Method | Use Case |
|---|---|
OCI Configuration File (~/.oci/config) |
Developer workstations, CI/CD |
| Instance Principal | Applications running on OCI Compute |
| Delegation Token | Delegated access scenarios |
| Session Token | Temporary sessions |
| OKE Workload Identity | Applications in Oracle Kubernetes Engine |
Source: NDCS Overview
14. Backup and Restore
NDCS does not provide automatic backups. Backup and restore are customer responsibilities.
Approach
- Use the NoSQL Database Migrator tool to export table data to JSON or Parquet format
- Export targets: local files, OCI Object Storage, or AWS S3
- Import from: JSON, Parquet, CSV, MongoDB-formatted JSON, DynamoDB-formatted JSON
- The migrator operates at table granularity (one table per migration task)
readUnitsPercentandwriteUnitsPercentparameters control what percentage of provisioned capacity the migration uses (default: 90%)
Constraints During Migration
- NoSQL Migrator does not lock tables
- Avoid DML/DDL operations on the table during migration
- Avoid topology changes during migration
Source: NDCS Overview
Exam trap: Unlike Autonomous Database, NDCS has no automatic backup. You must implement your own backup strategy using the Migrator tool. This is a key differentiator the exam may test.
15. Integration with OCI Services
| OCI Service | Integration |
|---|---|
| OCI Functions | Serverless compute triggered by events; SDKs connect to NDCS |
| OCI Streaming | Real-time data ingestion pipelines feeding into NDCS |
| OCI Events | Event rules can trigger actions when NDCS DDL operations occur |
| OCI Object Storage | Export/import target for Migrator tool backups |
| API Gateway | Front NoSQL operations with REST endpoints |
| GoldenGate | Real-time replication to/from NoSQL |
| Terraform/Resource Manager | Infrastructure-as-code provisioning |
Oracle logs all DDL API calls for audit purposes, which integrates with OCI Audit service.
16. Dedicated (Hosted) Environment
For demanding workloads, NDCS offers a dedicated per-customer environment with higher limits. (NDCS Features)
| Property | Non-Hosted (Standard) | Hosted (Dedicated) |
|---|---|---|
| Max RU (all tables) | 100,000 per region | 280,000 |
| Max WU (all tables) | 40,000 per region | 420,000 |
| Max storage | 5 TB per tenant | 17.5 TB |
| Max RU per table | 40,000 | 100,000 |
| Max WU per table | 20,000 | 40,000 |
| Max storage per table | 5 TB | 5 TB |
| Pricing | Per-unit (RU/WU/GB) | Fixed monthly cost |
| CMEK support | No | Yes |
| Global Active Tables | Yes | No |
| Endpoint format | Standard OCI | <tenancyName>.nosql.<region>.<realm> |
Exam trap: Dedicated/Hosted environments do NOT support Global Active Tables. If a question combines "dedicated" and "multi-region replication," the answer involves this limitation.
17. Comparison with Other NoSQL Services (Context Only)
| Feature | Oracle NDCS | AWS DynamoDB | Azure Cosmos DB |
|---|---|---|---|
| Data models | Fixed-schema, JSON, Key-Value | Key-Value, Document | Multi-model (SQL, MongoDB, Cassandra, Gremlin, Table) |
| Capacity model | RU/WU/GB | RCU/WCU/GB | RU/s |
| Consistency | Eventual, Absolute | Eventual, Strong | 5 levels (Strong, Bounded Staleness, Session, Consistent Prefix, Eventual) |
| Multi-region | Global Active Tables | Global Tables | Multi-region writes |
| SQL support | SQL-like (limited) | PartiQL | Full SQL API |
| Free tier | 50 RU, 50 WU, 25 GB (Phoenix) | 25 RCU, 25 WCU, 25 GB | 1000 RU/s, 25 GB |
| Parent-child tables | Yes (table hierarchies) | No | No |
| Max item size | 512 KB | 400 KB | 2 MB |
Exam trap: Oracle NDCS absolute consistency is roughly equivalent to DynamoDB strong consistency (both 2x read cost). But Cosmos DB has five consistency levels, which Oracle does not match. The exam will not test other cloud providers directly, but understanding the terminology helps eliminate wrong answers.
18. Quick-Reference: Key Numbers to Memorize
| Metric | Value |
|---|---|
| Absolute consistency read cost | 2x eventual |
| Max tables per region | 30 |
| Max indexes per table | 5 |
| Max primary key size | 64 bytes |
| Max row size | 512 KB |
| Max columns per table | 50 |
| Max WriteMultiple operations | 50 per request |
| Max DDL operations | 4 per minute per region |
| Throughput decreases per day | 4 |
| Throughput increases per day | Unlimited |
| Mode change (Provisioned/On-Demand) | Once per day |
| On-Demand max RU per table | 10,000 |
| On-Demand max WU per table | 5,000 |
| On-Demand max tables per region | 3 |
| Always Free RU/WU/Storage | 50 / 50 / 25 GB |
| Always Free max tables | 3 (Phoenix only) |
| Always Free inactivity deletion | 90 days |
| Fixed-schema overhead per record | 1 byte |
| Query batch default limit | 2,000 RU |
References
- Oracle NoSQL Database Cloud Service Documentation
- NDCS Features
- NDCS Limits
- NDCS Reference (Data Types, DDL, DML)
- Capacity Estimation
- Global Active Tables
- Access Management and Security
- Console Table Creation
- NoSQL SDK Drivers
- Planning Your Service
- Oracle NoSQL Technologies Overview
- 1Z0-1093-25 Exam Page