文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

image

我在 之前写道 RavenDB 4.0 全新的附件功能,现在已经可以进行体验了。

正如你在上图中所看到的,一个文档可以包含附件。这样你就可以在 RavenDB 中存储二进制数据,而且这个不像是其他系统那样的松散连接。RavenDB 的附件强连接到其关联的文档中,允许你轻松的存储文档的相关信息。

第 1 段(可获 1.29 积分)

这意味着你可以利用 RavenDB 的 ACID 事务特性同事修改附件以及文档。示例代码如下:

public void AddProfilePicture(string userId, Stream profilePictureStream)
{
  var thumbnail = GenerateThumbnail(profilePictureStream);
  profilePictureStream.Position = 0;

  using(var session = store.OpenSession())
  {
        var user = session.Load<User>("users/123");
        session.Advanced.StoreAttachment(user, "profile-pic.jpg", profilePictureStream);
        session.Advanced.StoreAttachment(user, "profile-thumb.jpg", thumbnail);
        user.RegistrationStatus |= UserStatus.HasProfilePicture;
        session.SaveChanges();
  }
第 2 段(可获 0.4 积分)

在这里我们获取到用户的资料图片,并生成一个缩略图,然后将图片和缩略图与文档关联。同时我们还更新了用户的资料,标识出该用户包含一个资料图片,并在一个单事务中提交资料更改。这意味着你不需要在不同的源中进行数据的同步。

RavenDB 的附件会通过复制来保证数据的一致性,因此你不会看到不同节点间的部分结果。而且附件本身是使用了去重技术以降低对存储的压力。

我真的非常喜欢这个功能。

第 3 段(可获 1.29 积分)

文章评论