Microsoft Orleans 中的数据持久性

RTK*_*RTK 8 .net data-persistence orleans

我是 Microsoft Orleans 的新手,在阅读文档时我发现了这一点:

... Grain 持久性使用可扩展的插件模型,以便可以使用任何数据库的存储提供程序。此持久性模型的设计是为了简单性,并不旨在涵盖所有数据访问模式。Grains还可以直接访问数据库,而不需要使用Grain持久化模型。 这里

但在文档的其余部分中,仅描述了使用存储提供程序进行粒度持久性的方法。但对于这些提供程序,我仍然想知道如何像关系数据库中那样执行复杂的请求(使用 JOIN、GROUP BY、ORDER BY 等)。

所以我担心的是:

使用直接访问关系数据库进行 Grain 持久化的优点和缺点是什么?

Reu*_*ond 9

Orleans 对于如何存储数据没有固执己见:做适合您的应用程序的事情。针对您的问题,以下是采用手动路线并直接与数据库连接而不是使用开箱即用的持久性模型的一些优点和缺点。

优点:

  • 精确控制数据的访问时间和方式,包括数据的序列化方式
  • 能够对您的数据执行查询

缺点:

  • 自动化程度较低 - 您需要负责确保您的grain读取它需要的数据(grain持久性在激活期间执行读取)
  • 您负责管理连接池、存储调用等
  • 无自动并发控制 - 由开发人员负责防止并发访问导致数据被错误覆盖。Grain 持久性提供程序通常使用 ETag 检查来确保一致性,因此您可以在手动执行此操作时实现类似的方案。

根据您的需求,这些优势可能会很引人注目。

您还可以采用混合方法并编写自定义存储提供程序,这使您可以对数据的存储方式进行一些控制,并且因为您可以控制它,所以您还可以直接访问数据库以执行查询。

  • 您不需要存储提供程序 - 它们完全是可选的 (2认同)