---
id: "nosql-database"
type: "kind"
category: "data"
url: "https://localhost:3000/catalogue/kinds/nosql-database"
---

# NoSQL database

Key-value, wide-column or document datastore.

| | |
|---|---|
| Category | Data |
| Properties | 15 |
| Components | 47 |
| Rules | 2 |

## Properties

| property | type | values | required | default |
|---|---|---|---|---|
| `backupEnabled` | boolean | — | no | false |
| `backupRetentionDays` | integer | — | no | — |
| `bucketing` (advanced) | boolean | — | no | false |
| `conflictResolution` | enum | `none`, `last-writer-wins`, `vector-clock`, `app-merge` | no | — |
| `consistency` | enum | `eventual`, `tunable`, `strong` | no | "eventual" |
| `encryptionAtRest` | boolean | — | no | false |
| `instances` | integer | — | no | — |
| `managed` | boolean | — | no | false |
| `model` | enum | `key-value`, `wide-column`, `document` | yes | — |
| `partitionKey` | string | — | no | — |
| `quorumReads` (advanced) | integer | — | no | — |
| `quorumWrites` (advanced) | integer | — | no | — |
| `replication` | enum | `single-region`, `multi-region-single-leader`, `multi-region-multi-leader`, `leaderless` | no | "single-region" |
| `replicationFactor` | integer | — | no | — |
| `tombstoneTtlDays` (advanced) | integer | — | no | — |

## Rules for this kind · 2

### Multi-leader store without a conflict policy `multi-leader-store-without-conflict-policy` (warning)

- Page: https://localhost:3000/catalogue/rules/multi-leader-store-without-conflict-policy.md
- Why: Multi-leader replication accepts concurrent writes in several regions. With no conflict resolution policy declared, divergent replicas are reconciled by accident rather than by design.
- Applies to: every node of kind nosql-database
- Message: Store '{{node.id}}' is multi-leader across regions with no conflict resolution policy. Declare last-writer-wins, vector-clock or app-merge.

It fires when:

- all of these hold:
  - the node's `replication` is "multi-region-multi-leader"
  - any of these hold:
    - the node's `conflictResolution` has no value
    - the node's `conflictResolution` is "none"

### Read-heavy datastore without a cache `read-heavy-path-without-cache` (warning)

- Page: https://localhost:3000/catalogue/rules/read-heavy-path-without-cache.md
- Why: The design states a read-heavy workload and application servers read this datastore directly, yet the design has no cache anywhere. Every read pays a database round trip.
- Applies to: every node of kind sql-database or nosql-database
- Message: Datastore '{{node.id}}' serves a read-heavy workload directly from application servers and the design has no cache.

It fires when:

- all of these hold:
  - the design requirement `traffic.readWriteRatio` is a number greater than 10
  - the node has at least one synchronous incoming edge from an app-server
  - this does not hold:
    - the design contains a node of kind cache

## Components · 47

### vendor-neutral

