微软奥尔良框架中的数据持久化

7

我刚接触Microsoft Orleans,阅读文档时发现以下内容:

... Grain持久性使用可扩展的插件模型,以便可以使用任何数据库的存储提供程序。此持久性模型旨在简单易用,不打算涵盖所有数据访问模式。 谷物还可以直接访问数据库,而不使用谷物持久性模型。 在此

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

所以我的问题是:

使用直接访问关系数据库的方式来进行Grain持久性,有哪些优点和缺点?

1个回答

8
奥尔良框架不要求您如何存储数据:请根据您应用程序的需要进行操作。针对您的问题,下面是直接与数据库进行交互而不使用开箱即用持久性模型的手动方式的一些优缺点:
优点: - 精确定义何时以及如何访问数据,包括序列化方式 - 能够查询数据
缺点: - 自动化程度较低——您需要确保grain读取所需的数据(grain持久性在激活期间执行读取) - 您需要负责管理连接池、存储调用等 - 没有自动并发控制——开发者需要避免并发访问导致数据被错误覆盖。grain持久性提供程序通常使用ETag检查来确保一致性,因此手动完成此过程时可以实施类似的方案。
这些优点可能比较吸引人,具体取决于您的需求。您还可以采用混合方法编写自定义存储提供程序,从而对数据存储方式进行控制,并且因为您可以控制它,所以还可以直接访问数据库以执行查询。

如果我的应用程序只使用无状态工作器Grains,那么这些缺点是否仍然存在?如果我计划在我的应用程序中仅使用无状态工作器Grains,那么我是否需要存储提供程序? - RTK
2
您不需要存储提供程序 - 它们完全是可选的。 - Reuben Bond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接