【问题标题】:What's the simplest way to update mnesia schema?更新 mnesia 模式的最简单方法是什么?
【发布时间】:2013-04-06 13:37:32
【问题描述】:

例如,我在 mnesia 中保存了{id, name},想更新为{id, name, age},是否每次更改架构时都必须调用transform_table

【问题讨论】:

  • 您还希望能够做什么?您必须通过一些函数调用来更改表格,对吗?但是,transform_table/{3-4} 确实为您提供了一些选项来更改调整架构的方法。
  • 是的。你必须改造那张桌子
  • 当 mnesia 表变得非常大时,transform_table 是否需要很长时间?如果是这样,会影响热代码升级的好处。如果通过其他方案,跟踪记录版本,只升级已加载的记录,可能会导致升级代码繁琐且容易出错。
  • 欢迎来到大数据世界,在其中移动和升级数据需要花费太多时间。您最终需要对数据进行版本化并支持多个版本。在实践中没有办法解决这个问题,尽管这很烦人。仅当数据规模较小时,数据转换才可行。
  • 当我在生产中使用 mnesia 时,总是在每个表中添加一个 options::proplists() 列:)

标签: erlang mnesia


【解决方案1】:

最简单的方法是删除表并重新创建它。如果您需要将数据保留在表中,mnesia:transform_table 是要走的路。

【讨论】:

  • 您不认为删除和重新创建表可能会破坏生产系统。
  • 在大多数情况下,是的,除非您在重新创建表时使其不访问数据库。 transform_table 避免了此类问题。
  • 是的,transform_table 是解决此类问题的不错方法。我只是给出了更广泛的答案。
猜你喜欢
  • 2020-11-12
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 2019-06-25
  • 2013-07-20
  • 1970-01-01
相关资源
最近更新 更多