{
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-16",
  "slug": "buffered-upsert",
  "term": "Buffered upsert",
  "aliases": [
    "Upsert message"
  ],
  "status": "research",
  "definition": "A buffered upsert encodes a deferred transformation of a key's value without first fetching that value.",
  "note": "In B-epsilon trees, pending transformations must be applied in insertion order when the key is queried or the messages reach its leaf. This is not simply SQL insert-or-update syntax, and it does not by itself specify transaction isolation or durable acknowledgement. [primer]",
  "related": [
    "b-epsilon-tree",
    "lsm-tree",
    "lsm-tombstone"
  ],
  "citations": [
    {
      "id": "primer",
      "title": "Michael A. Bender, Martin Farach-Colton, William Jannen, Rob Johnson, Bradley C. Kuszmaul, Donald E. Porter, Jun Yuan and Yang Zhan. An Introduction to B-epsilon-trees and Write-Optimization. ;login: 40(5), October 2015, pp. 22-28.",
      "url": "https://www.usenix.org/system/files/login/articles/login_oct15_05_bender.pdf",
      "accessed": "2026-10-16"
    },
    {
      "id": "hesela-buffered",
      "title": "Hesela. B-epsilon trees: visible updates, deferred work",
      "url": "https://hesela.com/analyses/b-epsilon-trees-buffered-updates/",
      "accessed": "2026-10-16"
    }
  ]
}
