{
  "slug": "novelsm",
  "term": "NoveLSM",
  "aliases": [],
  "definition": "NoveLSM is a research LSM key-value store that combines a DRAM memtable with a mutable, persistent skip list in byte-addressable nonvolatile memory.",
  "note": "Write path: The persistent memtable accepts direct updates while background compaction proceeds. Its inserts avoid a separate log; DRAM updates still require logging. Recovery remaps the skip list and orders its versions with DRAM logs. [paper]\n\nRead path: Searches can run across levels concurrently, but a lower-level match cannot be returned before higher levels have finished and ruled out a newer value. First completion is not necessarily the current value. [paper]\n\nEvaluation: The paper emulated NVM using a NUMA memory socket, throttled bandwidth and injected write delay. Its default model used 100 ns reads, 500 ns writes and 5 GB/s bandwidth. These are experimental settings, not measured specifications of a persistent-memory product. [paper]\n\nArtifact: At revision 9ec07528, run_restart.sh waits five seconds, kills db_bench with SIGKILL and later removes the database LOCK file before reopening it. This exercises process restart, not power-loss persistence. The README labels the implementation beta and describes changes to transactions and read threading. [restart] [readme]",
  "status": "research",
  "advantages": [],
  "limitations": [],
  "related": [
    "lsm-tree",
    "persistent-memory",
    "sstable",
    "persistence-ordering",
    "crash-consistency"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-14",
  "citations": [
    {
      "id": "paper",
      "title": "Kannan et al. Redesigning LSMs for Nonvolatile Memory with NoveLSM. USENIX ATC 2018, pp. 993-1005, sections 2.4, 4 and 5.",
      "url": "https://research.cs.wisc.edu/adsl/Publications/joint/atc-novelsm18.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "restart",
      "title": "NoveLSM 9ec07528: process termination, restart and manual lock removal in run_restart.sh.",
      "url": "https://github.com/sudarsunkannan/lsm_nvm/blob/9ec0752804fa7c5679d82a164c8fe47e8c594819/scripts/run_restart.sh",
      "accessed": "2026-11-14"
    },
    {
      "id": "readme",
      "title": "NoveLSM 9ec07528: beta implementation, transaction changes and read-thread configuration.",
      "url": "https://github.com/sudarsunkannan/lsm_nvm/blob/9ec0752804fa7c5679d82a164c8fe47e8c594819/README.md",
      "accessed": "2026-11-14"
    }
  ],
  "provenance": [
    "The full ATC 2018 paper and pinned author artifact were inspected. No NoveLSM execution, performance replication or crash-consistency proof is claimed. [paper] [restart] [readme]"
  ]
}
