为什么Orleans使用BLOB来存储/持久化谷物,而不是使用关系模型?以及可能导致的潜在问题



我的理解是,在数据库中存储粒度时,Orleans将首先以二进制、XML或json格式序列化整个对象,然后将其完整存储。

因此,如果我有一个包含roll_nonameage等字段的Student粒度,我就不能像关系方式那样将其存储为Student作为表,roll_noname等作为列。而且我也不能使用外键使Professor表与Student表具有One-To-Many关系。我的理解正确吗?

  1. 如果是,那么我想知道背后的原因?这不会给查询数据带来问题吗?此外,存储数据的关系方式是一种行之有效的方式,为什么要改变它呢?

  2. 假设我有一个报纸网站。每一篇新闻都是我的粮食。由于粒度存储为BLOB,因此我无法使用数据库提供的自由文本搜索或其他功能。这是真的吗?

  3. 假设我使用奥尔良构建我的应用程序,并且它有相当多的grain类。假设过了一段时间,我决定不再使用奥尔良。我想将我的应用程序迁移到Java/Spring或Python/Django。如果我不使用Orleans,我可以使用我想要的任何后端框架,因为我的数据库是关系形式的,并且通常是可移植的。但是对于奥尔良,我的数据库是否会与框架过于紧密地联系在一起,以至于在未来无法切换框架?

我完全不了解整个演员框架,所以如果这些问题听起来很愚蠢,请原谅我。

  1. Orleans的使用方式与传统应用程序不同。如果您希望将晶粒的状态存储在关系数据库中,并为每个晶粒创建一个新表,这意味着无论何时添加新属性或添加新晶粒,都必须创建迁移。这将使Grains失去灵活性
  2. 这是真的,但Orleans更适合于存储新闻并使用Id识别新闻的报纸应用程序,这样可以很容易地访问新闻
  3. 同样,奥尔良不应该以这种方式使用,不幸的是,这意味着你不能重用奥尔良创建的同一个数据库

Actor框架适用于某些特定的情况,在选择Orleans之前,您应该首先考虑更传统的创建应用程序的方式。Orleans适用于这样的情况:实体/参与者自行行动,执行不同的操作,并存储/管理自己的状态。

相关内容

  • 没有找到相关文章

最新更新