Botframework 在bot框架中使用cosmosdb作为状态存储而不是使用内存存储有什么好处

Botframework 在bot框架中使用cosmosdb作为状态存储而不是使用内存存储有什么好处,botframework,azure-cosmosdb,azure-bot-service,Botframework,Azure Cosmosdb,Azure Bot Service,在bot框架中,除了内存存储之外,我对使用comosdb或任何其他存储来存储用户状态有点困惑。 正如我在文档中读到的,内存存储在刷新后将被删除,并保留在cosmos db中 但是如何从同一用户先前使用的comosdb中获取相同的状态 如果刷新bot后我无法获取用户的状态,那么comosdb storage.as的用途是什么?因为我想在对话中使用保存的状态,这样我就不会问用户之前提出的问题 请帮我澄清一下。希望我的问题可以理解 谢谢。CosmosDb与bot是分开的,因此如果bot重新启动,它只会

在bot框架中,除了内存存储之外,我对使用comosdb或任何其他存储来存储用户状态有点困惑。 正如我在文档中读到的,内存存储在刷新后将被删除,并保留在cosmos db中

但是如何从同一用户先前使用的comosdb中获取相同的状态

如果刷新bot后我无法获取用户的状态,那么comosdb storage.as的用途是什么?因为我想在对话中使用保存的状态,这样我就不会问用户之前提出的问题

请帮我澄清一下。希望我的问题可以理解


谢谢。

CosmosDb与bot是分开的,因此如果bot重新启动,它只会从CosmosDb读取状态信息,并返回到它停止的位置。只要用户具有与以前相同的UserId,bot就会从Cosmos读取他们的对话框、对话和用户状态

也许换个角度思考会有帮助。当机器人使用内存存储时,用户数据存储在RAM中,就像您在Word文档中工作一样。如果您的计算机在写入Word文档的过程中崩溃,则由于数据未被持久化,您将失去一切。但是,如果单击“保存”,则会将信息保存到硬盘。重新启动计算机时,可以从硬盘加载保存的Word文档。类似地,如果机器人重新启动,它可以从Cosmos加载保存的信息

请阅读更多信息


请注意,任何持久性存储都可以工作。另一个“已批准”的选项是Azure Blob存储,这是一个更便宜的选项,但在用户数量较多时性能较差。你可以使用任何外部数据库,只要你有一个存储适配器。

可能需要补充的是,任何外部存储都可以工作。我之所以这么说,是因为Blob存储通常比CosmosDB在状态存储方面更充足、更经济。@billoverton说得不错。@billoverton奇怪,大多数人似乎把注意力集中在内存存储和CosmosDB上,而忽略了任何其他类型的存储,如Blob存储,或结构化数据存储。@Martijn就持久存储而言,Cosmos和Blob是唯一受Bot框架正式支持的。Cosmos更适合大量使用,我们默认推荐它,因为您不会遇到性能问题。有,但它们不像宇宙和水滴那样受支持。