【问题标题】:Data Persistence in Microsoft OrleansMicrosoft Orleans 中的数据持久性
【发布时间】:2020-07-08 10:45:01
【问题描述】:

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

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

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

所以我担心的是:

使用直接访问关系数据库来实现 Grain 持久性有哪些优点和缺点?

【问题讨论】:

    标签: .net orleans data-persistence


    【解决方案1】:

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

    优点:

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

    缺点:

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

    这些优势可能很有吸引力,具体取决于您的需求。

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

    【讨论】:

    • 请问如果我的应用程序只使用无状态工作者谷物,这些缺点是否仍然存在?如果我打算在我的应用程序中只使用无状态工作者颗粒,我是否还需要存储提供程序?
    • 您不需要存储提供程序 - 它们完全是可选的
    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多