- [Generic NoSQL database](https://localhost:3000/catalogue/components/nosql-database.md) `nosql-database` — the kind itself

### alibabacloud

- [ApsaraDB for HBase](https://localhost:3000/catalogue/components/alibaba-apsaradb-hbase.md) `alibaba-apsaradb-hbase` — 4 defaults
- [ApsaraDB for MongoDB](https://localhost:3000/catalogue/components/alibaba-apsaradb-mongodb.md) `alibaba-apsaradb-mongodb` — 3 defaults
- [Lindorm](https://localhost:3000/catalogue/components/alibaba-lindorm.md) `alibaba-lindorm` — 2 defaults
- [Tablestore](https://localhost:3000/catalogue/components/alibaba-tablestore.md) `alibaba-tablestore` — 5 defaults

### aws

- [Amazon CloudFront KeyValueStore](https://localhost:3000/catalogue/components/aws-cloudfront-keyvaluestore.md) `aws-cloudfront-keyvaluestore` — 5 defaults
- [Amazon Cognito Sync](https://localhost:3000/catalogue/components/aws-cognito-sync.md) `aws-cognito-sync` — 5 defaults
- [Amazon DocumentDB](https://localhost:3000/catalogue/components/aws-documentdb.md) `aws-documentdb` — 8 defaults
- [AWS HealthLake](https://localhost:3000/catalogue/components/aws-healthlake.md) `aws-healthlake` — 5 defaults
- [Amazon Keyspaces (for Apache Cassandra)](https://localhost:3000/catalogue/components/aws-keyspaces.md) `aws-keyspaces` — 7 defaults
- [Amazon DynamoDB](https://localhost:3000/catalogue/components/dynamodb.md) `dynamodb` — 7 defaults

### azure

- [Azure Cosmos DB](https://localhost:3000/catalogue/components/azure-cosmos-db.md) `azure-cosmos-db` — 7 defaults
- [Azure DocumentDB](https://localhost:3000/catalogue/components/azure-documentdb.md) `azure-documentdb` — 7 defaults
- [Azure Health Data Services](https://localhost:3000/catalogue/components/azure-health-data-services.md) `azure-health-data-services` — 2 defaults
- [Azure Managed Instance for Apache Cassandra](https://localhost:3000/catalogue/components/azure-managed-cassandra.md) `azure-managed-cassandra` — 8 defaults
- [Azure Table Storage](https://localhost:3000/catalogue/components/azure-table-storage.md) `azure-table-storage` — 6 defaults

### cloudflare

- [Workers KV](https://localhost:3000/catalogue/components/cloudflare-workers-kv.md) `cloudflare-workers-kv` — 4 defaults

### default

- [Apache Accumulo](https://localhost:3000/catalogue/components/accumulo.md) `accumulo` — 4 defaults
- [Aerospike Database](https://localhost:3000/catalogue/components/aerospike.md) `aerospike` — 4 defaults
- [Apache Cassandra](https://localhost:3000/catalogue/components/cassandra.md) `cassandra` — 5 defaults
- [Couchbase](https://localhost:3000/catalogue/components/couchbase.md) `couchbase` — 3 defaults
- [Apache CouchDB](https://localhost:3000/catalogue/components/couchdb.md) `couchdb` — 7 defaults
- [DataStax Enterprise](https://localhost:3000/catalogue/components/datastax-enterprise.md) `datastax-enterprise` — 5 defaults
- [FoundationDB](https://localhost:3000/catalogue/components/foundationdb.md) `foundationdb` — 5 defaults
- [Apache HBase](https://localhost:3000/catalogue/components/hbase.md) `hbase` — 4 defaults
- [MarkLogic Server](https://localhost:3000/catalogue/components/marklogic.md) `marklogic` — 5 defaults
- [MongoDB](https://localhost:3000/catalogue/components/mongodb.md) `mongodb` — 4 defaults
- [MongoDB Atlas](https://localhost:3000/catalogue/components/mongodb-atlas.md) `mongodb-atlas` — 7 defaults
- [NoSQL store](https://localhost:3000/catalogue/components/nosql-store.md) `nosql-store` — 2 defaults
- [OrientDB](https://localhost:3000/catalogue/components/orientdb.md) `orientdb` — 4 defaults
- [RavenDB](https://localhost:3000/catalogue/components/ravendb.md) `ravendb` — 4 defaults
- [RethinkDB](https://localhost:3000/catalogue/components/rethinkdb.md) `rethinkdb` — 4 defaults
- [Riak KV](https://localhost:3000/catalogue/components/riak.md) `riak` — 5 defaults
- [ScyllaDB](https://localhost:3000/catalogue/components/scylladb.md) `scylladb` — 5 defaults
- [TiKV](https://localhost:3000/catalogue/components/tikv.md) `tikv` — 5 defaults
- [YDB](https://localhost:3000/catalogue/components/ydb.md) `ydb` — 3 defaults

### gcp

- [Google Cloud Bigtable](https://localhost:3000/catalogue/components/bigtable.md) `bigtable` — 6 defaults
- [Google Cloud Firestore](https://localhost:3000/catalogue/components/firestore.md) `firestore` — 6 defaults
- [Cloud Healthcare API](https://localhost:3000/catalogue/components/google-cloud-healthcare-api.md) `google-cloud-healthcare-api` — 4 defaults
- [Firebase Realtime Database](https://localhost:3000/catalogue/components/google-firebase-realtime-database.md) `google-firebase-realtime-database` — 7 defaults
- [Firestore in Datastore mode](https://localhost:3000/catalogue/components/google-firestore-datastore-mode.md) `google-firestore-datastore-mode` — 7 defaults
- [Firestore with MongoDB compatibility](https://localhost:3000/catalogue/components/google-firestore-mongodb.md) `google-firestore-mongodb` — 7 defaults

### ibm

- [IBM Cloudant](https://localhost:3000/catalogue/components/ibm-cloudant.md) `ibm-cloudant` — 6 defaults
- [IBM Cloud Databases for MongoDB](https://localhost:3000/catalogue/components/ibm-databases-for-mongodb.md) `ibm-databases-for-mongodb` — 5 defaults

### oci

- [Autonomous AI JSON Database](https://localhost:3000/catalogue/components/oci-autonomous-json-database.md) `oci-autonomous-json-database` — 7 defaults
- [OCI Device Data FHIR Service](https://localhost:3000/catalogue/components/oci-device-data-fhir.md) `oci-device-data-fhir` — 2 defaults
- [Oracle NoSQL Database Cloud Service](https://localhost:3000/catalogue/components/oci-nosql-database.md) `oci-nosql-database` — 5 defaults

## Source (`kind` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../schema/kind.schema.json
# Non-relational datastore: key-value, wide-column or document (Cassandra, DynamoDB, MongoDB, Bigtable).
# conflictResolution is optional so multi-leader-store-without-conflict-policy can catch its absence.
schemaVersion: "1"
type: "kind"
id: "nosql-database"
category: "data"
properties:
  model:
    type: "enum"
    values: ["key-value", "wide-column", "document"]
    required: true
  consistency:
    type: "enum"
    values: ["eventual", "tunable", "strong"]
    default: "eventual"
  replication:
    type: "enum"
    values: ["single-region", "multi-region-single-leader", "multi-region-multi-leader", "leaderless"]
    default: "single-region"
  replicationFactor:
    type: "integer"
  conflictResolution:
    type: "enum"
    values: ["none", "last-writer-wins", "vector-clock", "app-merge"]
  quorumReads:
    type: "integer"
    advanced: true
  quorumWrites:
    type: "integer"
    advanced: true
  partitionKey:
    type: "string"
  bucketing:
    type: "boolean"
    default: false
    advanced: true
  tombstoneTtlDays:
    type: "integer"
    advanced: true
  backupEnabled:
    type: "boolean"
    default: false
  backupRetentionDays:
    type: "integer"
  encryptionAtRest:
    type: "boolean"
    default: false
  instances:
    type: "integer"
  managed:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/kinds/nosql-database
