Catalogue / Data

NoSQL database

datanosql-database

Key-value, wide-column or document datastore.

Category
Data
Properties
15
Components
47
Rules
2
Properties · 15 defined by this kind

A node of this kind resolves each property from its own props, then the component's defaults, then the default below.

propertytypevaluesrequireddefault
backupEnabledboolean—nofalse
backupRetentionDaysinteger—no—
bucketing · advancedboolean—nofalse
conflictResolutionenumnone | last-writer-wins | vector-clock | app-mergeno—
consistencyenumeventual | tunable | strongnoeventual
encryptionAtRestboolean—nofalse
instancesinteger—no—
managedboolean—nofalse
modelenumkey-value | wide-column | documentyes—
partitionKeystring—no—
quorumReads · advancedinteger—no—
quorumWrites · advancedinteger—no—
replicationenumsingle-region | multi-region-single-leader | multi-region-multi-leader | leaderlessnosingle-region
replicationFactorinteger—no—
tombstoneTtlDays · advancedinteger—no—
Rules for this kind · 2
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
Components · 47
Source
# 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

The same page as markdown, for an agent: /catalogue/kinds/nosql-database.md