NoSQL database
datanosql-database
Key-value, wide-column or document datastore.
- Category
- Data
- Properties
- 15
- Components
- 47
- Rules
- 2
A node of this kind resolves each property from its own props, then the component's defaults, then the default below.
| property | type | values | required | default |
|---|---|---|---|---|
| backupEnabled | boolean | — | no | false |
| backupRetentionDays | integer | — | no | — |
| bucketing | 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 | integer | — | no | — |
| quorumWrites | integer | — | no | — |
| replication | enum | single-region | multi-region-single-leader | multi-region-multi-leader | leaderless | no | single-region |
| replicationFactor | integer | — | no | — |
| tombstoneTtlDays | integer | — | no | — |
multi-leader-store-without-conflict-policy
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.
- — 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-path-without-cache
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.
- — 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
vendor-neutral
alibabacloud
aws
azure
cloudflare
default
Apache AccumuloaccumuloAerospike DatabaseaerospikeApache CassandracassandraCouchbasecouchbaseApache CouchDBcouchdbDataStax Enterprisedatastax-enterpriseFoundationDBfoundationdbApache HBasehbaseMarkLogic ServermarklogicMongoDBmongodbMongoDB Atlasmongodb-atlasNoSQL storenosql-storeOrientDBorientdbRavenDBravendbRethinkDBrethinkdbRiak KVriakScyllaDBscylladbTiKVtikvYDBydb
gcp
# 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