【问题标题】:Mongo DB GridFS + Document transaction (typical use-case)Mongo DB GridFS + 文档事务(典型用例)
【发布时间】:2012-03-19 16:31:33
【问题描述】:

我已经从 MSSQL 世界变成了 mongo,并且我有一个关于典型用例的未回答的问题。 (我在官方网站上没有找到有关它的信息)。 我觉得你们都做了这样的事情:

例如: 我想保护一些文件+元数据(文件名+文件长度)。

  1. "创建文档对象": var document = new MyDocument("file1.txt", 65536);
  2. “保存流”:var streamId = GridFS.Upload(myStream);
  3. “使用元数据链接流”:document.StreamId = streamId;
  4. “保存文档”:myDocumentCollection.Insert(document);

问题

1) 因为没有事务,如果我的操作在步骤 2 之后失败,我应该如何处理这种情况 - 只有流本身。正确的处理方法是什么?数据库分片成 10 台服务器并祈祷它永远不会失败?创建后台服务来清理不一致的记录?

2)如何正确处理GridFS:删除document+stream,以容错方式重写stream?

3) 当我的操作需要更改几个对象时,如何处理?

【问题讨论】:

    标签: .net mongodb database


    【解决方案1】:

    1 & 2) 当上传失败时你应该得到一个 MongoGridFSException。因此,只需在您认为合适的情况下在 catch 子句中处理它。如果元数据不是太大,也可以使用替代upload api,通过createOptions参数传递元数据。

    3) 对于更一般的情况,如果要确保最后一次操作成功,可以使用getLastError command 确保最后一次操作没有错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 2019-10-06
      相关资源
      最近更新 更多