{
  "code": null,
  "collection": "architecture",
  "href": "https://banes-lab.com/ontology#architecture-acid",
  "id": "acid",
  "kind": "model",
  "layer": {
    "href": "https://banes-lab.com/ontology/schema#layer-atomic-boundary",
    "json": "https://banes-lab.com/json/records/layer/atomic-boundary",
    "label": "Atomic Boundary",
    "markdown": "https://banes-lab.com/records/layer/atomic-boundary.md",
    "ref": "layer:atomic-boundary"
  },
  "name": "ACID",
  "ref": "architecture:acid",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-atomicity",
          "json": "https://banes-lab.com/json/records/architecture/atomicity",
          "label": "Atomicity",
          "markdown": "https://banes-lab.com/records/architecture/atomicity.md",
          "ref": "architecture:atomicity"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-consistency",
          "json": "https://banes-lab.com/json/records/architecture/consistency",
          "label": "Consistency",
          "markdown": "https://banes-lab.com/records/architecture/consistency.md",
          "ref": "architecture:consistency"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-isolation",
          "json": "https://banes-lab.com/json/records/architecture/isolation",
          "label": "Isolation",
          "markdown": "https://banes-lab.com/records/architecture/isolation.md",
          "ref": "architecture:isolation"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-durability",
          "json": "https://banes-lab.com/json/records/lexicon/durability",
          "label": "Durability",
          "markdown": "https://banes-lab.com/records/lexicon/durability.md",
          "ref": "lexicon:durability"
        }
      ],
      "relation": "requires"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-correctness",
          "json": "https://banes-lab.com/json/records/architecture/correctness",
          "label": "Correctness",
          "markdown": "https://banes-lab.com/records/architecture/correctness.md",
          "ref": "architecture:correctness"
        }
      ],
      "relation": "reinforces"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-strong-transactional-guarantees",
          "json": "https://banes-lab.com/json/records/lexicon/strong-transactional-guarantees",
          "label": "Strong Transactional Guarantees",
          "markdown": "https://banes-lab.com/records/lexicon/strong-transactional-guarantees.md",
          "ref": "lexicon:strong-transactional-guarantees"
        }
      ],
      "relation": "enables"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-distributed-availability",
          "json": "https://banes-lab.com/json/records/lexicon/distributed-availability",
          "label": "Distributed Availability",
          "markdown": "https://banes-lab.com/records/lexicon/distributed-availability.md",
          "ref": "lexicon:distributed-availability"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-base-eventual-consistency",
          "json": "https://banes-lab.com/json/records/lexicon/base-eventual-consistency",
          "label": "BASE/Eventual Consistency",
          "markdown": "https://banes-lab.com/records/lexicon/base-eventual-consistency.md",
          "ref": "lexicon:base-eventual-consistency"
        }
      ],
      "relation": "tensions-with"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#tension-acid-distributed-availability",
          "json": "https://banes-lab.com/json/records/tension/acid-distributed-availability",
          "label": "ACID / Distributed Availability",
          "markdown": "https://banes-lab.com/records/tension/acid-distributed-availability.md",
          "ref": "tension:acid-distributed-availability"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-acid-base-eventual-consistency",
          "json": "https://banes-lab.com/json/records/tension/acid-base-eventual-consistency",
          "label": "ACID / BASE/Eventual Consistency",
          "markdown": "https://banes-lab.com/records/tension/acid-base-eventual-consistency.md",
          "ref": "tension:acid-base-eventual-consistency"
        }
      ],
      "relation": "tensions"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-partial-commit",
          "json": "https://banes-lab.com/json/records/lexicon/partial-commit",
          "label": "Partial Commit",
          "markdown": "https://banes-lab.com/records/lexicon/partial-commit.md",
          "ref": "lexicon:partial-commit"
        }
      ],
      "relation": "violated-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-introduce-transaction-boundary",
          "json": "https://banes-lab.com/json/records/lexicon/introduce-transaction-boundary",
          "label": "Introduce Transaction Boundary",
          "markdown": "https://banes-lab.com/records/lexicon/introduce-transaction-boundary.md",
          "ref": "lexicon:introduce-transaction-boundary"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-invariant-check",
          "json": "https://banes-lab.com/json/records/lexicon/invariant-check",
          "label": "Invariant Check",
          "markdown": "https://banes-lab.com/records/lexicon/invariant-check.md",
          "ref": "lexicon:invariant-check"
        }
      ],
      "relation": "refactored-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#vocabulary-severity-contextual",
          "json": "https://banes-lab.com/json/records/vocabulary/severity-contextual",
          "label": "contextual",
          "markdown": "https://banes-lab.com/records/vocabulary/severity-contextual.md",
          "ref": "vocabulary:severity-contextual"
        }
      ],
      "relation": "severity"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-category-transactions-state-concurrency",
          "json": "https://banes-lab.com/json/records/architecture-category/transactions-state-concurrency",
          "label": "Transactions / State / Concurrency",
          "markdown": "https://banes-lab.com/records/architecture-category/transactions-state-concurrency.md",
          "ref": "architecture-category:transactions-state-concurrency"
        }
      ],
      "relation": "category"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-category-correctness-determinism-verification",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-correctness-determinism-verification",
          "label": "Correctness / Determinism / Verification",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md",
          "ref": "chapter:/ontology#architecture-category-correctness-determinism-verification"
        },
        {
          "href": "https://banes-lab.com/ontology#architecture-category-transactions-state-concurrency",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-transactions-state-concurrency",
          "label": "Transactions / State / Concurrency",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-transactions-state-concurrency.md",
          "ref": "chapter:/ontology#architecture-category-transactions-state-concurrency"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-correctness-determinism-verification",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-correctness-determinism-verification",
          "label": "Correctness / Determinism / Verification",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-correctness-determinism-verification.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-correctness-determinism-verification"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-transactions-state-concurrency",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-transactions-state-concurrency",
          "label": "Transactions / State / Concurrency",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-transactions-state-concurrency.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-transactions-state-concurrency"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#the-vocabulary-severity",
          "json": "https://banes-lab.com/json/ontology/schema/the-vocabulary-severity",
          "label": "Severity levels",
          "markdown": "https://banes-lab.com/ontology/schema/the-vocabulary-severity.md",
          "ref": "chapter:/ontology/schema#the-vocabulary-severity"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#the-resolutions",
          "json": "https://banes-lab.com/json/ontology/schema/the-resolutions",
          "label": "The resolutions",
          "markdown": "https://banes-lab.com/ontology/schema/the-resolutions.md",
          "ref": "chapter:/ontology/schema#the-resolutions"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "summary": "A conceptual representation of the four guarantees of a database transaction: atomicity, consistency, isolation and durability.",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/ontology#architecture-transaction-boundary",
      "json": "https://banes-lab.com/json/records/architecture/transaction-boundary",
      "label": "Transaction Boundary",
      "markdown": "https://banes-lab.com/records/architecture/transaction-boundary.md",
      "ref": "architecture:transaction-boundary"
    },
    "previous": {
      "href": "https://banes-lab.com/ontology#architecture-atomicity",
      "json": "https://banes-lab.com/json/records/architecture/atomicity",
      "label": "Atomicity",
      "markdown": "https://banes-lab.com/records/architecture/atomicity.md",
      "ref": "architecture:atomicity"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/records/architecture",
    "label": "Architecture principles",
    "markdown": "https://banes-lab.com/api/records/architecture.md",
    "ref": "api:records/architecture"
  },
  "aliases": [
    "Atomicity, Consistency, Isolation, Durability"
  ],
  "exemplar": {
    "after": "await database.transaction({ isolation: \"serializable\" }, async tx => {\n  await tx.foos.save(foo);\n  await tx.bars.save(bar);\n  assertInvariant(foo, bar);\n});",
    "before": "await fooDb.write(foo);\nawait barDb.write(bar);",
    "lang": "ts",
    "medium": "code"
  },
  "formedBy": null,
  "scope": [
    "database",
    "transaction"
  ],
  "severity": "contextual"
}
