Skip to content

V2 serialization format for wide columns with blob references#14314

Closed
xingbowang wants to merge 9 commits intofacebook:mainfrom
xingbowang:2026_02_06_blob_wide_column
Closed

V2 serialization format for wide columns with blob references#14314
xingbowang wants to merge 9 commits intofacebook:mainfrom
xingbowang:2026_02_06_blob_wide_column

Conversation

@xingbowang
Copy link
Copy Markdown
Contributor

@xingbowang xingbowang commented Feb 6, 2026

Introduce a new V2 serialization format for wide column entities that supports storing individual column values in blob files. The V2 format adds a column type section that marks each column as either inline or blob-index, enabling per-column blob storage for large values.

@meta-cla meta-cla bot added the CLA Signed label Feb 6, 2026
@xingbowang xingbowang force-pushed the 2026_02_06_blob_wide_column branch from aebf39b to 09fdfab Compare February 7, 2026 14:20
@xingbowang xingbowang force-pushed the 2026_02_06_blob_wide_column branch 5 times, most recently from 003bfee to 578db34 Compare February 8, 2026 23:31
@xingbowang xingbowang marked this pull request as ready for review February 9, 2026 17:26
Introduce a new V2 serialization format for wide column entities that
supports storing individual column values in blob files. The V2 format
adds a column type section that marks each column as either inline or
blob-index, enabling per-column blob storage for large values.

Key additions:
- SerializeWithBlobIndices(): serialize entities with blob column references
- DeserializeColumns(): deserialize V2 entities extracting blob column metadata
- HasBlobColumns(): lightweight check for V2 blob references
- GetVersion(): return the format version of a serialized entity
- ResolveEntityBlobColumns(): resolve all blob references in an entity
- Updated Deserialize() and GetValueOfDefaultColumn() for V2 compatibility
@xingbowang xingbowang force-pushed the 2026_02_06_blob_wide_column branch from 578db34 to 154c72a Compare February 9, 2026 17:38
@meta-codesync
Copy link
Copy Markdown

meta-codesync bot commented Feb 10, 2026

@xingbowang has imported this pull request. If you are a Meta employee, you can view this in D92832066.

Copy link
Copy Markdown
Contributor

@pdillinger pdillinger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My primary concern about this approach is that the natural evolution of the data model is to have columns function as "subkeys" and pick up more and more features per-column that you get with keys and no wide columns, like merge, single column overwrite, single column delete, TimedPut, and likely more (kTypeValuePreferredSeqno). And we eventually end up re-implementing the cross product of all those features rather than making the data model leverage the features (almost) without re-implementation, by having a wide column ValueType entry itself contain ValueType entries for each column.

@xingbowang
Copy link
Copy Markdown
Contributor Author

Updated the code to use ValueType in wide column type.

@meta-codesync
Copy link
Copy Markdown

meta-codesync bot commented Feb 17, 2026

@xingbowang has imported this pull request. If you are a Meta employee, you can view this in D92832066.

Copy link
Copy Markdown
Contributor

@pdillinger pdillinger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for considering my feedback. LGTM overall

@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 21, 2026

✅ clang-tidy: No findings on changed lines

Completed in 28.0s.

@meta-codesync
Copy link
Copy Markdown

meta-codesync bot commented Feb 21, 2026

@xingbowang has imported this pull request. If you are a Meta employee, you can view this in D92832066.

@meta-codesync
Copy link
Copy Markdown

meta-codesync bot commented Feb 21, 2026

@xingbowang has imported this pull request. If you are a Meta employee, you can view this in D92832066.

@meta-codesync
Copy link
Copy Markdown

meta-codesync bot commented Feb 21, 2026

@xingbowang has imported this pull request. If you are a Meta employee, you can view this in D92832066.

@meta-codesync meta-codesync bot closed this in 4e11dd7 Feb 21, 2026
@meta-codesync
Copy link
Copy Markdown

meta-codesync bot commented Feb 21, 2026

@xingbowang merged this pull request in 4e11dd7.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants