{
  "code": null,
  "collection": "architecture",
  "href": "https://banes-lab.com/ontology#architecture-sequential-access",
  "id": "sequential-access",
  "kind": "pattern",
  "layer": {
    "href": "https://banes-lab.com/ontology/schema#layer-execution-core",
    "json": "https://banes-lab.com/json/records/layer/execution-core",
    "label": "Execution Core",
    "markdown": "https://banes-lab.com/records/layer/execution-core.md",
    "ref": "layer:execution-core"
  },
  "name": "Sequential Access",
  "ref": "architecture:sequential-access",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-ordered-read-model",
          "json": "https://banes-lab.com/json/records/lexicon/ordered-read-model",
          "label": "Ordered Read Model",
          "markdown": "https://banes-lab.com/records/lexicon/ordered-read-model.md",
          "ref": "lexicon:ordered-read-model"
        }
      ],
      "relation": "requires"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-memory-efficiency",
          "json": "https://banes-lab.com/json/records/architecture/memory-efficiency",
          "label": "Memory Efficiency",
          "markdown": "https://banes-lab.com/records/architecture/memory-efficiency.md",
          "ref": "architecture:memory-efficiency"
        }
      ],
      "relation": "reinforces"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-large-data-processing",
          "json": "https://banes-lab.com/json/records/lexicon/large-data-processing",
          "label": "Large Data Processing",
          "markdown": "https://banes-lab.com/records/lexicon/large-data-processing.md",
          "ref": "lexicon:large-data-processing"
        }
      ],
      "relation": "enables"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-lookup-performance",
          "json": "https://banes-lab.com/json/records/lexicon/lookup-performance",
          "label": "Lookup Performance",
          "markdown": "https://banes-lab.com/records/lexicon/lookup-performance.md",
          "ref": "lexicon:lookup-performance"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-random-access-requirement",
          "json": "https://banes-lab.com/json/records/lexicon/random-access-requirement",
          "label": "Random Access Requirement",
          "markdown": "https://banes-lab.com/records/lexicon/random-access-requirement.md",
          "ref": "lexicon:random-access-requirement"
        }
      ],
      "relation": "tensions-with"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/schema#tension-lookup-performance-sequential-access",
          "json": "https://banes-lab.com/json/records/tension/lookup-performance-sequential-access",
          "label": "Sequential Access / Lookup Performance",
          "markdown": "https://banes-lab.com/records/tension/lookup-performance-sequential-access.md",
          "ref": "tension:lookup-performance-sequential-access"
        },
        {
          "href": "https://banes-lab.com/ontology/schema#tension-random-access-requirement-sequential-access",
          "json": "https://banes-lab.com/json/records/tension/random-access-requirement-sequential-access",
          "label": "Sequential Access / Random Access Requirement",
          "markdown": "https://banes-lab.com/records/tension/random-access-requirement-sequential-access.md",
          "ref": "tension:random-access-requirement-sequential-access"
        }
      ],
      "relation": "tensions"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-random-access-over-a-stream",
          "json": "https://banes-lab.com/json/records/lexicon/random-access-over-a-stream",
          "label": "Random Access over a Stream",
          "markdown": "https://banes-lab.com/records/lexicon/random-access-over-a-stream.md",
          "ref": "lexicon:random-access-over-a-stream"
        }
      ],
      "relation": "violated-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-streaming-pipeline-dataflow-processing",
          "json": "https://banes-lab.com/json/records/architecture-category/streaming-pipeline-dataflow-processing",
          "label": "Streaming / Pipeline / Dataflow Processing",
          "markdown": "https://banes-lab.com/records/architecture-category/streaming-pipeline-dataflow-processing.md",
          "ref": "architecture-category:streaming-pipeline-dataflow-processing"
        }
      ],
      "relation": "category"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-space-complexity",
          "json": "https://banes-lab.com/json/records/architecture/space-complexity",
          "label": "Space Complexity",
          "markdown": "https://banes-lab.com/records/architecture/space-complexity.md",
          "ref": "architecture:space-complexity"
        }
      ],
      "relation": "refactors"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/ontology#architecture-category-scalability-performance-optimization",
          "json": "https://banes-lab.com/json/ontology/principles/architecture-category-scalability-performance-optimization",
          "label": "Scalability / Performance / Optimization",
          "markdown": "https://banes-lab.com/ontology/principles/architecture-category-scalability-performance-optimization.md",
          "ref": "chapter:/ontology#architecture-category-scalability-performance-optimization"
        },
        {
          "href": "https://banes-lab.com/ontology/lexicon#lexicon-category-streaming-pipeline-dataflow-processing",
          "json": "https://banes-lab.com/json/ontology/lexicon/lexicon-category-streaming-pipeline-dataflow-processing",
          "label": "Streaming / Pipeline / Dataflow Processing",
          "markdown": "https://banes-lab.com/ontology/lexicon/lexicon-category-streaming-pipeline-dataflow-processing.md",
          "ref": "chapter:/ontology/lexicon#lexicon-category-streaming-pipeline-dataflow-processing"
        },
        {
          "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 design pattern that reads a source in its stored order through a cursor or scan, instead of looking records up one by one.",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/ontology#architecture-forward-only-processing",
      "json": "https://banes-lab.com/json/records/architecture/forward-only-processing",
      "label": "Forward-Only Processing",
      "markdown": "https://banes-lab.com/records/architecture/forward-only-processing.md",
      "ref": "architecture:forward-only-processing"
    },
    "previous": {
      "href": "https://banes-lab.com/ontology#architecture-lazy-evaluation",
      "json": "https://banes-lab.com/json/records/architecture/lazy-evaluation",
      "label": "Lazy Evaluation",
      "markdown": "https://banes-lab.com/records/architecture/lazy-evaluation.md",
      "ref": "architecture:lazy-evaluation"
    }
  },
  "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": [],
  "exemplar": {
    "after": "for await (const foo of fooStore.scan({ orderBy: \"id\" })) {\n  processFoo(foo);\n}",
    "before": "for (const id of fooIds) await fooStore.randomRead(id);",
    "lang": "ts",
    "medium": "code"
  },
  "formedBy": null,
  "scope": [
    "file",
    "stream",
    "iterator"
  ],
  "severity": "contextual"
}
