【问题标题】:How does SharePoint versioning engine store only changes to files and not the whole file?SharePoint 版本控制引擎如何仅存储对文件的更改而不是整个文件?
【发布时间】:2020-02-13 20:16:50
【问题描述】:

SharePoint 做得非常好的许多事情之一是,当您为上传到文档库的文件启用版本控制时,每次保存对文件的更改时,它只会将与文件先前版本的差异保存到内容数据库,但不是整个文件。

我试图在 Windows 中的文件系统文件夹或 SQL 数据库 blob 字段上使用标准 C# 代码复制相同的行为。是否有人对 SharePoint 如何完成此任务以及如何在 SharePoint 之外完成此任务有任何想法或指示?

【问题讨论】:

    标签: c# sharepoint file-storage


    【解决方案1】:

    SharePoint 使用一种称为数据“粉碎”的技术来包含对给定文件的每次更改。不幸的是,我认为您找不到足够的技术细节来真正重现他们正在做的事情,但您也许可以使用自己的设计设计出一个合理的近似值。

    粉碎时,与 Document.docx 等文件关联的数据分布在与该文件关联的一组 BLOB 中。每个独立的 BLOBS 都被分配了一个唯一的 ID(偏移量),以便在用户请求时以正确的顺序进行重建。

    每个“碎片”文档都存储在名为 DocStreams 的 SQL 数据库表中。每个 BLOB 都包含一个数字 ID,表示合并时的源 BLOB。当客户端更新文件时,只有与更改相对应的碎 BLOB 会随着更新发生在数据库服务器上而不是 Web 服务器上进行更新。

    有关粉碎的更多详细信息,请参阅

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 2019-12-08
      相关资源
      最近更新 更多