https://slatedb.io logo
Join Discord
Powered by
# general
  • p

    Pierre

    11/27/2025, 6:21 PM
    Sweet sweet .asm crypto ;P
  • p

    Pierre

    11/27/2025, 9:18 PM
    @criccomini Counter-view: https://wpbindt.github.io/blog/red-code-blue-code/
  • a

    airhorns

    11/27/2025, 9:51 PM
    how are you folks storing rich structs in slatedb? one slatedb key per field, or serializing with something like rkyv or similar? something else? why one approach over the others?
  • Serde + bincode
    p

    Pierre

    11/27/2025, 9:53 PM
    Serde + bincode
    a
    • 2
    • 2
  • p

    Pierre

    11/27/2025, 9:58 PM
    Eg, https://github.com/Barre/ZeroFS/blob/main/zerofs/src/fs/inode.rs
  • p

    Pierre

    11/27/2025, 9:58 PM
    https://github.com/Barre/ZeroFS/blob/main/zerofs/src/fs/operations/file_ops.rs#L296
  • x

    xav

    11/27/2025, 10:48 PM
    is there a way to tie a write batch to a txn
  • i see write batch has a method to
    x

    xav

    11/27/2025, 11:02 PM
    i see write batch has a method to construct from a txn id but its not exposed publicly
    c
    • 2
    • 7
  • p

    Pierre

    11/28/2025, 2:15 PM
    I was thinking about this: https://github.com/slatedb/slatedb/issues/577 Couldn't this be achieved with "range tombstones"?
  • c

    criccomini

    11/28/2025, 3:30 PM
    🤔 how would that work? The tombstone would have to be seen when any key in the range is read. I think the natural conclusion is to put the range tombstone in the SST header, which is what RocksDB does
  • p

    Pierre

    11/28/2025, 3:32 PM
    https://github.com/facebook/rocksdb/wiki/DeleteRange-Implementation
  • I had this kind of wacky thought, which
    c

    criccomini

    11/28/2025, 3:33 PM
    I had this kind of wacky thought, which was we could actually go the complete opposite direction: put all SST metadata (including deletion vector) into a separate file. This would allow us to completely separate our metadata from the data storage format. So you could store files as Parquet, for example. Or JSON, or whatever.
    a
    r
    • 3
    • 4
  • p

    Pierre

    11/28/2025, 3:33 PM
    That's more API calls though
  • c

    criccomini

    11/28/2025, 3:34 PM
    Yep
  • p

    Pierre

    11/28/2025, 3:34 PM
    This looks very nice IHMO
  • c

    criccomini

    11/28/2025, 3:34 PM
    > Just like in memtables, range tombstones in SSTs are not stored inline with point keys. Instead, they are stored in a dedicated meta-block for range tombstones. This is what I just said
  • c

    criccomini

    11/28/2025, 3:35 PM
    Yes I haven’t looked at the trade offs in detail yet
  • p

    Pierre

    11/28/2025, 3:35 PM
    Though you could have a metadata part and your current sst part in a single object
  • p

    Pierre

    11/28/2025, 3:35 PM
    With a header that defines boundaries
  • c

    criccomini

    11/28/2025, 3:36 PM
    cc @User .. shower thought ^
  • p

    Pierre

    11/28/2025, 3:42 PM
    Is this stupid for some reason?
  • c

    criccomini

    11/28/2025, 5:01 PM
    Not sure I follow the “metadata part” vs “sst part”. What do you consider to be in each?
  • c

    criccomini

    11/28/2025, 5:03 PM
    https://www.capitalone.com/tech/cloud/lakehouse-format-convergence-delta-lake-iceberg/ funnily enough, first thing in my bsky feed 😝
  • c

    criccomini

    11/28/2025, 5:11 PM
    Anyway back to reality… fixing chaos test edge case lol
  • p

    Pierre

    11/28/2025, 5:14 PM
    That's what you said here > I had this kind of wacky thought, which was we could actually go the complete opposite direction: put all SST metadata (including deletion vector) into a separate file. This would allow us to completely separate our metadata from the data storage format. So you could store files as Parquet, for example. Or JSON, or whatever.
  • c

    criccomini

    11/28/2025, 8:36 PM
    Ah, I think your point about more API calls needs some thought. Also, it can make metadata mutable, which could be good or bad. And I need to think through situations where the storage (parquet eg) had its own stats, bloom, etc. Nothing stupid, but needs a lot of consider.
  • c

    criccomini

    11/28/2025, 8:53 PM
    Plus it makes writes non atomic
  • c

    criccomini

    11/28/2025, 8:53 PM
    Tho I think we could write data, then metadata file, then update manifest as needed. So should be pretty straightforward
  • p

    Pierre

    11/28/2025, 9:49 PM
    Could cheat by abusing multi part uploads as transactions
  • p

    Pierre

    11/28/2025, 9:49 PM
    But that's again not two files